{"version":3,"file":"index.mjs","names":["validate","getMetadata","getMetadata","NestjsSwaggerUtils.isLazyTypeFunc","NestjsSwaggerUtils.getMetadata","ClassValidatorUtils.getMetadata","ClassTransformerUtils.getTransformMetadata","raw","uuidValidate","uuidVersion","Boolean","Enum","MikroOrmProperty","Embedded","uuidv7","MikroOrmUtils.getMetadata","ManyToOne","OneToOne","OneToMany","ManyToMany","MikroOrmUtils.getMetadata","Logger","SwaggerPickType","SwaggerOmitType","SwaggerPartialType","SwaggerIntersectionType","Logger","MODULE_OPTIONS_TOKEN","Logger","MODULE_OPTIONS_TOKEN","ConfigurableModuleClass","logger","Logger","ConfigurableModuleClass","MODULE_OPTIONS_TOKEN","Logger","Property","Logger","Property","ErrorCategory","ErrorCode","ErrorCategory","Base32","ErrorCategory","BukaHttpException","HttpException","ErrorCode","ConfigurableModuleClass","Base32","MODULE_OPTIONS_TOKEN","Property","Property","Logger","MODULE_OPTIONS_TOKEN","Logger","Logger","MODULE_OPTIONS_TOKEN","ConfigurableModuleClass","PinoLoggerModule","LoggerErrorInterceptor","Logger","ErrorCode","Logger"],"sources":["../src/swagger-patcher/openapi-helpers.ts","../src/swagger-patcher/deep-objectify-queries.ts","../src/modules/exception/constants/exception-detail-schema.ts","../src/modules/exception/constants/error-response-schema.ts","../src/swagger-patcher/unify-exception-responses.ts","../src/swagger-patcher/swagger-patcher.ts","../src/modules/core/decorators/class-validator/has-any-key.ts","../src/modules/core/decorators/class-validator/is-crockford-base32.ts","../src/modules/core/decorators/class-validator/is-enum-column.ts","../src/modules/core/decorators/class-validator/is-scalar.ts","../src/modules/core/decorators/class-validator/is-scalar-dictionary.ts","../src/modules/core/models/urn.ts","../src/modules/core/decorators/class-validator/is-urn.ts","../src/modules/core/decorators/class-validator/match-json-schema.ts","../src/modules/core/decorators/class-validator/validate-nested-dictionary.ts","../src/modules/core/decorators/is-browser-request.ts","../src/modules/core/decorators/model/model.register.ts","../src/modules/core/decorators/model/model.decorator.ts","../src/modules/core/decorators/model/property.decorator.ts","../src/modules/core/decorators/model/composite.decorator.ts","../src/modules/core/decorators/model/list.decorator.ts","../src/modules/core/decorators/model/dictionary.decorator.ts","../src/modules/core/decorators/model/enum.decorator.ts","../src/modules/core/decorators/model/model.serializer.ts","../src/modules/core/constants/offset-page-schema.ts","../src/modules/core/constants/next-cursor-page-schema.ts","../src/modules/core/constants/previous-cursor-page-schema.ts","../src/modules/core/pipes/page-query-validation.pipe.ts","../src/utils/class-validator-utils.ts","../src/utils/class-transformer-utils.ts","../src/modules/core/converters/filter-query-type/decorators/filter-query-operators.decorator.ts","../src/modules/core/converters/filter-query-type/utils/get-collection-operators.ts","../src/modules/core/converters/filter-query-type/utils/get-property-operators.ts","../src/utils/internals/nestjs-common.ts","../src/utils/internals/nestjs-swagger.ts","../src/utils/nestjs-swagger-utils.ts","../src/modules/core/converters/filter-query-type/utils/swagger-metadata-to-json-schema.ts","../src/modules/core/converters/filter-query-type/get-filter-query-schema.ts","../src/modules/core/converters/filter-query-type/filter-query-type.ts","../src/modules/core/pipes/filter-query-validation.pipe.ts","../src/modules/core/pipes/parse-uuidv7.pipe.ts","../src/modules/core/decorators/page-query.ts","../src/modules/core/decorators/filter-query.ts","../src/modules/mikro-orm/decorators/columns/varchar.column.ts","../src/modules/mikro-orm/decorators/columns/char.column.ts","../src/modules/mikro-orm/decorators/columns/text.column.ts","../src/modules/mikro-orm/decorators/columns/money.column.ts","../src/modules/mikro-orm/decorators/columns/int.column.ts","../src/modules/mikro-orm/decorators/columns/smallint.column.ts","../src/modules/mikro-orm/decorators/columns/tinyint.column.ts","../src/modules/mikro-orm/decorators/columns/bigint.column.ts","../src/modules/mikro-orm/decorators/columns/double.column.ts","../src/modules/mikro-orm/decorators/columns/numeric.column.ts","../src/modules/mikro-orm/decorators/columns/boolean.column.ts","../src/modules/mikro-orm/decorators/columns/uuid.column.ts","../src/modules/mikro-orm/decorators/columns/timestamptz.column.ts","../src/modules/mikro-orm/decorators/columns/enum.column.ts","../src/modules/mikro-orm/decorators/columns/jsonb.column.ts","../src/modules/mikro-orm/decorators/columns/transient.column.ts","../src/modules/mikro-orm/decorators/columns/embedded.column.ts","../src/modules/mikro-orm/decorators/columns/index.ts","../src/modules/mikro-orm/models/timestamped-entity.ts","../src/modules/mikro-orm/models/linear-entity.ts","../src/modules/mikro-orm/models/discrete-entity.ts","../src/modules/mikro-orm/converters/entity-dto-type/entity-dto-type.ts","../src/modules/mikro-orm/utils/mikro-orm-utils.ts","../src/modules/mikro-orm/converters/entity-primary-key-type/entity-primary-key-type.ts","../src/modules/mikro-orm/decorators/cardinality/_resolve-entity-class.ts","../src/modules/mikro-orm/decorators/cardinality/many-to-one.cardinality.ts","../src/modules/mikro-orm/decorators/cardinality/one-to-one.cardinality.ts","../src/modules/mikro-orm/decorators/cardinality/one-to-many.cardinality.ts","../src/modules/mikro-orm/decorators/cardinality/many-to-many.cardinality.ts","../src/modules/mikro-orm/decorators/cardinality/index.ts","../src/modules/mikro-orm/decorators/entity-ref/entity-ref.decorator.ts","../src/modules/mikro-orm/database.config.ts","../src/modules/core/pipes/validation.pipe.ts","../src/modules/core/buka.module-definition.ts","../src/modules/core/buka.module.ts","../src/modules/core/models/offset-pagination.ts","../src/modules/core/models/cursor-pagination.ts","../src/modules/core/models/slice.ts","../src/modules/core/converters/pick-type/pick-type.ts","../src/modules/core/converters/omit-type/omit-type.ts","../src/modules/core/converters/partial-type/partial-type.ts","../src/modules/core/converters/intersection-type/intersection-type.ts","../src/modules/core/converters/order-query-type/get-order-query-schema.ts","../src/modules/core/converters/order-query-type/order-query-type.ts","../src/modules/core/converters/list-response-body-type/list-response-body-type.ts","../src/modules/core/converters/response-body-type/response-body-type.ts","../src/modules/open-bao/open-bao.module-definition.ts","../src/modules/open-bao/open-bao-token.manager.ts","../src/apis/open-bao-http/open-bao-http.client.ts","../src/apis/open-bao-http/open-bao-http.module.ts","../src/modules/open-bao/set-open-bao-token.middleware.ts","../src/modules/open-bao/request/format-error.ts","../src/modules/open-bao/open-bao.module.ts","../src/modules/open-bao/open-bao.config.ts","../src/utils/stable-stringify.ts","../src/modules/blind-index/blind-index-v1.hasher.ts","../src/modules/blind-index/blind-index.service.ts","../src/modules/blind-index/blind-index.module.ts","../src/modules/blind-index/entities/blind-index.embeddable.ts","../src/modules/salted-hash/salted-hash-v1.hasher.ts","../src/modules/salted-hash/salted-hash.service.ts","../src/modules/salted-hash/salted-hash.module.ts","../src/modules/salted-hash/entities/salted-hash.embeddable.ts","../src/modules/exception/error-code.registry.ts","../src/modules/exception/dto/error-code-parts.dto.ts","../src/modules/exception/dto/error-code-metadata.dto.ts","../src/modules/exception/dto/error-code-definition.dto.ts","../src/modules/exception/dto/list-error-codes-response.dto.ts","../src/modules/exception/error-code.controller.ts","../src/modules/exception/http-exception.ts","../src/modules/exception/pending-exception.factory.ts","../src/modules/exception/decorators/exception-module.decorator.ts","../src/modules/exception/filters/exception.filter.ts","../src/modules/exception/exception.module-definition.ts","../src/modules/exception/exception.module.ts","../src/modules/exception/buka.exceptions.ts","../src/modules/envelope-encryption/entities/key-envelope.embeddable.ts","../src/modules/envelope-encryption/entities/encrypted-payload.embeddable.ts","../src/modules/envelope-encryption/envelope-encryption.module-definition.ts","../src/modules/envelope-encryption/kms.provider.ts","../src/modules/envelope-encryption/envelope-encryption-v1.cipher.ts","../src/modules/envelope-encryption/envelope-encryption.service.ts","../src/modules/envelope-encryption/envelope-encryption.module.ts","../src/modules/logger/logger.module.ts","../src/modules/logger/decorators/inject-logger.decorator.ts","../src/modules/logger/logger.config.ts","../src/modules/object-storage/object-storage.config.ts","../src/modules/object-storage/object-storage.module-definition.ts","../src/modules/object-storage/object-storage.service.ts","../src/modules/object-storage/object-storage.module.ts","../src/modules/keq/buka-request.exception.ts","../src/modules/keq/throw-on-response-error.middleware.ts"],"sourcesContent":["import { OpenAPIObject } from '@nestjs/swagger'\nimport { ValueOf } from 'type-fest'\n\ntype ReferenceObject = { $ref: string }\ntype ParameterObject = Exclude<ValueOf<Required<Required<OpenAPIObject>['components']>['parameters']>, ReferenceObject>\nexport type SchemaObject = Exclude<ValueOf<Required<Required<OpenAPIObject>['components']>['schemas']>, ReferenceObject>\n\nexport function isReferenceObject(obj: any): obj is ReferenceObject {\n  return !!obj && typeof obj === 'object' && typeof obj.$ref === 'string'\n}\n\nexport function deepDereference<T>(openapi: OpenAPIObject, reference: ReferenceObject): T | undefined {\n  let current = reference\n\n  const stack: string[] = []\n\n  while (isReferenceObject(current)) {\n    const refPath = current.$ref\n\n    if (stack.includes(refPath)) return undefined\n    stack.push(refPath)\n\n    const parts = refPath.replace(/^#\\//, '').split('/')\n    let next: any = openapi\n    for (const part of parts) {\n      next = next[part]\n    }\n    if (!next) return undefined\n\n    current = next\n  }\n\n  return current as T\n}\n\nexport function forEachParameter(openapi: OpenAPIObject, callback: (parameter: ParameterObject) => void): void {\n  for (const pathItem of Object.values(openapi.paths)) {\n    for (const operation of Object.values(pathItem)) {\n      if (operation && operation.parameters) {\n        for (const parameter of operation.parameters) {\n          if (!('$ref' in parameter)) {\n            callback(parameter)\n          }\n        }\n      }\n    }\n  }\n\n  for (const parameter of Object.values(openapi.components?.parameters || {})) {\n    if (!('$ref' in parameter)) {\n      callback(parameter)\n    }\n  }\n}\n","import { OpenAPIObject } from '@nestjs/swagger'\nimport { isReferenceObject, deepDereference, forEachParameter, SchemaObject } from './openapi-helpers.js'\n\n/**\n * 将 OpenAPI 文档中 query 参数中的对象和数组类型自动设置为 `style: 'deepObject'`。\n *\n * NestJS Swagger 生成的文档默认不会为复杂 query 参数设置 `style`，\n * 导致部分客户端生成器无法正确序列化嵌套查询参数。\n *\n * @param openapi - OpenAPI 文档对象（会被原地修改）\n *\n * @example\n * ```typescript\n * const document = SwaggerModule.createDocument(app, config)\n * SwaggerPatcher.deepObjectifyQueries(document)\n * SwaggerModule.setup('api', app, document)\n * ```\n */\nexport function deepObjectifyQueries(openapi: OpenAPIObject): void {\n  forEachParameter(openapi, (parameter) => {\n    if (parameter.in === 'query' && parameter.schema && parameter.style === undefined && (parameter.explode === undefined || parameter.explode === true)) {\n      const schema = isReferenceObject(parameter.schema)\n        ? deepDereference<SchemaObject>(openapi, parameter.schema)\n        : parameter.schema\n\n      if (schema && (schema.type === 'object' || schema.type === 'array')) {\n        parameter.style = 'deepObject'\n      }\n    }\n  })\n}\n","export const ExceptionDetailSchema = {\n  type: 'object',\n  properties: {\n    type: { type: 'string' },\n  },\n  required: ['type'],\n  additionalProperties: true,\n}\n","import { ExceptionDetailSchema } from './exception-detail-schema.js'\n\nexport const ErrorResponseSchema = {\n  type: 'object',\n  properties: {\n    error: {\n      type: 'object',\n      properties: {\n        code: { type: 'string' },\n        message: { type: 'string' },\n        details: {\n          type: 'array',\n          items: ExceptionDetailSchema,\n        },\n      },\n      required: ['code', 'message', 'details'],\n      additionalProperties: false,\n    },\n  },\n  required: ['error'],\n  additionalProperties: false,\n}\n","import { OpenAPIObject } from '@nestjs/swagger'\nimport { ErrorResponseSchema } from '../modules/exception/constants/error-response-schema.js'\n\nexport interface UnifyExceptionResponsesOptions {\n  /** 覆写已有的哪些响应，支持 `'4xx'`、`'5xx'`、`'default'` 或具体数字状态码，默认 `[]` */\n  overwrite?: ('4xx' | '5xx' | 'default' | number)[]\n  /** 插入新的状态码响应（无论是否已存在），默认 `[]` */\n  insert?: (number | 'default')[]\n}\n\n/**\n * 将统一异常响应结构注入 OpenAPI 文档。\n *\n * 在 `components.schemas` 注册 `ExceptionResponse` schema，\n * 在 `components.responses` 注册可复用的 `ExceptionResponse` 响应对象，\n * 并根据选项覆写或插入 operation 的异常响应。\n *\n * @param openapi - OpenAPI 文档对象（会被原地修改）\n * @param options - 控制覆写和插入行为\n * @param options.overwrite - 覆写已有的哪些响应，支持 `'4xx'`、`'5xx'`、`'default'` 或具体数字状态码，默认 `[]`\n * @param options.insert - 插入新的状态码响应（无论是否已存在），默认 `[]`\n *\n * @example\n * ```typescript\n * const document = SwaggerModule.createDocument(app, config)\n *\n * // 仅注册组件，不修改 operations\n * SwaggerPatcher.unifyExceptionResponses(document)\n *\n * // 为所有 operation 插入 401, 403, 500\n * SwaggerPatcher.unifyExceptionResponses(document, {\n *   insert: [401, 403, 500],\n * })\n *\n * // 覆写已有的 4xx/5xx 响应\n * SwaggerPatcher.unifyExceptionResponses(document, {\n *   overwrite: ['4xx', '5xx'],\n * })\n *\n * // 覆写 5xx + 插入 401, 403\n * SwaggerPatcher.unifyExceptionResponses(document, {\n *   overwrite: ['5xx'],\n *   insert: [401, 403],\n * })\n * ```\n */\nexport function unifyExceptionResponses(openapi: OpenAPIObject, options?: UnifyExceptionResponsesOptions): void {\n  if (!openapi.components) openapi.components = {}\n  if (!openapi.components.schemas) openapi.components.schemas = {}\n  openapi.components.schemas['ExceptionResponse'] = ErrorResponseSchema\n\n  if (!openapi.components.responses) openapi.components.responses = {}\n  openapi.components.responses['ExceptionResponse'] = {\n    description: 'Exception Response',\n    content: {\n      'application/json': {\n        schema: { $ref: '#/components/schemas/ExceptionResponse' },\n      },\n    },\n  }\n\n  const { overwrite = [], insert = [] } = options ?? {}\n  const exceptionResponseRef = { $ref: '#/components/responses/ExceptionResponse' }\n\n  for (const pathItem of Object.values(openapi.paths)) {\n    for (const method of ['get', 'put', 'post', 'delete', 'options', 'head', 'patch', 'trace'] as const) {\n      const operation = pathItem[method]\n      if (!operation?.responses) continue\n\n      for (const code of Object.keys(operation.responses)) {\n        const shouldOverwrite = overwrite.some((pattern) => {\n          if (pattern === 'default') return code === 'default'\n          if (pattern === '4xx') return code.startsWith('4')\n          if (pattern === '5xx') return code.startsWith('5')\n          return code === String(pattern)\n        })\n        if (shouldOverwrite) {\n          operation.responses[code] = exceptionResponseRef\n        }\n      }\n\n      for (const code of insert) {\n        operation.responses[String(code)] = exceptionResponseRef\n      }\n    }\n  }\n}\n","import { deepObjectifyQueries } from './deep-objectify-queries.js'\nimport { unifyExceptionResponses } from './unify-exception-responses.js'\n\nexport type { SchemaObject } from './openapi-helpers.js'\n\n/**\n * Swagger/OpenAPI 文档修补工具，用于修正生成的 OpenAPI 文档中的已知问题。\n */\nexport class SwaggerPatcher {\n  static deepObjectifyQueries = deepObjectifyQueries\n  static unifyExceptionResponses = unifyExceptionResponses\n}\n","import { registerDecorator, ValidationOptions } from 'class-validator'\n\n\nexport const HAS_ANY_KEY = 'hasAnyKey'\n\n/**\n * 验证对象至少包含指定 key 中的一个。\n *\n * @param keys - 允许的 key 列表，对象中至少需存在其一\n * @param validationOptions - class-validator 的验证选项\n *\n * @example\n * ```typescript\n * class FilterDTO {\n *   @HasAnyKey(['$eq', '$ne', '$in'])\n *   name: { $eq?: string; $ne?: string; $in?: string[] }\n * }\n * ```\n */\nexport function HasAnyKey(keys: readonly string[], validationOptions?: ValidationOptions) {\n  return function (object: object, propertyName: string) {\n    registerDecorator({\n      name: HAS_ANY_KEY,\n      target: object.constructor,\n      propertyName: propertyName,\n      constraints: [keys],\n      options: validationOptions,\n      validator: {\n        validate(value: any) {\n          if (typeof value !== 'object' || value === null) return false\n          for (const key of keys) {\n            if (key in value) return true\n          }\n          return false\n        },\n        defaultMessage() {\n          return `$property must have at least one of the keys: ${keys.join(', ')}`\n        },\n      },\n    })\n  }\n}\n","import { registerDecorator, ValidationOptions } from 'class-validator'\n\n\nexport const IS_CROCKFORD_BASE32 = 'isCrockfordBase32'\n\n/**\n * 验证字符串是否为合法的 Crockford Base32 编码。\n *\n * Crockford Base32 使用字符集 `0-9A-HJKMNP-TV-Z`，常用于 ULID 等场景。\n *\n * @param validationOptions - class-validator 的验证选项\n *\n * @example\n * ```typescript\n * class EntityDTO {\n *   @IsCrockfordBase32()\n *   id: string\n * }\n * ```\n */\nexport function IsCrockfordBase32(validationOptions?: ValidationOptions) {\n  return function (object: object, propertyName: string) {\n    registerDecorator({\n      name: IS_CROCKFORD_BASE32,\n      target: object.constructor,\n      propertyName: propertyName,\n      options: validationOptions,\n      validator: {\n        validate(value: any) {\n          return typeof value === 'string' && /^[0-9A-HJKMNP-TV-Z]+$/i.test(value)\n        },\n        defaultMessage() {\n          return '$property must be a Crockford Base32 encoded string'\n        },\n      },\n    })\n  }\n}\n","import { isEnum, registerDecorator, type ValidationOptions } from 'class-validator'\n\nexport const IS_ENUM_COLUMN = 'isEnumColumn'\n\n/**\n * 枚举列验证器，验证单个值是否为合法的枚举值。\n *\n * 延迟解析 `items`（在验证阶段才调用工厂函数），避免装饰器阶段因循环引用报错。\n * 同时兼容两种写法：枚举对象 `() => Status` 和值数组 `() => Object.values(Status)`。\n *\n * 验证逻辑委托给 class-validator 内置的 `isEnum` / `Array.includes`。\n * 如需校验数组，配合 `IsArray()` 和 `{ each: true }` 使用。\n *\n * @param items - 枚举对象、值数组，或返回它们的工厂函数\n * @param validationOptions - class-validator 的验证选项\n *\n * @example\n * ```typescript\n * // 单值校验\n * class MyDto {\n *   @IsEnumColumn(() => Status)\n *   status: Status\n * }\n *\n * // 数组校验\n * class MyDto {\n *   @IsArray()\n *   @IsEnumColumn(() => Status, { each: true })\n *   statuses: Status[]\n * }\n * ```\n */\nexport function IsEnumColumn(\n  items: (() => object | (string | number)[]) | object | (string | number)[],\n  validationOptions?: ValidationOptions,\n): PropertyDecorator {\n  return function (object: object, propertyName: string | symbol) {\n    registerDecorator({\n      name: IS_ENUM_COLUMN,\n      target: object.constructor,\n      propertyName: propertyName as string,\n      constraints: [items],\n      options: validationOptions,\n      validator: {\n        validate(value: unknown): boolean {\n          const rawValues = typeof items === 'function' ? items() : items\n          if (Array.isArray(rawValues)) {\n            return rawValues.includes(value)\n          }\n          // 枚举对象 → 复用 class-validator 内置 isEnum\n          return isEnum(value, rawValues)\n        },\n        defaultMessage(): string {\n          const rawValues = typeof items === 'function' ? items() : items\n          const allowedValues: (string | number)[] = Array.isArray(rawValues)\n            ? rawValues\n            : Object.values(rawValues).filter((v) => isNaN(Number(v)))\n          return `$property 必须是以下之一: ${allowedValues.join(', ')}`\n        },\n      },\n    })\n  }\n}\n","import { IsBoolean, IsNumber, IsString } from 'class-validator'\nimport { Class } from 'type-fest'\n\nexport type ScalarClass = typeof String | typeof Number | typeof Boolean\nexport type ExcludeScalarClass<T> = T extends ScalarClass ? never : T\n\nexport function isScalarClass(\n  ctor: (() => Class<object>) | ScalarClass,\n): ctor is ScalarClass {\n  return ctor === String || ctor === Number || ctor === Boolean\n}\n\n/**\n * 根据标量类型（`String` / `Number` / `Boolean`）自动应用对应的 class-validator 验证装饰器。\n *\n * @param ctor - 标量构造函数：`String`、`Number` 或 `Boolean`\n * @param each - 是否对数组中的每个元素进行验证\n * @returns 对应的 `@IsString()` / `@IsNumber()` / `@IsBoolean()` 装饰器\n *\n * @example\n * ```typescript\n * class MyModel {\n *   @IsScalar(String, true)\n *   tags: string[]\n * }\n * ```\n */\nexport function IsScalar(ctor: ScalarClass, each: boolean): PropertyDecorator {\n  if (ctor === String) return IsString({ each })\n  if (ctor === Number) return IsNumber({}, { each })\n  return IsBoolean({ each })\n}\n","import { registerDecorator, ValidationOptions, ValidationArguments } from 'class-validator'\nimport { ScalarClass } from './is-scalar'\n\n\nexport const IS_SCALAR_DICTIONARY = 'isScalarDictionary'\n\n/**\n * 验证普通对象（Record）中的每个 value 是否为指定的标量类型。\n *\n * 与 class-validator 内置的 `{ each: true }` 不同，此验证器通过 `Object.values()` 遍历普通对象的值，\n * 而非仅支持 Array / Map / Set。\n *\n * @param ctor - 标量构造函数：`String`、`Number` 或 `Boolean`\n * @param validationOptions - class-validator 的验证选项\n *\n * @example\n * ```typescript\n * class ConfigDTO {\n *   @IsScalarDictionary(String)\n *   metadata: Record<string, string>\n * }\n * ```\n */\nexport function IsScalarDictionary(ctor: ScalarClass, validationOptions?: ValidationOptions): PropertyDecorator {\n  return function (object: object, propertyName: string | symbol) {\n    registerDecorator({\n      name: IS_SCALAR_DICTIONARY,\n      target: object.constructor,\n      propertyName: propertyName as string,\n      constraints: [ctor],\n      options: validationOptions,\n      validator: {\n        validate(value: any, args: ValidationArguments) {\n          if (value == null || typeof value !== 'object' || Array.isArray(value)) return false\n          const [ctor] = args.constraints\n          const typeName = ctor === String ? 'string' : ctor === Number ? 'number' : 'boolean'\n          return Object.values(value).every((v) => {\n            if (typeName === 'number') return typeof v === 'number' && !Number.isNaN(v)\n            return typeof v === typeName\n          })\n        },\n        defaultMessage(args: ValidationArguments) {\n          const [ctor] = args.constraints\n          const typeName = ctor === String ? 'string' : ctor === Number ? 'number' : 'boolean'\n          return `each value in $property must be a ${typeName}`\n        },\n      },\n    })\n  }\n}\n","const URN_PREFIX = 'urn:buka:'\n\n\n/**\n * 统一资源名称（URN）\n *\n * 格式: urn:buka:<domain>:<resource...>\n *\n * - 概念域级: urn:buka:galaxy\n * - 资源级: urn:buka:galaxy:auth-client:galaxy:console\n *\n * domain 之后的全部段为 resource 路径（: 分隔），parser 不区分\"类型\"和\"实例\"。\n * 应用层自行约定 resource 各段的语义。\n *\n * ```ts\n * Urn.of('galaxy')                                  // → 概念域级 URN\n * Urn.of('galaxy', 'auth-client:galaxy:console')     // → 资源级 URN\n * Urn.of('galaxy', ['auth-client', 'galaxy', 'console'])\n *\n * // 或通过派生方法构建\n * Urn.of('galaxy').withResource('auth-client', 'galaxy', 'console')\n * ```\n */\nexport class Urn {\n  private constructor(\n    /** 概念域 — 资源定义权归属，通常为系统名 */\n    public readonly domain: string,\n    /** domain 之后的完整资源路径（: 分隔），undefined 表示概念域级 */\n    public readonly resource?: string,\n  ) {\n    if (!/^(?:\\*|[a-z][a-z0-9-]*)$/.test(domain)) {\n      throw new Error(`Invalid domain: ${domain}`)\n    }\n    if (resource !== undefined) {\n      for (const seg of resource.split(':')) {\n        if (!/^(?:\\*{1,2}|[a-z0-9][a-z0-9-]*)$/.test(seg)) {\n          throw new Error(`Invalid resource segment: '${seg}' in '${resource}'`)\n        }\n      }\n    }\n  }\n\n  /**\n   * resource 按 `:` 拆分后的段数组\n   */\n  get resourceSegments(): string[] {\n    return this.resource ? this.resource.split(':') : []\n  }\n\n  /**\n   * 序列化为 URN 字符串\n   */\n  toString(): string {\n    let urn = `${URN_PREFIX}${this.domain}`\n    if (this.resource) urn += `:${this.resource}`\n    return urn\n  }\n\n  private toSegments(): string[] {\n    const segments: string[] = [this.domain]\n    if (this.resource) segments.push(...this.resource.split(':'))\n    return segments\n  }\n\n  /**\n   * 从概念域级 URN 衍生出资源级 URN\n   *\n   * @throws Error 当前 URN 已有 resource 时抛出\n   */\n  withResource(...segments: string[]): Urn {\n    if (this.resource !== undefined) {\n      throw new Error(`Cannot derive resource URN from a URN that already has a resource: ${this.toString()}`)\n    }\n    return new Urn(this.domain, segments.join(':'))\n  }\n\n  /**\n   * 类型守卫：判断是否为概念域级 URN（无 resource）\n   */\n  isDomainUrn(): boolean {\n    return this.resource === undefined\n  }\n\n  /**\n   * 根据参数创建对应层级的 URN\n   */\n  static of(domain: string, resource?: string | string[]): Urn {\n    const r = resource === undefined\n      ? undefined\n      : Array.isArray(resource) ? resource.join(':') : resource\n    return new Urn(domain, r)\n  }\n\n  /**\n   * 从 URN 字符串解析，支持通配符 `*` 和 `**`\n   *\n   * - `*` 匹配恰好一个段\n   * - `**` 匹配零个或多个尾部段（仅允许出现在末尾）\n   *\n   * @throws Error URN 格式不合法时抛出\n   */\n  static parse(urn: string): Urn {\n    if (!urn.startsWith(URN_PREFIX)) {\n      throw new Error(`Invalid URN: ${urn}`)\n    }\n\n    const parts = urn.slice(URN_PREFIX.length).split(':')\n    if (parts.length === 0 || parts[0] === '') {\n      throw new Error(`Invalid URN: ${urn}`)\n    }\n\n    const segments: string[] = []\n\n    for (let i = 0; i < parts.length; i++) {\n      const part = parts[i]\n      if (part === '**') {\n        if (i !== parts.length - 1) {\n          throw new Error(`Invalid URN: '**' is only allowed at the end: ${urn}`)\n        }\n        segments.push(part)\n        break\n      }\n      if (part === '*' || /^[a-z0-9][a-z0-9-]*$/.test(part)) {\n        segments.push(part)\n      } else {\n        throw new Error(`Invalid URN segment: '${part}' in ${urn}`)\n      }\n    }\n\n    if (segments.length === 0) {\n      throw new Error(`Invalid URN: ${urn}`)\n    }\n\n    const domain = segments[0]\n    const resource = segments.length > 1 ? segments.slice(1).join(':') : undefined\n\n    return new Urn(domain, resource)\n  }\n\n  /**\n   * 判断是否匹配指定的 domain 和 resource\n   *\n   * 未传入的参数不参与比较。\n   */\n  is(domain: string, resource?: string): boolean {\n    if (this.domain !== domain) return false\n    if (resource !== undefined && this.resource !== resource) return false\n    return true\n  }\n\n  /**\n   * 判断当前 URN 是否匹配指定的 URN 模式（支持通配符）\n   *\n   * ```ts\n   * urn.match('urn:buka:galaxy:principal:*')  // resource 以 principal: 开头\n   * urn.match('urn:buka:galaxy:auth-client:**') // 任意深度的 auth-client\n   * ```\n   */\n  match(pattern: string): boolean {\n    return Urn.parse(pattern).contains(this)\n  }\n\n  /**\n   * 判断当前 URN 是否包含另一个 URN\n   *\n   * 当前 URN 含通配符（`*` 或 `**`）时，作为集合模式判断：\n   * - `*` 匹配恰好一个段\n   * - `**` 匹配零个或多个尾部段（仅末尾有效）\n   *\n   * 当前 URN 为具体 URN（无通配符）时，仅包含自身（严格相等）。\n   */\n  contains(other: Urn): boolean {\n    const thisSegs = this.toSegments()\n    const otherSegs = other.toSegments()\n\n    const hasDoubleWildcard = thisSegs.length > 0 && thisSegs[thisSegs.length - 1] === '**'\n\n    if (hasDoubleWildcard) {\n      const fixedSegs = thisSegs.slice(0, -1)\n      if (otherSegs.length < fixedSegs.length) return false\n      for (let i = 0; i < fixedSegs.length; i++) {\n        if (fixedSegs[i] !== '*' && fixedSegs[i] !== otherSegs[i]) return false\n      }\n      return true\n    }\n\n    if (thisSegs.length !== otherSegs.length) return false\n    for (let i = 0; i < thisSegs.length; i++) {\n      if (thisSegs[i] !== '*' && thisSegs[i] !== otherSegs[i]) return false\n    }\n    return true\n  }\n}\n","import { registerDecorator, ValidationOptions } from 'class-validator'\nimport { Urn } from '../../models/urn.js'\n\n\nexport const IS_URN = 'isUrn'\nexport const IS_DOMAIN_URN = 'isDomainUrn'\n\n/**\n * 验证字符串是否为合法的 URN（任意层级）。\n *\n * @example\n * ```typescript\n * class TokenPayloadDTO {\n *   @IsUrn()\n *   sub: string\n * }\n * ```\n */\nexport function IsUrn(validationOptions?: ValidationOptions) {\n  return function (object: object, propertyName: string) {\n    registerDecorator({\n      name: IS_URN,\n      target: object.constructor,\n      propertyName,\n      options: validationOptions,\n      validator: {\n        validate(value: any) {\n          if (typeof value !== 'string') return false\n          try {\n            Urn.parse(value)\n            return true\n          } catch {\n            return false\n          }\n        },\n        defaultMessage() {\n          return '$property must be a valid URN (urn:buka:<domain>[:<resource-type>[:<resource-id>]])'\n        },\n      },\n    })\n  }\n}\n\n/**\n * 验证字符串是否为概念域级 URN（仅含 domain，无 resourceType 和 resourceId）。\n *\n * @example\n * ```typescript\n * class TokenPayloadDTO {\n *   @IsDomainUrn()\n *   aud: string\n * }\n * ```\n */\nexport function IsDomainUrn(validationOptions?: ValidationOptions) {\n  return function (object: object, propertyName: string) {\n    registerDecorator({\n      name: IS_DOMAIN_URN,\n      target: object.constructor,\n      propertyName,\n      options: validationOptions,\n      validator: {\n        validate(value: any) {\n          if (typeof value !== 'string') return false\n          try {\n            return Urn.parse(value).isDomainUrn()\n          } catch {\n            return false\n          }\n        },\n        defaultMessage() {\n          return '$property must be a domain-level URN (urn:buka:<domain>)'\n        },\n      },\n    })\n  }\n}\n\n/**\n * 验证字符串是否匹配指定的 URN 模式（支持通配符 `*` 和 `**`）。\n *\n * - `*` 匹配恰好一个段\n * - `**` 匹配零个或多个尾部段\n *\n * @example\n * ```typescript\n * class CreateClientDTO {\n *   @MatchesUrn('urn:buka:galaxy:client:*')\n *   clientUrn: string\n * }\n * ```\n */\nexport function MatchesUrn(pattern: string, validationOptions?: ValidationOptions) {\n  return function (object: object, propertyName: string) {\n    registerDecorator({\n      name: 'matchesUrn',\n      target: object.constructor,\n      propertyName,\n      options: validationOptions,\n      validator: {\n        validate(value: any) {\n          if (typeof value !== 'string') return false\n          try {\n            const urn = Urn.parse(value)\n            const patternUrn = Urn.parse(pattern)\n            return patternUrn.contains(urn)\n          } catch {\n            return false\n          }\n        },\n        defaultMessage() {\n          return `$property must match URN pattern ${pattern}`\n        },\n      },\n    })\n  }\n}\n","import { registerDecorator, ValidationOptions, ValidationArguments } from 'class-validator'\nimport { validate } from 'jsonschema'\n\n\nexport const MATCH_JSON_SCHEMA = 'matchJsonSchema'\n\n\n/**\n * 验证属性值是否符合给定的 JSON Schema。\n *\n * @param schema - JSON Schema 定义\n * @param validationOptions - class-validator 的验证选项\n *\n * @example\n * ```typescript\n * class ConfigDTO {\n *   @MatchJsonSchema({\n *     type: 'object',\n *     properties: { key: { type: 'string' } },\n *     required: ['key'],\n *   })\n *   config: Record<string, any>\n * }\n * ```\n */\nexport function MatchJsonSchema(schema: any, validationOptions?: ValidationOptions) {\n  return function (object: object, propertyName: string) {\n    registerDecorator({\n      name: MATCH_JSON_SCHEMA,\n      target: object.constructor,\n      propertyName: propertyName,\n      constraints: [schema],\n      options: validationOptions,\n      validator: {\n        validate(value: any, args: ValidationArguments) {\n          const [schema] = args.constraints\n\n          const results = validate(value, schema)\n          return results.valid\n        },\n        defaultMessage({ value, constraints }: ValidationArguments) {\n          return `${propertyName} must match the JSON schema`\n        },\n      },\n    })\n  }\n}\n\n","import { registerDecorator, validateSync, ValidationOptions } from 'class-validator'\nimport { Class } from 'type-fest'\n\n\nexport const VALIDATE_NESTED_DICTIONARY = 'validateNestedDictionary'\n\n/**\n * 验证普通对象（Record）中的每个 value 是否为有效的嵌套对象实例。\n *\n * 通过 `Object.values()` 遍历字典值，对每个值调用 `validateSync()` 进行嵌套验证。\n * 与 class-validator 内置的 `@ValidateNested({ each: true })` 不同，此验证器支持普通对象，\n * 而非仅支持 Array / Map / Set。\n *\n * @param typeFunc - 延迟求值的嵌套类型引用 `() => Class`\n * @param validationOptions - class-validator 的验证选项\n *\n * @example\n * ```typescript\n * class UserDTO {\n *   @ValidateNestedDictionary(() => AddressDTO)\n *   addresses: Record<string, AddressDTO>\n * }\n * ```\n */\nexport function ValidateNestedDictionary(typeFunc: () => Class<object>, validationOptions?: ValidationOptions): PropertyDecorator {\n  return function (object: object, propertyName: string | symbol) {\n    registerDecorator({\n      name: VALIDATE_NESTED_DICTIONARY,\n      target: object.constructor,\n      propertyName: propertyName as string,\n      constraints: [typeFunc],\n      options: validationOptions,\n      validator: {\n        validate(value: any) {\n          if (value == null || typeof value !== 'object' || Array.isArray(value)) return false\n          return Object.values(value).every((v) => {\n            if (typeof v !== 'object' || v == null) return false\n            const errors = validateSync(v)\n            return errors.length === 0\n          })\n        },\n        defaultMessage() {\n          return 'each value in $property must be a valid nested object'\n        },\n      },\n    })\n  }\n}\n","import { createParamDecorator, ExecutionContext } from '@nestjs/common'\n\n\n/**\n * 参数装饰器，通过检测请求头中是否存在 `Sec-Fetch-Site` 头，\n * 判断请求是否来自浏览器。\n *\n * 浏览器在发起请求时会自动附加 `Sec-Fetch-Site`、`Sec-Fetch-Mode`、\n * `Sec-Fetch-Dest` 等头（[Fetch Metadata Request Headers](https://www.w3.org/TR/fetch-metadata/)）。\n * 非浏览器客户端（如 curl、Postman）通常不会携带这些头。\n *\n * **注意：** Node.js 的 undici（globalThis.fetch）会自动添加 `Sec-Fetch-Mode: cors`，\n * 但不会添加 `Sec-Fetch-Site`。因此使用 `Sec-Fetch-Site` 而非任意 `Sec-Fetch-*`\n * 头来区分真正的浏览器请求和服务端 fetch 调用。\n *\n * 装饰的参数类型应为 `boolean`。\n *\n * @example\n * ```typescript\n * @Controller('users')\n * class UserController {\n *   @Get('me')\n *   getMe(@IsBrowserRequest() isBrowser: boolean) {\n *     if (isBrowser) {\n *       // 浏览器请求，可返回完整的页面数据\n *     }\n *   }\n * }\n * ```\n */\nexport const IsBrowserRequest = createParamDecorator(\n  (_data: unknown, ctx: ExecutionContext): boolean => {\n    const request = ctx.switchToHttp().getRequest<{ headers: Record<string, unknown> }>()\n    // 使用 Sec-Fetch-Site 而非任意 Sec-Fetch-* 头来判断\n    // 浏览器会同时发送 Sec-Fetch-Mode + Sec-Fetch-Site + Sec-Fetch-Dest\n    // Node.js undici 仅发送 Sec-Fetch-Mode: cors，不发送 Sec-Fetch-Site\n    return Object.keys(request.headers).some((key) => key.toLowerCase() === 'sec-fetch-site')\n  },\n)\n","import { Class } from 'type-fest'\nimport { ModelMetadata } from './model.decorator'\nimport { PropertyMetadata } from './property.decorator'\n\n\nconst MODEL_METADATA_KEY = 'buka:model'\nconst PROPERTY_METADATA_KEY = 'buka:property'\n\nexport class ModelRegister {\n  static setModel(target: Class<any>, metadata: ModelMetadata): void {\n    Reflect.defineMetadata(MODEL_METADATA_KEY, metadata, target)\n  }\n\n  static getModel(target: Class<any>): ModelMetadata | undefined {\n    return Reflect.getMetadata(MODEL_METADATA_KEY, target) as ModelMetadata | undefined\n  }\n\n  static setProperty(target: Class<any>, propertyName: string | symbol, metadata: PropertyMetadata): void {\n    Reflect.defineMetadata(PROPERTY_METADATA_KEY, metadata, target.prototype, propertyName)\n  }\n\n  static getProperty(target: Class<any>, propertyName: string | symbol): PropertyMetadata | undefined {\n    return Reflect.getMetadata(PROPERTY_METADATA_KEY, target.prototype, propertyName) as PropertyMetadata | undefined\n  }\n\n  static copyProperty(source: Class<any>, target: Class<any>, propertyName: string | symbol): void {\n    const metadata = this.getProperty(source, propertyName)\n    if (metadata) {\n      const modelMetadata = this.addModel(target)\n\n      if (!modelMetadata.propertyKeys.includes(propertyName)) {\n        modelMetadata.propertyKeys.push(propertyName)\n      }\n\n      this.setProperty(target, propertyName, metadata)\n    }\n  }\n\n  static addModel(target: Class<any>): ModelMetadata {\n    const metadata = this.getModel(target)\n\n    if (!metadata) {\n      const metadata: ModelMetadata = {\n        propertyKeys: [],\n      }\n\n      this.setModel(target, metadata)\n      return metadata\n    }\n\n    return metadata\n  }\n\n  static addProperty(target: Class<any>, propertyName: string | symbol, metadata: PropertyMetadata): void {\n    const modelMetadata = this.addModel(target)\n\n    if (!modelMetadata.propertyKeys.includes(propertyName)) {\n      modelMetadata.propertyKeys.push(propertyName)\n    }\n\n    const propertyMetadata = {\n      ...(this.getProperty(target, propertyName) || {}),\n      ...metadata,\n    } as PropertyMetadata\n\n    this.setProperty(target, propertyName, propertyMetadata)\n  }\n\n  /**\n   * 判断是否为已注册的 Model\n   *\n   * @example\n   * ```typescript\n   * const isModel = ModelRegister.isModel(Class.prototype)\n   * ```\n   */\n  static isModel(target: Class<any>): boolean {\n    return !!this.getModel(target)\n  }\n\n  /**\n   * 获取 Model 的所有属性\n   *\n   * @example\n   * ```typescript\n   * const properties = ModelRegister.getProperties(Class.prototype)\n   * ```\n   */\n  static getModelPropertyKeys(target: Class<any>): (string | symbol)[] {\n    const keys = new Set<string | symbol>()\n    let current: Class<any> | null = target\n\n    while (current && current !== Object) {\n      const metadata = this.getModel(current)\n      if (metadata) {\n        for (const key of metadata.propertyKeys) {\n          keys.add(key)\n        }\n      }\n      current = Object.getPrototypeOf(current.prototype)?.constructor as Class<any> | null ?? null\n    }\n\n    return Array.from(keys)\n  }\n\n  static getProperties(target: Class<any>): PropertyMetadata[] {\n    const propertyKeys = this.getModelPropertyKeys(target)\n\n    return propertyKeys\n      .map((propertyKey) => this.getProperty(target, propertyKey))\n      .filter((property): property is PropertyMetadata => !!property)\n  }\n}\n","import { ApiSchema } from '@nestjs/swagger'\nimport { Class } from 'type-fest'\nimport { ModelRegister } from './model.register'\n\n\nexport interface ModelSchemaOptions {\n  description?: string\n  additionalProperties?: boolean\n}\n\nexport interface ModelMetadata {\n  propertyKeys: (string | symbol)[]\n  schema?: ModelSchemaOptions\n  additionalProperties?: boolean | (() => Class<object>)\n}\n\nexport interface ModelOptions {\n  /**\n   * Swagger/OpenAPI schema 配置，透传给 `@ApiSchema()`。\n   * 仅影响文档生成，不影响运行时序列化行为。\n   */\n  schema?: ModelSchemaOptions\n  /**\n   * 控制序列化时是否保留未通过 `@Property`/`@Composite` 等装饰器注册的额外字段。\n   *\n   * - `true`：额外字段原样保留\n   * - `() => Class`：额外字段按指定 Model 类型递归序列化\n   * - 未设置（默认）：额外字段在序列化时被丢弃\n   */\n  additionalProperties?: boolean | (() => Class<object>)\n}\n\n/**\n * 模型类装饰器，标记一个 class 为模型，使其可被 Converter（如 `PickType`、`OmitType`）识别和处理。\n *\n * @param options - 可选的模型配置\n *\n * @example\n * ```typescript\n * @Model({ schema: { description: '用户信息' } })\n * class UserDTO {\n *   @Property()\n *   name: string\n * }\n * ```\n */\nexport function Model(options?: ModelOptions): ClassDecorator {\n  return (target: Function) => {\n    const metadata = ModelRegister.addModel(target as Class<any>)\n\n    if (options?.additionalProperties) {\n      metadata.additionalProperties = options.additionalProperties\n    }\n\n    if (options?.schema) {\n      metadata.schema = options.schema\n      ApiSchema(options.schema as any)(target)\n    }\n  }\n}\n","import { ApiProperty, ApiPropertyOptional, ApiPropertyOptions } from '@nestjs/swagger'\nimport { IsDefined, IsOptional } from 'class-validator'\nimport { Class } from 'type-fest'\nimport { ScalarClass } from '../class-validator/is-scalar'\nimport { AssociationMetadata } from './association.decorator'\nimport { ModelRegister } from './model.register'\n\n\ninterface PropertyMetadataBase {\n  optional: boolean\n  lazy: boolean\n  association?: AssociationMetadata\n}\n\nexport interface ScalarPropertyMetadata extends PropertyMetadataBase {\n  kind: 'scalar'\n}\n\nexport interface CompositePropertyMetadata extends PropertyMetadataBase {\n  kind: 'composite'\n  type: () => Class<object>\n}\n\nexport interface ListPropertyMetadata extends PropertyMetadataBase {\n  kind: 'list'\n  type?: (() => Class<object>) | ScalarClass\n}\n\nexport interface DictionaryPropertyMetadata extends PropertyMetadataBase {\n  kind: 'dictionary'\n  type?: (() => Class<object>) | ScalarClass\n  map?: boolean\n}\n\nexport interface EnumPropertyMetadata extends PropertyMetadataBase {\n  kind: 'enum'\n  type?: () => object\n  values?: (string | number)[]\n  /**\n   * MikroORM `@Enum()` 列装饰器传入的原始 `items` 参数。\n   * 保持原始格式（数组或惰性函数），不立即求值以避免循环引用。\n   */\n  items?: (() => (string | number)[]) | (string | number)[]\n  enumName?: string\n  array?: boolean\n}\n\nexport type PropertyMetadata\n  = | ScalarPropertyMetadata\n    | CompositePropertyMetadata\n    | ListPropertyMetadata\n    | DictionaryPropertyMetadata\n    | EnumPropertyMetadata\n\nexport type PropertyKind = 'scalar' | 'composite' | 'list' | 'dictionary' | 'enum'\n\n\ninterface ScalarPropertyOptions {\n  /**\n   * 是否可选。为 `true` 时自动应用 `@IsOptional()` 和 `@ApiPropertyOptional()`。\n   */\n  optional?: boolean\n  /**\n   * 标记该属性为懒加载。懒加载属性存在除 `undefined` 之外的第三种状态——\"未加载\"，\n   * 即该属性并非不存在，而是尚未被加载。懒加载属性默认不注册 Swagger schema，\n   * 因此不会出现在 API 文档中。如需包含，请在派生 DTO 中手动声明。\n   *\n   * 在 MikroORM 场景下，对应 `lazy: true` 的列，查询时不会默认 SELECT 该列，需显式 `populate` 才会加载。\n   */\n  lazy?: boolean\n  /**\n   * 自定义 Swagger schema 配置，透传给 `@ApiProperty()` / `@ApiPropertyOptional()`。\n   */\n  schema?: ApiPropertyOptions\n}\n\n/**\n * 标量属性装饰器，用于声明模型中的基础类型属性（如 `string`、`number`、`boolean`）。\n *\n * 自动注册属性元数据，并根据 `optional` 和 `schema` 配置应用 class-validator 和 Swagger 装饰器。\n *\n * @param options - 标量属性配置\n *\n * @example\n * ```typescript\n * @Model()\n * class UserDTO {\n *   @Property()\n *   name: string\n *\n *   @Property({ optional: true, schema: { description: '用户年龄' } })\n *   age?: number\n * }\n * ```\n */\nexport function Property(options: ScalarPropertyOptions = {}): PropertyDecorator {\n  return (target: object, propertyKey: string | symbol) => {\n    if (!('constructor' in target)) {\n      throw new TypeError('@Property decorator can only be applied to class properties.')\n    }\n\n    if (options.optional) {\n      IsOptional()(target, propertyKey)\n    } else {\n      IsDefined()(target, propertyKey)\n    }\n\n    if (options.schema) {\n      if (options.optional) {\n        ApiPropertyOptional(options.schema)(target, propertyKey)\n      } else {\n        ApiProperty(options.schema)(target, propertyKey)\n      }\n    }\n\n    ModelRegister.addProperty(target.constructor as Class<any>, propertyKey, {\n      kind: 'scalar',\n      optional: options.optional ?? false,\n      lazy: options.lazy ?? false,\n    })\n  }\n}\n","import { ApiProperty, ApiPropertyOptional, ApiPropertyOptions } from '@nestjs/swagger'\nimport { Type } from 'class-transformer'\nimport { IsNotEmpty, IsOptional, ValidateNested } from 'class-validator'\nimport { Class } from 'type-fest'\nimport { RefAssociationMetadata } from './association.decorator'\nimport { ModelRegister } from './model.register'\n\n\ninterface CompositeOptions {\n  /**\n   * 复合类型的 class 引用，使用延迟求值函数 `() => Class` 以避免循环依赖。\n   */\n  type: () => Class<object>\n  /**\n   * 是否可选。为 `true` 时自动应用 `@IsOptional()` 和 `@ApiPropertyOptional()`。\n   */\n  optional?: boolean\n  /**\n   * 标记该属性为懒加载。懒加载属性存在除 `undefined` 之外的第三种状态——\"未加载\"，\n   * 即该属性并非不存在，而是尚未被加载。懒加载属性默认不注册 Swagger schema，\n   * 因此不会出现在 API 文档中。如需包含，请在派生 DTO 中手动声明。\n   *\n   * 在 MikroORM 场景下，对应 `lazy: true` 的列，查询时不会默认 SELECT 该列，需显式 `populate` 才会加载。\n   */\n  lazy?: boolean\n  /**\n   * 自定义 Swagger schema 配置，透传给 `@ApiProperty()` / `@ApiPropertyOptional()`。\n   */\n  schema?: ApiPropertyOptions\n  /**\n   * 关联元数据，由 Cardinality 装饰器内部传入，通常无需手动设置。\n   */\n  association?: RefAssociationMetadata\n}\n\n/**\n * 复合类型属性装饰器，用于声明嵌套对象类型的属性。\n *\n * 自动应用 `@ValidateNested()`、`@Type()` 以及 Swagger schema 配置，支持递归验证嵌套对象。\n *\n * @param options - 复合类型配置，必须通过 `type` 指定嵌套类的引用\n *\n * @example\n * ```typescript\n * @Model()\n * class AddressDTO {\n *   @Property()\n *   city: string\n * }\n *\n * @Model()\n * class UserDTO {\n *   @Composite({ type: () => AddressDTO })\n *   address: AddressDTO\n * }\n * ```\n */\nexport function Composite(options: CompositeOptions): PropertyDecorator {\n  return (target, propertyKey) => {\n    const optional = options.optional ?? false\n    const schema: ApiPropertyOptions = { type: () => options.type(), ...options.schema }\n\n    ValidateNested()(target, propertyKey)\n    if (optional) {\n      IsOptional()(target, propertyKey)\n    } else {\n      IsNotEmpty({ message: '$property is required' })(target, propertyKey)\n    }\n\n    Type(options.type)(target, propertyKey)\n\n    if (!options.lazy) {\n      if (optional) {\n        ApiPropertyOptional(schema)(target, propertyKey)\n      } else {\n        ApiProperty(schema)(target, propertyKey)\n      }\n    }\n\n    ModelRegister.addProperty(target.constructor as Class<any>, propertyKey, {\n      kind: 'composite',\n      optional,\n      lazy: options.lazy ?? false,\n      type: options.type,\n      association: options.association,\n    })\n  }\n}\n","import { ApiProperty, ApiPropertyOptional, ApiPropertyOptions } from '@nestjs/swagger'\nimport { Type } from 'class-transformer'\nimport { IsArray, IsNotEmpty, IsOptional, ValidateNested } from 'class-validator'\nimport { Class } from 'type-fest'\nimport { CollectionAssociationMetadata } from './association.decorator'\nimport { ModelRegister } from './model.register'\nimport { ExcludeScalarClass, ScalarClass, IsScalar, isScalarClass } from '../class-validator/is-scalar'\n\n\ninterface ListOptionsBase {\n  /**\n   * 是否可选。为 `true` 时自动应用 `@IsOptional()` 和 `@ApiPropertyOptional()`。\n   */\n  optional?: boolean\n  /**\n   * 标记该属性为懒加载。懒加载属性存在除 `undefined` 之外的第三种状态——\"未加载\"，\n   * 即该属性并非不存在，而是尚未被加载。懒加载属性默认不注册 Swagger schema，\n   * 因此不会出现在 API 文档中。如需包含，请在派生 DTO 中手动声明。\n   *\n   * 在 MikroORM 场景下，对应 `lazy: true` 的列，查询时不会默认 SELECT 该列，需显式 `populate` 才会加载。\n   */\n  lazy?: boolean\n  /**\n   * 自定义 Swagger schema 配置，透传给 `@ApiProperty()` / `@ApiPropertyOptional()`。\n   */\n  schema?: ApiPropertyOptions\n  /**\n   * 关联元数据，由 Cardinality 装饰器内部传入，通常无需手动设置。\n   */\n  association?: CollectionAssociationMetadata\n}\n\ninterface ListOptionsScalar extends ListOptionsBase {\n  /**\n   * 标量类型：`String` / `Number` / `Boolean`。\n   */\n  type: ScalarClass\n}\n\ninterface ListOptionsComposite<T extends Class<object>> extends ListOptionsBase {\n  /**\n   * 复合类型：`() => Class`。\n   */\n  type: () => ExcludeScalarClass<T>\n}\n\nfunction applyUntypedList(target: object, propertyKey: string | symbol, options: ListOptionsBase): void {\n  const optional = options.optional ?? false\n  const schema: ApiPropertyOptions = { type: 'array', ...options.schema }\n\n  IsArray()(target, propertyKey)\n\n  if (optional) {\n    IsOptional()(target, propertyKey)\n  } else {\n    IsNotEmpty({ each: true, message: '$property is required' })(target, propertyKey)\n  }\n\n  if (!options.lazy) {\n    if (optional) {\n      ApiPropertyOptional(schema)(target, propertyKey)\n    } else {\n      ApiProperty(schema)(target, propertyKey)\n    }\n  }\n\n  ModelRegister.addProperty(target.constructor as Class<any>, propertyKey, {\n    kind: 'list',\n    optional,\n    lazy: options.lazy ?? false,\n    type: undefined,\n    association: options.association,\n  })\n}\n\nfunction applyScalarList(target: object, propertyKey: string | symbol, options: ListOptionsScalar): void {\n  const optional = options.optional ?? false\n  const schema: ApiPropertyOptions = { type: options.type, isArray: true, ...options.schema }\n\n  IsArray()(target, propertyKey)\n  IsScalar(options.type, true)(target, propertyKey)\n\n  if (optional) {\n    IsOptional()(target, propertyKey)\n  } else {\n    IsNotEmpty({ each: true, message: '$property is required' })(target, propertyKey)\n  }\n\n  if (!options.lazy) {\n    if (optional) {\n      ApiPropertyOptional(schema)(target, propertyKey)\n    } else {\n      ApiProperty(schema)(target, propertyKey)\n    }\n  }\n\n  ModelRegister.addProperty(target.constructor as Class<any>, propertyKey, {\n    kind: 'list',\n    optional,\n    lazy: options.lazy ?? false,\n    type: options.type,\n    association: options.association,\n  })\n}\n\nfunction applyCompositeList(target: object, propertyKey: string | symbol, options: ListOptionsComposite<any>): void {\n  const optional = options.optional ?? false\n  const type = options.type as () => Class<object>\n  const schema: ApiPropertyOptions = { type: () => type(), isArray: true, ...options.schema }\n\n  ValidateNested({ each: true })(target, propertyKey)\n  Type(type)(target, propertyKey)\n\n  if (optional) {\n    IsOptional()(target, propertyKey)\n  } else {\n    IsNotEmpty({ each: true, message: '$property is required' })(target, propertyKey)\n  }\n\n  if (!options.lazy) {\n    if (optional) {\n      ApiPropertyOptional(schema)(target, propertyKey)\n    } else {\n      ApiProperty(schema)(target, propertyKey)\n    }\n  }\n\n  ModelRegister.addProperty(target.constructor as Class<any>, propertyKey, {\n    kind: 'list',\n    optional,\n    lazy: options.lazy ?? false,\n    type,\n    association: options.association,\n  })\n}\n\n/**\n * 列表（数组）属性装饰器，支持无类型、标量类型和复合类型三种模式。\n *\n * - 无类型：不指定 `type`，仅校验为数组\n * - 标量类型：`type` 为 `String` / `Number` / `Boolean`\n * - 复合类型：`type` 为 `() => Class`，支持嵌套验证\n *\n * @param options - 列表属性配置\n *\n * @example\n * ```typescript\n * @Model()\n * class UserDTO {\n *   @List({ type: String })\n *   tags: string[]\n *\n *   @List({ type: () => AddressDTO })\n *   addresses: AddressDTO[]\n * }\n * ```\n */\nexport function List<T extends Class<object>>(options: ListOptionsBase | ListOptionsScalar | ListOptionsComposite<T> = {}): PropertyDecorator {\n  return (target, propertyKey) => {\n    if (!('type' in options)) return applyUntypedList(target, propertyKey, options)\n    if (isScalarClass(options.type)) return applyScalarList(target, propertyKey, options as ListOptionsScalar)\n    return applyCompositeList(target, propertyKey, options as ListOptionsComposite<any>)\n  }\n}\n","import { ApiProperty, ApiPropertyOptional, ApiPropertyOptions } from '@nestjs/swagger'\nimport { Type, Transform, plainToInstance } from 'class-transformer'\nimport { IsObject, IsOptional, ValidateNested } from 'class-validator'\nimport { Class } from 'type-fest'\nimport { AssociationMetadata } from './association.decorator'\nimport { ModelRegister } from './model.register'\nimport { ExcludeScalarClass, ScalarClass, IsScalar, isScalarClass } from '../class-validator/is-scalar'\nimport { IsScalarDictionary } from '../class-validator/is-scalar-dictionary'\nimport { ValidateNestedDictionary } from '../class-validator/validate-nested-dictionary'\n\n\nconst SCALAR_SWAGGER_TYPE_MAP: Record<string, string> = {\n  String: 'string',\n  Number: 'number',\n  Boolean: 'boolean',\n}\n\ninterface DictionaryOptionsBase {\n  /**\n   * 是否可选。为 `true` 时自动应用 `@IsOptional()` 和 `@ApiPropertyOptional()`。\n   */\n  optional?: boolean\n\n  /**\n   * 标记该属性为懒加载。懒加载属性存在除 `undefined` 之外的第三种状态——\"未加载\"，\n   * 即该属性并非不存在，而是尚未被加载。懒加载属性默认不注册 Swagger schema，\n   * 因此不会出现在 API 文档中。如需包含，请在派生 DTO 中手动声明。\n   *\n   * 在 MikroORM 场景下，对应 `lazy: true` 的列，查询时不会默认 SELECT 该列，需显式 `populate` 才会加载。\n   */\n  lazy?: boolean\n\n  /**\n   * 自定义 Swagger schema 配置，透传给 `@ApiProperty()` / `@ApiPropertyOptional()`。\n   */\n  schema?: ApiPropertyOptions\n\n  /**\n   * 关联元数据，由 Cardinality 装饰器内部传入，通常无需手动设置。\n   */\n  association?: AssociationMetadata\n\n  /**\n   * 启用 Map 模式。为 `true` 时使用 `Map<string, T>` 代替 `Record<string, T>`，\n   * 复用 class-validator / class-transformer 的原生 Map 支持，可获得完整的嵌套错误路径。\n   *\n   * @default false\n   */\n  map?: boolean\n}\n\ninterface DictionaryOptionsScalar extends DictionaryOptionsBase {\n  /**\n   * 标量类型：`String` / `Number` / `Boolean`。\n   */\n  type: ScalarClass\n}\n\ninterface DictionaryOptionsComposite<T extends Class<object>> extends DictionaryOptionsBase {\n  /**\n   * 复合类型：`() => Class`。\n   */\n  type: () => ExcludeScalarClass<T>\n}\n\nfunction applyUntypedDictionary(target: object, propertyKey: string | symbol, options: DictionaryOptionsBase): void {\n  const optional = options.optional ?? false\n  const schema = { type: 'object', additionalProperties: true, ...options.schema } as ApiPropertyOptions\n\n  IsObject()(target, propertyKey)\n\n  if (optional) {\n    IsOptional()(target, propertyKey)\n  }\n\n  if (optional) {\n    ApiPropertyOptional(schema)(target, propertyKey)\n  } else {\n    ApiProperty(schema)(target, propertyKey)\n  }\n\n  ModelRegister.addProperty(target.constructor as Class<any>, propertyKey, {\n    kind: 'dictionary',\n    optional,\n    lazy: options.lazy ?? false,\n    type: undefined,\n    map: options.map ?? false,\n    association: options.association,\n  })\n}\n\nfunction applyScalarDictionary(target: object, propertyKey: string | symbol, options: DictionaryOptionsScalar): void {\n  const optional = options.optional ?? false\n  const map = options.map ?? false\n  const schema = {\n    type: 'object',\n    additionalProperties: { type: SCALAR_SWAGGER_TYPE_MAP[options.type.name] },\n    ...options.schema,\n  } as ApiPropertyOptions\n\n  IsObject()(target, propertyKey)\n  if (map) {\n    IsScalar(options.type, true)(target, propertyKey)\n  } else {\n    IsScalarDictionary(options.type)(target, propertyKey)\n  }\n\n  if (optional) {\n    IsOptional()(target, propertyKey)\n  }\n\n  if (optional) {\n    ApiPropertyOptional(schema)(target, propertyKey)\n  } else {\n    ApiProperty(schema)(target, propertyKey)\n  }\n\n  ModelRegister.addProperty(target.constructor as Class<any>, propertyKey, {\n    kind: 'dictionary',\n    optional,\n    lazy: options.lazy ?? false,\n    type: options.type,\n    map,\n    association: options.association,\n  })\n}\n\nfunction applyCompositeDictionary(target: object, propertyKey: string | symbol, options: DictionaryOptionsComposite<any>): void {\n  const optional = options.optional ?? false\n  const map = options.map ?? false\n  const schema = { type: 'object', additionalProperties: true, ...options.schema } as ApiPropertyOptions\n\n  if (map) {\n    ValidateNested({ each: true })(target, propertyKey)\n    Type(options.type)(target, propertyKey)\n  } else {\n    IsObject()(target, propertyKey)\n    Transform(({ value }) => {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n      if (value == null || typeof value !== 'object' || Array.isArray(value)) return value\n      const cls = options.type()\n      return Object.fromEntries(\n        Object.entries(value).map(([k, v]) => [k, v instanceof cls ? v : plainToInstance(cls, v)]),\n      )\n    }, { toClassOnly: true })(target, propertyKey)\n    ValidateNestedDictionary(options.type)(target, propertyKey)\n  }\n\n  if (optional) {\n    IsOptional()(target, propertyKey)\n  }\n\n  if (optional) {\n    ApiPropertyOptional(schema)(target, propertyKey)\n  } else {\n    ApiProperty(schema)(target, propertyKey)\n  }\n\n  ModelRegister.addProperty(target.constructor as Class<any>, propertyKey, {\n    kind: 'dictionary',\n    optional,\n    lazy: options.lazy ?? false,\n    type: options.type,\n    map,\n    association: options.association,\n  })\n}\n\n/**\n * 字典（键值对）属性装饰器，支持无类型、标量类型和复合类型三种模式。\n *\n * - 无类型：不指定 `type`，仅校验为对象\n * - 标量类型：`type` 为 `String` / `Number` / `Boolean`\n * - 复合类型：`type` 为 `() => Class`，支持嵌套验证\n *\n * @param options - 字典属性配置\n *\n * @example\n * ```typescript\n * @Model()\n * class UserDTO {\n *   @Dictionary({ type: String })\n *   metadata: Record<string, string>\n *\n *   @Dictionary({ type: () => AddressDTO, optional: true })\n *   addressMap?: Record<string, AddressDTO>\n * }\n * ```\n */\nexport function Dictionary<T extends Class<object>>(options: DictionaryOptionsBase | DictionaryOptionsScalar | DictionaryOptionsComposite<T> = {}): PropertyDecorator {\n  return (target, propertyKey) => {\n    if (!('type' in options)) return applyUntypedDictionary(target, propertyKey, options)\n    if (isScalarClass(options.type)) return applyScalarDictionary(target, propertyKey, options as DictionaryOptionsScalar)\n    return applyCompositeDictionary(target, propertyKey, options as DictionaryOptionsComposite<any>)\n  }\n}\n","import { ApiProperty, ApiPropertyOptional, ApiPropertyOptions } from '@nestjs/swagger'\nimport { IsEnum, IsIn, IsOptional } from 'class-validator'\nimport { Class } from 'type-fest'\nimport { ModelRegister } from './model.register'\n\n\ninterface EnumOptionsBase {\n  /**\n   * 是否可选。为 `true` 时自动应用 `@IsOptional()` 和 `@ApiPropertyOptional()`。\n   */\n  optional?: boolean\n\n  /**\n   * 标记该属性为懒加载。懒加载属性存在除 `undefined` 之外的第三种状态——\"未加载\"，\n   * 即该属性并非不存在，而是尚未被加载。懒加载属性默认不注册 Swagger schema，\n   * 因此不会出现在 API 文档中。如需包含，请在派生 DTO 中手动声明。\n   *\n   * 在 MikroORM 场景下，对应 `lazy: true` 的列，查询时不会默认 SELECT 该列，需显式 `populate` 才会加载。\n   */\n  lazy?: boolean\n\n  /**\n   * 自定义 Swagger schema 配置，透传给 `@ApiProperty()` / `@ApiPropertyOptional()`。\n   */\n  schema?: ApiPropertyOptions\n\n  /**\n   * Swagger 中枚举的名称，用于生成 `$ref` 引用的命名 schema。\n   * 例如 `enumName: 'Status'` 会在 Swagger 的 components/schemas 中生成命名枚举。\n   */\n  enumName?: string\n}\n\ninterface EnumOptionsTyped extends EnumOptionsBase {\n  /**\n   * 枚举类型的延迟求值函数，传入 `() => EnumObject` 以避免循环依赖。\n   * 内部使用 `@IsEnum()` 进行校验。\n   */\n  type: () => object\n  values?: never\n}\n\ninterface EnumOptionsValues extends EnumOptionsBase {\n  /**\n   * 枚举的允许值数组。内部使用 `@IsIn()` 进行校验。\n   */\n  values: (string | number)[]\n  type?: never\n}\n\ntype EnumOptions = EnumOptionsTyped | EnumOptionsValues\n\n/**\n * 枚举属性装饰器，支持 TypeScript enum 对象和值数组两种方式。\n *\n * @example\n * ```typescript\n * enum Status { Active = 'active', Inactive = 'inactive' }\n *\n * class MyModel {\n *   // 方式1: 传入 TS enum\n *   @Enum({ type: () => Status })\n *   status: Status\n *\n *   // 方式2: 传入值数组\n *   @Enum({ values: ['low', 'medium', 'high'] })\n *   priority: string\n * }\n * ```\n */\nexport function Enum(options: EnumOptions): PropertyDecorator {\n  return (target: object, propertyKey: string | symbol) => {\n    if (!('constructor' in target)) {\n      throw new TypeError('@Enum decorator can only be applied to class properties.')\n    }\n\n    const optional = options.optional ?? false\n\n    if ('type' in options && options.type) {\n      const enumObj = options.type()\n      IsEnum(enumObj)(target, propertyKey)\n    } else if ('values' in options && options.values) {\n      IsIn(options.values)(target, propertyKey)\n    }\n\n    if (optional) {\n      IsOptional()(target, propertyKey)\n    }\n\n    const enumValues = options.type ? Object.values(options.type()) : options.values\n    const schema: ApiPropertyOptions = {\n      enum: enumValues,\n      ...(options.enumName ? { enumName: options.enumName } : {}),\n      ...options.schema,\n    }\n\n    if (optional) {\n      ApiPropertyOptional(schema)(target, propertyKey)\n    } else {\n      ApiProperty(schema)(target, propertyKey)\n    }\n\n    ModelRegister.addProperty(target.constructor as Class<any>, propertyKey, {\n      kind: 'enum',\n      optional,\n      lazy: options.lazy ?? false,\n      ...(options.type ? { type: options.type } : {}),\n      ...('values' in options && options.values ? { values: options.values } : {}),\n      ...(options.enumName ? { enumName: options.enumName } : {}),\n    })\n  }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { helper, Reference, Utils } from '@mikro-orm/core'\nimport { Class } from 'type-fest'\nimport { isScalarClass } from '../class-validator/is-scalar'\nimport { ModelRegister } from './model.register'\n\ntype WrappedEntity = ReturnType<typeof helper>\n\n/**\n * 序列化 Model 实例为普通 JSON 对象。\n *\n * 处理三种情况：\n * 1. Ref<Entity> 包装 → populated 时完整序列化，否则返回主键\n * 2. 普通 MikroORM 实体（find 返回的）→ toJSON() 完整序列化\n * 3. 非 MikroORM 值 → 按 @Model 注册的属性元数据递归序列化\n */\nexport function serializeModel(value: any, classRef: Class<any>): any {\n  if (value == null) return value\n\n  // 检查是否为 MikroORM 实体/Ref\n  const wrapped: WrappedEntity | undefined = typeof value === 'object' ? helper(value) : undefined\n\n  if (wrapped) {\n    // Ref<Entity>：populated 的完整序列化，否则只返回主键\n    if (Reference.isReference(value)) {\n      return wrapped.__populated\n        ? wrapped.toJSON()\n        : serializePrimaryKey(wrapped)\n    }\n\n    // 普通实体（find 返回的）→ 完整序列化\n    return wrapped.toJSON()\n  }\n\n  // 非 MikroORM 值 → @Model 属性遍历或原样返回\n  return serializeModelProperties(value, classRef)\n}\n\n/**\n * 按 @Model 注册的属性元数据遍历并序列化对象的各个属性。\n *\n * 根据属性的 kind 分别处理：\n * - composite: 递归调用 serializeModel\n * - list: 对数组中每个元素递归序列化（标量类型除外）\n * - dictionary: 对字典中每个值递归序列化（标量类型除外）\n * - 其他: 原样返回\n *\n * 若 classRef 未注册为 Model，则直接返回原始值。\n */\nfunction serializeModelProperties(value: any, classRef: Class<any>): any {\n  if (!ModelRegister.isModel(classRef)) return value\n\n  const modelMeta = ModelRegister.getModel(classRef)!\n  const registeredKeys = new Set<string | symbol>(modelMeta.propertyKeys)\n  const result: Record<string | symbol, any> = {}\n\n  for (const key of registeredKeys) {\n    const meta = ModelRegister.getProperty(classRef, key)\n    if (!meta || !(key in value)) continue\n    const val = value[key]\n\n    if (meta.kind === 'composite') {\n      result[key] = serializeModel(val, meta.type())\n    } else if (meta.kind === 'list' && meta.type && !isScalarClass(meta.type)) {\n      const type = meta.type()\n      result[key] = Array.isArray(val) ? val.map((i: any) => serializeModel(i, type)) : val\n    } else if (meta.kind === 'dictionary' && meta.type && !isScalarClass(meta.type)) {\n      const type = meta.type()\n      if (val instanceof Map) {\n        result[key] = Object.fromEntries(Array.from(val.entries()).map(([k, v]) => [k, serializeModel(v, type)]))\n      } else {\n        result[key] = val != null ? Object.fromEntries(Object.entries(val).map(([k, v]) => [k, serializeModel(v, type)])) : val\n      }\n    } else {\n      result[key] = val\n    }\n  }\n\n  const ap = modelMeta.additionalProperties\n  if (ap) {\n    for (const key of Object.keys(value)) {\n      if (registeredKeys.has(key)) continue\n      const val = value[key]\n      if (typeof ap === 'function') {\n        result[key] = serializeModel(val, ap())\n      } else {\n        result[key] = val\n      }\n    }\n  }\n\n  return result\n}\n\n/**\n * 提取 PK 并根据 forceObject 格式化\n * 复刻 EntityTransformer.processEntity 的 PK 分支逻辑\n */\nfunction serializePrimaryKey(wrapped: WrappedEntity): any {\n  const pk = wrapped.getPrimaryKey()\n  const meta = wrapped.__meta\n  const platform = wrapped.__platform\n  const forceObject = wrapped.__config?.get('serialization')?.forceObject\n\n  if (forceObject) {\n    return Utils.primaryKeyToObject(meta, pk)\n  }\n\n  if (Utils.isPlainObject(pk)) {\n    return Utils.primaryKeyToObject(meta, pk)\n  }\n\n  return platform.normalizePrimaryKey(pk as any)\n}\n","export const OffsetPageSchema = {\n  type: 'object',\n  properties: {\n    limit: { type: 'number' },\n    offset: { type: 'number' },\n  },\n  required: ['limit', 'offset'],\n  additionalProperties: false,\n}\n","export const NextCursorPageSchema = {\n  type: 'object',\n  properties: {\n    after: { type: 'string' },\n    first: { type: 'number' },\n  },\n  required: ['first'],\n  additionalProperties: false,\n}\n","export const PreviousCursorPageSchema = {\n  type: 'object',\n  properties: {\n    before: { type: 'string' },\n    last: { type: 'number' },\n  },\n  required: ['last'],\n  additionalProperties: false,\n}\n","import { ArgumentMetadata, BadRequestException, Injectable, InternalServerErrorException, PipeTransform } from '@nestjs/common'\n\n\ninterface BukaPageQueryValidationPipeOptions {\n  mode?: 'cursor' | 'offset'\n  optional?: boolean\n}\n\nconst mixedOffsetAndCursorError = 'Invalid page query: cannot mix offset-based and cursor-based pagination parameters.'\nconst mixedNextAndLastCursorError = 'Invalid page query: cannot mix next and last cursor pagination parameters.'\n\n/**\n * 分页查询参数验证管道，校验并解析 query string 中的分页参数。\n *\n * 支持 offset 分页（`limit` + `offset`）和 cursor 分页（`after`/`before` + `first`/`last`），\n * 自动将字符串参数转换为数值类型。通常由 `@PageQuery()` 装饰器内部使用。\n *\n * @example\n * ```typescript\n * // 一般通过 @PageQuery() 装饰器间接使用\n * @Get()\n * findAll(@PageQuery('offset') page: { limit: number; offset: number }) {}\n * ```\n */\n@Injectable()\nexport class BukaPageQueryValidationPipe implements PipeTransform {\n  constructor(\n    private readonly options: BukaPageQueryValidationPipeOptions = { optional: false },\n  ) {}\n\n  transform(value: any, metadata: ArgumentMetadata): any {\n    if (metadata.type !== 'query') {\n      throw new InternalServerErrorException('BukaPageQueryValidationPipe can only be used to validate query parameters.')\n    }\n\n    if (!value.page) {\n      if (this.options.optional) {\n        return value\n      } else {\n        throw new BadRequestException('Missing required query parameter: page')\n      }\n    }\n\n    const mode = this.options.mode\n\n    if ((!mode || mode === 'offset') && ('limit' in value.page || 'offset' in value.page)) {\n      if ('after' in value.page || 'first' in value.page || 'before' in value.page || 'last' in value.page) {\n        throw new BadRequestException(mixedOffsetAndCursorError)\n      }\n\n      const limit = parseInt(value.page.limit, 10)\n      const offset = parseInt(value.page.offset, 10)\n\n      if (isNaN(limit) || limit <= 0) {\n        throw new BadRequestException('Invalid page query: limit must be a positive integer.')\n      }\n\n      if (isNaN(offset) || offset < 0) {\n        throw new BadRequestException('Invalid page query: offset must be a non-negative integer.')\n      }\n\n      return { page: { limit, offset } }\n    }\n\n    if (!mode || mode === 'cursor') {\n      if ('after' in value.page || 'first' in value.page) {\n        if ('limit' in value.page || 'offset' in value.page) {\n          throw new BadRequestException(mixedOffsetAndCursorError)\n        }\n\n        if ('before' in value.page || 'last' in value.page) {\n          throw new BadRequestException(mixedNextAndLastCursorError)\n        }\n\n        const after: string = value.page.after ?? ''\n        const first = parseInt(value.page.first, 10)\n\n        if (value.page.after !== undefined && typeof value.page.after !== 'string') {\n          throw new BadRequestException('Invalid page query: after must be a string.')\n        }\n\n        if (isNaN(first) || first <= 0) {\n          throw new BadRequestException('Invalid page query: first must be a positive integer.')\n        }\n\n        return { page: { after, first } }\n      }\n\n      if ('before' in value.page || 'last' in value.page) {\n        if ('limit' in value.page || 'offset' in value.page) {\n          throw new BadRequestException(mixedOffsetAndCursorError)\n        }\n\n        if ('after' in value.page || 'first' in value.page) {\n          throw new BadRequestException(mixedNextAndLastCursorError)\n        }\n\n        const before: string = value.page.before ?? ''\n        const last = parseInt(value.page.last, 10)\n\n        if (value.page.before !== undefined && typeof value.page.before !== 'string') {\n          throw new BadRequestException('Invalid page query: before must be a string.')\n        }\n\n        if (isNaN(last) || last <= 0) {\n          throw new BadRequestException('Invalid page query: last must be a positive integer.')\n        }\n\n        return { page: { before, last } }\n      }\n    }\n\n    throw new BadRequestException('Invalid page query: missing pagination parameters.')\n  }\n}\n","import * as R from 'ramda'\nimport { Type } from '@nestjs/common'\nimport { getMetadataStorage } from 'class-validator'\nimport { ValidationMetadata } from 'class-validator/types/metadata/ValidationMetadata'\n\n\nexport function hasMetadata(source: Type<any>, propertyKey: string): boolean {\n  const items = getMetadata(source, propertyKey)\n  return items.length > 0\n}\n\nexport function getMetadata(source: Type<any>): Map<string, ValidationMetadata[]>\nexport function getMetadata(source: Type<any>, propertyKey: string): ValidationMetadata[]\nexport function getMetadata(source: Type<any>, propertyKey?: string): Map<string, ValidationMetadata[]> | ValidationMetadata[] | undefined {\n  const metadataStorage = getMetadataStorage()\n  const arr = metadataStorage.getTargetValidationMetadatas(source, null!, false, false)\n\n  if (!propertyKey) {\n    const grouped = R.groupBy(\n      (m) => m.propertyName,\n      arr,\n    )\n\n    const result = new Map<string, ValidationMetadata[]>()\n    for (const key in grouped) {\n      result.set(key, grouped[key] || [])\n    }\n\n    return result\n  }\n\n\n  return arr.filter((item) => item.propertyName === propertyKey)\n}\n\nexport function setMetadata(target: Type<any>, propertyKey: string, metadata: ValidationMetadata): void {\n  const metadataStorage = getMetadataStorage()\n  metadataStorage.addValidationMetadata({\n    ...metadata,\n    target: target,\n    propertyName: propertyKey,\n  })\n}\n\nexport function copyMetadata(\n  { source, propertyKey: sourcePropertyKey }: { source: Type<any>; propertyKey: string },\n  { target, propertyKey: targetPropertyKey }: { target: Type<any>; propertyKey: string },\n): void {\n  const metadataList = getMetadata(source, sourcePropertyKey)\n  for (const metadata of metadataList) {\n    setMetadata(target, targetPropertyKey, metadata)\n  }\n}\n\n","/**\n * This file contains utility functions for working with `@Transform()` decorator of class-transformer.\n */\n\nimport { Type } from '@nestjs/common'\nimport * as classTransformer from 'class-transformer/cjs/storage'\n\n\n// ---------------------------------- @Transform() ----------------------------------\n\nexport function cloneTransformMetadata(target: Function, source: Type<unknown>, keys: string[]): void {\n  for (const propertyKey of keys) {\n    const transformerMetadata = getTransformMetadata(source, propertyKey)\n    if (transformerMetadata) {\n      for (const metadata of transformerMetadata) {\n        setTransformMetadata(target as Type<any>, propertyKey, metadata)\n      }\n    }\n  }\n}\n\nexport function copyTransformMetadata(\n  { source, propertyKey: sourcePropertyKey }: { source: Type<any>; propertyKey: string },\n  { target, propertyKey: targetPropertyKey }: { target: Type<any>; propertyKey: string },\n): void {\n  const metadataList = getTransformMetadata(source, sourcePropertyKey)\n  if (!metadataList) return\n\n  for (const metadata of metadataList) {\n    setTransformMetadata(target, targetPropertyKey, metadata)\n  }\n}\n\n\ninterface TransformMetadata {\n  target: Function\n  propertyName: string\n  transformFn: (params: any) => any\n  options?: Record<string, any>\n}\n\nexport function getTransformMetadata(classRef: Type<any>): Map<string, TransformMetadata[]> | undefined\nexport function getTransformMetadata(classRef: Type<any>, prop: string): TransformMetadata[] | undefined\nexport function getTransformMetadata(classRef: Type<any>, prop?: string): Map<string, TransformMetadata[]> | TransformMetadata[] | undefined {\n  const metadataStorage = classTransformer.defaultMetadataStorage\n  const metadataMap = metadataStorage['_transformMetadatas']\n\n  const classMetadata: Map<string, TransformMetadata[]> | undefined = metadataMap.get(classRef)\n  if (!classMetadata) return\n\n  if (!prop) return classMetadata\n\n  const propertyMetadata = classMetadata.get(prop)\n  if (!propertyMetadata) return undefined\n  return Array.isArray(propertyMetadata) ? propertyMetadata : [propertyMetadata]\n}\n\n\nexport function setTransformMetadata(classRef: Type<any>, prop: string, metadata: TransformMetadata): void {\n  const meta = { ...metadata, target: classRef, propertyName: prop }\n\n  const metadataStorage = classTransformer.defaultMetadataStorage\n  const metadataMap = metadataStorage['_transformMetadatas']\n\n\n  if (metadataMap.has(classRef)) {\n    const classMetadata = metadataMap.get(classRef)\n    const propertyMetadata = classMetadata.get(prop)\n\n    if (propertyMetadata) {\n      classMetadata.set(prop, propertyMetadata.concat(meta))\n    } else {\n      classMetadata.set(prop, [meta])\n    }\n  } else {\n    metadataMap.set(classRef, new Map([[prop, [meta]]]))\n  }\n}\n\n\nexport function hasTransformMetadata(classRef: Type<any>, prop: string): boolean {\n  const metadata = getTransformMetadata(classRef, prop)\n  return !!metadata && metadata.length > 0\n}\n\n// ---------------------------------- @Type() ----------------------------------\n\n/**\n * Get the metadata of `@Type()` decorator of class-transformer.\n */\nexport function getTypeMetadata(classRef: Type<any>, prop: any): any | undefined {\n  const metadataStorage = classTransformer.defaultMetadataStorage\n  const metadataMap = metadataStorage['_typeMetadatas']\n\n  let parentClassRef = classRef\n\n  while (parentClassRef && parentClassRef !== Object) {\n    const classMetadata = metadataMap.get(parentClassRef)\n    if (classMetadata) {\n      const value = classMetadata.get(prop)\n      if (value) return value\n    }\n\n    parentClassRef = Object.getPrototypeOf(parentClassRef)\n  }\n}\n\nexport function setTypeMetadata(classRef: Type<any>, prop: any, metadata: any): void {\n  const meta = { ...metadata, target: classRef, propertyName: prop }\n\n  const metadataStorage = classTransformer.defaultMetadataStorage\n  const metadataMap = metadataStorage['_typeMetadatas']\n\n  metadataMap.set(classRef, meta)\n}\n\nexport function cloneTypeMetadata(target: Type<any>, source: Type<any>, keys: string[]): void {\n  for (const propertyKey of keys) {\n    const metadata = getTypeMetadata(source, propertyKey)\n    if (metadata) setTypeMetadata(target, propertyKey, metadata)\n  }\n}\n","export type FilterQueryOperator = 'eq' | 'ne' | 'lt' | 'gt' | 'lte' | 'gte' | 'in' | 'nin' | 'some' | 'every' | 'none'\n\n\nexport const FilterQueryOperatorsMetadataKey = 'buka:filter-query-operators'\n\n/**\n * 指定属性在 `FilterQueryType` 中支持的过滤操作符。\n *\n * 如果未使用此装饰器，`FilterQueryType` 将使用默认操作符集合。\n *\n * @param operators - 允许的操作符数组\n *\n * @example\n * ```typescript\n * @Model()\n * class User {\n *   @FilterQueryOperators(['eq', 'ne', 'in'])\n *   @Property()\n *   status: string\n * }\n * ```\n */\nexport function FilterQueryOperators(operators: FilterQueryOperator[]): PropertyDecorator {\n  if (!operators || operators.length === 0) {\n    throw new TypeError('FilterQueryOperators: operators array must not be empty')\n  }\n\n  return function FilterQueryOperatorsDecorator(target: object, propertyKey: string | symbol): void {\n    Reflect.defineMetadata(FilterQueryOperatorsMetadataKey, operators, target, propertyKey)\n  }\n}\n\nexport function getFilterQueryOperators(target: object, propertyKey: string | symbol): readonly FilterQueryOperator[] {\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n  return Reflect.getMetadata(FilterQueryOperatorsMetadataKey, target, propertyKey)\n}\n","import { Class } from 'type-fest'\nimport { FilterQueryOperator, getFilterQueryOperators } from '../decorators'\n\n\nconst FilterQueryCollectionOperators: readonly FilterQueryOperator[] = ['some', 'every', 'none'] as const\n\n\nexport function getCollectionOperators(target: Class<any>, propertyKey: string | symbol): readonly FilterQueryOperator[] {\n  const operators = getFilterQueryOperators(target.prototype, propertyKey)\n  if (!operators) return FilterQueryCollectionOperators\n\n  return operators.filter((op) => FilterQueryCollectionOperators.includes(op))\n}\n","import { Class } from 'type-fest'\nimport { FilterQueryOperator, getFilterQueryOperators } from '../decorators'\n\n\nconst FilterQueryPropertyOperators: readonly FilterQueryOperator[] = ['eq', 'ne', 'lt', 'gt', 'lte', 'gte', 'in', 'nin'] as const\n\n\nexport function getPropertyOperators(target: Class<any>, propertyKey: string | symbol): readonly FilterQueryOperator[] {\n  const operators = getFilterQueryOperators(target.prototype, propertyKey)\n  if (!operators) return FilterQueryPropertyOperators\n\n  return operators.filter((op) => FilterQueryPropertyOperators.includes(op))\n}\n\n","// 内联自 @nestjs/common/utils/shared.utils\n// 避免 deep import 触发 ERR_PACKAGE_PATH_NOT_EXPORTED\n\nexport function isFunction(value: unknown): value is Function {\n  return typeof value === 'function'\n}\n\nexport function isString(value: unknown): value is string {\n  return typeof value === 'string'\n}\n","// 内联自 @nestjs/swagger 内部模块\n// 避免 deep import 触发 ERR_PACKAGE_PATH_NOT_EXPORTED\n\nimport { Type } from '@nestjs/common'\nimport { isFunction, isString } from './nestjs-common'\n\n/**\n * 模拟 @nestjs/swagger 的 DECORATORS 常量。\n *\n * `@nestjs/swagger` 的类型声明（`index.d.ts`）未导出 `DECORATORS`，\n * 仅在运行时可用。为避免 `ts(2305)` 错误，直接内联其常量值。\n */\nexport const DECORATORS = {\n  API_MODEL_PROPERTIES: 'swagger/apiModelProperties',\n  API_MODEL_PROPERTIES_ARRAY: 'swagger/apiModelPropertiesArray',\n} as const\n\n// 来自 @nestjs/swagger/dist/plugin/plugin-constants\n// @nestjs/swagger Plugin 在编译时注入的静态方法名\nexport const METADATA_FACTORY_NAME = '_OPENAPI_METADATA_FACTORY'\n\n\n// 内联自 @nestjs/swagger/dist/interfaces/schema-object-metadata.interface\nexport type SchemaObjectMetadata = {\n  type?: Type<unknown> | Function | [Function] | Record<string, any> | 'array' | 'string' | 'number' | 'boolean' | 'integer' | 'file' | 'null'\n  required?: boolean\n  isArray?: boolean\n  name?: string\n  pattern?: string | RegExp\n  enum?: any[] | Record<string, any> | (() => any[] | Record<string, any>)\n  enumName?: string\n  enumSchema?: Record<string, any>\n  properties?: Record<string, SchemaObjectMetadata>\n  additionalProperties?: Record<string, any> | boolean\n  selfRequired?: boolean\n  [key: string]: any\n}\n\n// 内联自 @nestjs/swagger/dist/services/model-properties-accessor\nexport function getModelProperties(prototype: Type<unknown>): string[] {\n  const properties: string[]\n    = Reflect.getMetadata(DECORATORS.API_MODEL_PROPERTIES_ARRAY, prototype) || []\n  return properties\n    .filter(isString)\n    .filter((key) => key.charAt(0) === ':' && !isFunction(prototype[key]))\n    .map((key) => key.slice(1))\n}\n\n// 内联自 @nestjs/swagger/dist/type-helpers/mapped-types.utils\nexport function clonePluginMetadataFactory(\n  target: Type<unknown>,\n  parent: Type<unknown>,\n  transformFn: (metadata: Record<string, any>) => Record<string, any> = (x) => x,\n): void {\n  let targetMetadata: Record<string, any> = {}\n\n  do {\n    if (!parent.constructor) {\n      return\n    }\n    if (!parent.constructor[METADATA_FACTORY_NAME]) {\n      continue\n    }\n    const parentMetadata = parent.constructor[METADATA_FACTORY_NAME]()\n    targetMetadata = { ...parentMetadata, ...targetMetadata }\n  } while (\n    (parent = Reflect.getPrototypeOf(parent) as Type<unknown>)\n    && parent !== Object.prototype\n    && parent\n  )\n\n  targetMetadata = transformFn(targetMetadata)\n\n  if (target[METADATA_FACTORY_NAME]) {\n    const originalFactory = target[METADATA_FACTORY_NAME] as () => Record<string, any>\n    target[METADATA_FACTORY_NAME] = (): Record<string, any> => ({\n      ...originalFactory(),\n      ...targetMetadata,\n    })\n  } else {\n    target[METADATA_FACTORY_NAME] = (): Record<string, any> => targetMetadata\n  }\n}\n\n// 内联自 @nestjs/swagger/dist/utils/is-built-in-type.util\nconst BUILT_IN_TYPES = [String, Boolean, Number, Object, Array]\n\nexport function isBuiltInType(type: Type<unknown> | Function | string): boolean {\n  return isFunction(type) && BUILT_IN_TYPES.some((item) => item === type)\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport * as R from 'ramda'\nimport { Type } from '@nestjs/common'\nimport { ApiProperty } from '@nestjs/swagger'\nimport { isFunction } from './internals/nestjs-common'\nimport type { SchemaObjectMetadata } from './internals/nestjs-swagger'\nimport {\n  METADATA_FACTORY_NAME,\n  DECORATORS,\n  getModelProperties,\n  clonePluginMetadataFactory,\n  isBuiltInType,\n} from './internals/nestjs-swagger'\n\nexport type { SchemaObjectMetadata }\n\n/**\n * 克隆 @nestjs/swagger Plugin 添加的元数据\n */\n// export const cloneSwaggerPluginMetadataFactory = clonePluginMetadataFactory\n\nexport function cloneMetadata(target: Function, source: Type<unknown>, keys: string[]): void {\n  clonePluginMetadataFactory(\n    target as Type<unknown>,\n    source.prototype,\n    (metadata: Record<string, any>) => R.pick(keys, metadata),\n  )\n\n  for (const propertyKey of keys) {\n    const metadata = getMetadataOfDecorator(source, propertyKey)\n    if (metadata) {\n      ApiProperty(metadata as any)(target.prototype, propertyKey)\n    }\n  }\n}\n\n/**\n * 获取 @ApiProperty 添加的 Metadata\n */\nexport function getMetadataOfDecorator(classRef: Type<any>): Record<string, SchemaObjectMetadata>\nexport function getMetadataOfDecorator(classRef: Type<any>, propertyKey: string): SchemaObjectMetadata | undefined\nexport function getMetadataOfDecorator(classRef: Type<any>, propertyKey?: string): SchemaObjectMetadata | undefined | Record<string, SchemaObjectMetadata> {\n  if (propertyKey) {\n    return Reflect.getMetadata(DECORATORS.API_MODEL_PROPERTIES, classRef.prototype, propertyKey)\n  }\n\n  const props = getModelProperties(classRef.prototype)\n\n  return R.fromPairs(\n    props.map((prop) => [\n      prop,\n      Reflect.getMetadata(DECORATORS.API_MODEL_PROPERTIES, classRef.prototype, prop),\n    ]),\n  )\n}\n\n/**\n * 获取 @nestjs/swagger Plugin 添加的 Schema\n */\n\nfunction getMetadataOfPlugin(classRef: Type<any>): Record<string, SchemaObjectMetadata>\nfunction getMetadataOfPlugin(classRef: Type<any>, propertyKey: string): SchemaObjectMetadata | undefined\nfunction getMetadataOfPlugin(classRef: Type<any>, propertyKey?: string): SchemaObjectMetadata | undefined | Record<string, SchemaObjectMetadata> {\n  const propsInPlugin = typeof classRef[METADATA_FACTORY_NAME] === 'function' ? classRef[METADATA_FACTORY_NAME]() : {}\n\n  if (propertyKey) return propsInPlugin[propertyKey]\n  return propsInPlugin\n}\n\n/**\n * Get all metadata of @ApiProperty() defined on the class.\n *\n * 可以利用这个函数，遍历 Dto/Entity 上定义的所有属性，而不需要去实例化一个对象\n */\nexport function getMetadata(classRef: Type<any>): Record<string, SchemaObjectMetadata>\nexport function getMetadata(classRef: Type<any>, propertyKey: string): SchemaObjectMetadata | undefined\nexport function getMetadata(classRef: Type<any>, propertyKey?: string): SchemaObjectMetadata | Record<string, SchemaObjectMetadata> {\n  const propsInDecorator = getMetadataOfDecorator(classRef)\n  const propsInPlugin = getMetadataOfPlugin(classRef)\n\n  const metadataMap = R.mergeRight(propsInPlugin, propsInDecorator)\n  if (propertyKey) return metadataMap[propertyKey]\n  return metadataMap\n}\n\n/**\n * Set @ApiProperty() to all properties of the class.\n */\nexport function overridePluginMetadata(classRef: Type<any>, props: Record<string, SchemaObjectMetadata>): void {\n  classRef[METADATA_FACTORY_NAME] = () => props\n}\n\n\nexport function getMetadataType(metadata: SchemaObjectMetadata): string | Function {\n  if (isFunction(metadata.type) && metadata.type.name === 'type') {\n    return getMetadataType((<any>metadata.type)())\n  } else if (isFunction(metadata.type) && isBuiltInType(metadata.type)) {\n    return metadata.type.name.toLowerCase()\n  }\n\n  return metadata.type as (string | Function)\n}\n\n/**\n * 判断 type 是否是 lazy type function\n */\nexport function isLazyTypeFunc(\n  type: any,\n): type is { type: Function } & Function {\n  return isFunction(type) && type.name == 'type'\n}\n","import * as R from 'ramda'\nimport { getSchemaPath } from '@nestjs/swagger'\nimport { Class } from 'type-fest'\nimport * as NestjsSwaggerUtils from '~/utils/nestjs-swagger-utils'\n\n\nfunction scalarType(type: Class<any> | string | typeof String | typeof Number | typeof Boolean): any {\n  if (typeof type === 'string') return { type: type as any }\n  if (type === String) return { type: 'string' }\n  if (type === Number) return { type: 'number' }\n  if (type === Boolean) return { type: 'boolean' }\n\n  return {\n    $ref: getSchemaPath(type),\n  }\n}\n\nexport function swaggerMetadataToJsonSchema(metadata: NestjsSwaggerUtils.SchemaObjectMetadata): any {\n  if ('enumName' in metadata && metadata.enumName) {\n    return { $ref: getSchemaPath(metadata.enumName) }\n  }\n\n  const base = R.omit(['type', 'required', 'isArray', 'name'], metadata)\n\n  let itemSchema: any\n  if (NestjsSwaggerUtils.isLazyTypeFunc(metadata.type)) {\n    itemSchema = { ...base, ...scalarType(metadata.type()) }\n  } else {\n    itemSchema = { ...base, ...scalarType(metadata.type as any) }\n  }\n\n  if (metadata.isArray) {\n    return { type: 'array', items: itemSchema }\n  }\n\n  return itemSchema\n}\n","\nimport { ApiPropertyOptions } from '@nestjs/swagger'\nimport { Class } from 'type-fest'\nimport * as NestjsSwaggerUtils from '~/utils/nestjs-swagger-utils'\nimport { getPropertyOperators, getCollectionOperators, swaggerMetadataToJsonSchema } from './utils'\nimport { SchemaObject } from '~/swagger-patcher/swagger-patcher'\nimport { ModelRegister } from '../../decorators'\nimport { isScalarClass } from '../../decorators/class-validator/is-scalar'\n\n\n/**\n * 为单个标量属性生成 filter 操作符的 Swagger schema。\n *\n * 生成 `{ type: 'object', properties: { eq: ..., ne: ..., in: [...], ... } }` 结构，\n * 值类型取自原始 Swagger metadata（如 `{ type: 'string' }`），无 metadata 时兜底为 `string`。\n */\nfunction getScalarOperatorSchema(\n  classRef: Class<any>,\n  propertyKey: string,\n): SchemaObject {\n  const propertySchema: SchemaObject = {\n    type: 'object',\n    properties: {},\n    additionalProperties: false,\n  }\n\n  const originalSchema = NestjsSwaggerUtils.getMetadata(classRef, propertyKey)\n  const operators = getPropertyOperators(classRef, propertyKey)\n\n  for (const operator of operators) {\n    if (['in', 'nin'].includes(operator)) {\n      propertySchema.properties![operator] = {\n        type: 'array',\n        items: originalSchema\n          ? swaggerMetadataToJsonSchema(originalSchema)\n          : { type: 'string' },\n      }\n    } else {\n      propertySchema.properties![operator] = originalSchema\n        ? swaggerMetadataToJsonSchema(originalSchema)\n        : { type: 'string' }\n    }\n  }\n\n  return propertySchema\n}\n\n\nfunction getObjectSchema(classRef: Class<any>, visited: WeakSet<Class<any>> = new WeakSet()): SchemaObject {\n  const properties = {}\n  const requiredKeys: string[] = []\n  const schema: SchemaObject = {\n    type: 'object',\n    properties,\n    additionalProperties: false,\n  }\n\n  visited.add(classRef)\n\n  for (const propertyKey of ModelRegister.getModelPropertyKeys(classRef)) {\n    if (typeof propertyKey !== 'string') continue\n\n    const propertyMetadata = ModelRegister.getProperty(classRef, propertyKey)\n    const isOptional = !!propertyMetadata?.optional\n\n    if (!isOptional) requiredKeys.push(propertyKey)\n\n    if (propertyMetadata?.kind === 'scalar' || propertyMetadata?.kind === 'enum') {\n      // ── 标量 / 枚举 → eq, ne, lt, gt, lte, gte, in, nin ──\n      properties[propertyKey] = getScalarOperatorSchema(classRef, propertyKey)\n    } else if (propertyMetadata?.kind === 'composite' && propertyMetadata.type) {\n      // ── composite（含 m:1 关系和 JSONB 对象）──\n      const compositeType = propertyMetadata.type() as Class<any>\n\n      if (ModelRegister.isModel(compositeType) && !visited.has(compositeType)) {\n        // @Model() 类型 → 递归展开嵌套 filter schema\n        properties[propertyKey] = getObjectSchema(compositeType, visited)\n      } else {\n        // 非 @Model() 类型 → 回退标量操作符\n        properties[propertyKey] = getScalarOperatorSchema(classRef, propertyKey)\n      }\n    } else if (propertyMetadata?.kind === 'list' || propertyMetadata?.kind === 'dictionary') {\n      // ── list / dictionary（含 1:m/m:n 关系和 JSONB 数组/字典）──\n      // some, every, none 包裹元素 filter schema\n      let elementSchema: SchemaObject\n\n      if (propertyMetadata.type && !isScalarClass(propertyMetadata.type)) {\n        const elementType = propertyMetadata.type() as Class<any>\n\n        if (ModelRegister.isModel(elementType) && !visited.has(elementType)) {\n          elementSchema = getObjectSchema(elementType, visited)\n        } else {\n          // 非 @Model() 元素 → 标量操作符\n          elementSchema = getScalarOperatorSchema(classRef, propertyKey)\n        }\n      } else {\n        // 无 type 或标量元素 → 标量操作符（兜底 string）\n        elementSchema = getScalarOperatorSchema(classRef, propertyKey)\n      }\n\n      const operators = getCollectionOperators(classRef, propertyKey)\n      const wrapper: SchemaObject = {\n        type: 'object',\n        properties: {},\n        additionalProperties: false,\n      }\n\n      for (const operator of operators) {\n        wrapper.properties![operator] = elementSchema\n      }\n      properties[propertyKey] = wrapper\n    } else {\n      // ── 未知类型兜底 → 标量操作符 ──\n      properties[propertyKey] = getScalarOperatorSchema(classRef, propertyKey)\n    }\n  }\n\n  if (requiredKeys.length > 0) {\n    schema.required = requiredKeys\n  }\n\n  return schema\n}\n\nexport function getFilterQuerySchema(classRef: Class<any>): ApiPropertyOptions {\n  return {\n    ...getObjectSchema(classRef),\n    description: `Filter query for ${classRef.name}`,\n  } as ApiPropertyOptions\n}\n","import * as R from 'ramda'\nimport type { IObjectOperator, IFilterQuery } from './types'\nimport * as ClassValidatorUtils from '~/utils/class-validator-utils'\nimport * as ClassTransformerUtils from '~/utils/class-transformer-utils'\nimport { getFilterQueryOperators } from './decorators'\nimport { Composite, HasAnyKey, ModelRegister } from '~/modules/core/decorators'\nimport { isScalarClass } from '~/modules/core/decorators/class-validator/is-scalar'\nimport { ArrayMinSize, IS_OPTIONAL, IsArray, IsOptional } from 'class-validator'\nimport { Class } from 'type-fest'\nimport { getPropertyOperators, getCollectionOperators } from './utils'\nimport { getFilterQuerySchema } from './get-filter-query-schema'\n\n\nfunction createFilterQueryPropertyClassRef(classRef: Class<any>, propertyKey: string): Class<any> {\n  const propertyClass = class FilterQueryPropertyClass {}\n  ModelRegister.addModel(propertyClass)\n\n  const propertyMetadata = ModelRegister.getProperty(classRef, propertyKey)\n\n  const validationMetadataList = ClassValidatorUtils.getMetadata(classRef, propertyKey)\n    // 跳过 IsOptional，手动添加\n    // 这不仅仅是为了避免重复添加\n    // 也是因为 IsOptional 复制无法被复制\n    // 详见 https://github.com/typestack/class-validator/blob/develop/src/decorator/common/IsOptional.ts\n    .filter((metadata) => metadata.name !== IS_OPTIONAL)\n\n  const transformerMetadataList = ClassTransformerUtils.getTransformMetadata(classRef, propertyKey) || []\n  const operators = getPropertyOperators(classRef, propertyKey)\n\n  for (const operator of operators) {\n    if (['in', 'nin'].includes(operator)) {\n      // in, nin — 需要构造完整的 ListPropertyMetadata\n      const listMetadata = propertyMetadata\n        && (propertyMetadata.kind === 'composite' || propertyMetadata.kind === 'list' || propertyMetadata.kind === 'dictionary')\n        && propertyMetadata.type\n        && !isScalarClass(propertyMetadata.type)\n        ? { kind: 'list' as const, optional: true, lazy: false, type: propertyMetadata.type }\n        : { kind: 'scalar' as const, optional: true, lazy: false }\n      ModelRegister.addProperty(propertyClass, operator, listMetadata)\n\n      IsArray()(propertyClass.prototype, operator)\n      ArrayMinSize(1)(propertyClass.prototype, operator)\n\n      for (const metadata of validationMetadataList) {\n        ClassValidatorUtils.setMetadata(propertyClass, operator, { ...metadata, each: true })\n      }\n\n      for (const metadata of transformerMetadataList) {\n        // 需要将 transformFn 修改为数组版本\n        const transformFn = metadata.transformFn\n        ClassTransformerUtils.setTransformMetadata(propertyClass, operator, {\n          ...metadata,\n          transformFn: function FilterQueryPropertyTransformer(params) {\n            if (Array.isArray(params.value)) {\n              // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n              return params.value.map((v, i, arr) => transformFn({ ...params, value: v, key: i, obj: arr }))\n            }\n\n            // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n            return params.value\n          },\n        })\n      }\n    } else {\n      // eq, ne, lt, gt, lte, gte — scalar 操作符\n      ModelRegister.addProperty(propertyClass, operator, { kind: 'scalar', optional: true, lazy: false })\n\n      for (const metadata of validationMetadataList) {\n        ClassValidatorUtils.setMetadata(propertyClass, operator, metadata)\n      }\n\n      for (const metadata of transformerMetadataList) {\n        ClassTransformerUtils.setTransformMetadata(propertyClass, operator, metadata)\n      }\n    }\n\n    IsOptional()(propertyClass.prototype, operator)\n  }\n\n  return propertyClass\n}\n\nfunction createFilterQueryObjectClassRef(classRef: Class<any>, visited: WeakSet<Class<any>> = new WeakSet()): Class<any> {\n  class FilterQueryObjectClass {}\n  ModelRegister.addModel(FilterQueryObjectClass)\n\n  visited.add(classRef)\n\n  for (const propertyKey of ModelRegister.getModelPropertyKeys(classRef)) {\n    if (typeof propertyKey !== 'string') continue\n\n    const propertyMetadata = ModelRegister.getProperty(classRef, propertyKey)\n    const isCollection = propertyMetadata?.association?.kind === '1:m' || propertyMetadata?.association?.kind === 'm:n'\n    const isRelation = !!propertyMetadata?.association\n    const isOptional = !!propertyMetadata?.optional\n\n    if (isRelation) {\n      const relationClassRef = propertyMetadata.association!.type() as Class<any>\n\n      // 防止循环引用导致无限递归（如 LessonAttendance → lesson → Lesson → attendances → LessonAttendance）\n      if (visited.has(relationClassRef)) {\n        continue\n      }\n\n      if (isCollection) {\n        // some, none, every\n        class FilterQueryCollectionClass {}\n        ModelRegister.addModel(FilterQueryCollectionClass)\n\n        const sub = createFilterQueryObjectClassRef(relationClassRef, visited)\n        const operators = getCollectionOperators(classRef, propertyKey)\n\n        for (const operator of operators) {\n          Composite({ type: () => sub, optional: true })(FilterQueryCollectionClass.prototype, operator)\n          if (!isOptional) {\n            HasAnyKey(getFilterQueryOperators(classRef, propertyKey))(FilterQueryCollectionClass.prototype, operator)\n          }\n\n          IsOptional()(FilterQueryCollectionClass.prototype, operator)\n        }\n        Composite({ type: () => FilterQueryCollectionClass, optional: isOptional })(FilterQueryObjectClass.prototype, propertyKey)\n        if (!isOptional) HasAnyKey(operators)(FilterQueryObjectClass.prototype, propertyKey)\n      } else {\n        const sub = createFilterQueryObjectClassRef(relationClassRef, visited)\n        Composite({ type: () => sub, optional: isOptional })(FilterQueryObjectClass.prototype, propertyKey)\n      }\n    } else if (propertyMetadata?.kind === 'composite' && propertyMetadata?.type) {\n      const compositeType = propertyMetadata.type() as Class<any>\n\n      if (ModelRegister.isModel(compositeType) && !visited.has(compositeType)) {\n        // @Composite + @Model 类型 → 递归展开为嵌套 filter 对象\n        const sub = createFilterQueryObjectClassRef(compositeType, visited)\n        Composite({ type: () => sub, optional: isOptional })(FilterQueryObjectClass.prototype, propertyKey)\n        if (!isOptional) {\n          HasAnyKey(\n            getFilterQueryOperators(classRef, propertyKey) || getPropertyOperators(classRef, propertyKey),\n          )(FilterQueryObjectClass.prototype, propertyKey)\n        }\n      } else {\n        // 非 @Model 类型 → 回退标量操作符\n        const propertyClass = createFilterQueryPropertyClassRef(classRef, propertyKey)\n        Composite({ type: () => propertyClass, optional: isOptional })(FilterQueryObjectClass.prototype, propertyKey)\n        if (!isOptional) {\n          HasAnyKey(getPropertyOperators(classRef, propertyKey))(FilterQueryObjectClass.prototype, propertyKey)\n        }\n      }\n    } else {\n      // eq, ne, lt, gt, lte, gte, in, nin\n      const propertyClass = createFilterQueryPropertyClassRef(classRef, propertyKey)\n\n      Composite({\n        type: () => propertyClass,\n        optional: isOptional,\n      })(FilterQueryObjectClass.prototype, propertyKey)\n\n      if (!isOptional) {\n        const operators = getPropertyOperators(classRef, propertyKey)\n        HasAnyKey(operators)(FilterQueryObjectClass.prototype, propertyKey)\n      }\n    }\n  }\n\n  return FilterQueryObjectClass\n}\n\n/**\n * 根据模型类自动生成带过滤操作符的查询 DTO 类型。\n *\n * 为模型的每个属性生成 `eq`、`ne`、`lt`、`gt`、`in` 等操作符，\n * 可通过 `@FilterQueryOperators()` 自定义每个属性支持的操作符。\n *\n * @param classRef - 使用 `@Model()` 标注的类引用\n * @returns 包含 `filter` 属性的查询 DTO 类\n *\n * @example\n * ```typescript\n * @Model()\n * class User {\n *   @Property()\n *   name: string\n *\n *   @Property()\n *   age: number\n * }\n *\n * const UserFilterQuery = FilterQueryType(User)\n * // 生成类型: { filter: { name?: { eq?: string, in?: string[], ... }, age?: { gt?: number, ... } } }\n * ```\n */\nexport function FilterQueryType<T>(classRef: Class<T>): Class<IFilterQuery<T>> {\n  if (!ModelRegister.isModel(classRef)) {\n    throw new TypeError('FilterQueryType only accepts a class annotated with @Model().')\n  }\n\n  const FilterQueryObjectClass = createFilterQueryObjectClassRef(classRef)\n\n  const properties = ModelRegister.getProperties(FilterQueryObjectClass)\n  const isRequired = R.any((p) => !p.optional, properties)\n\n  class FilterQueryClass {\n    filter!: IObjectOperator<T>\n  }\n\n  ModelRegister.addModel(FilterQueryObjectClass)\n  Composite({\n    type: () => FilterQueryObjectClass,\n    optional: !isRequired,\n    schema: getFilterQuerySchema(classRef),\n  })(FilterQueryClass.prototype, 'filter')\n\n  return FilterQueryClass\n}\n","import { ArgumentMetadata, BadRequestException, InternalServerErrorException, PipeTransform } from '@nestjs/common'\nimport { plainToInstance } from 'class-transformer'\nimport { validate } from 'class-validator'\nimport { Class } from 'type-fest'\nimport { FilterQueryType } from '../converters/filter-query-type/filter-query-type'\nimport type { IFilterQuery } from '../converters/filter-query-type/types'\n\n\nconst KNOWN_OPERATORS = new Set([\n  'eq',\n  'ne',\n  'lt',\n  'gt',\n  'lte',\n  'gte',\n  'in',\n  'nin',\n  'some',\n  'every',\n  'none',\n])\n\n\nfunction addOperatorPrefix(obj: unknown): unknown {\n  if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) return obj\n\n  const result: Record<string, unknown> = {}\n  for (const [key, value] of Object.entries(obj)) {\n    const newKey = KNOWN_OPERATORS.has(key) ? `$${key}` : key\n    result[newKey] = addOperatorPrefix(value)\n  }\n\n  return result\n}\n\n\n/**\n * FilterQuery 转换管道，负责将 HTTP 请求中的无前缀操作符（`eq`、`ne`）\n * 转换为内部的 `$eq`、`$ne` 格式，并对数据进行 class-validator 验证。\n *\n * 通常由 `@FilterQuery()` 装饰器内部使用。\n */\nexport class FilterQueryTransformPipe<T> implements PipeTransform {\n  private readonly FilterQueryClass: Class<IFilterQuery<T>>\n\n  constructor(classRef: Class<T>) {\n    this.FilterQueryClass = FilterQueryType(classRef)\n  }\n\n  async transform(value: unknown, metadata: ArgumentMetadata): Promise<IFilterQuery<T>> {\n    if (metadata.type !== 'query') {\n      throw new InternalServerErrorException('FilterQueryTransformPipe can only be used to validate query parameters.')\n    }\n\n    const raw = value as Record<string, unknown> | undefined\n\n    let filter = raw?.filter\n    if (filter === undefined || filter === null) {\n      return { filter: undefined } as IFilterQuery<T>\n    }\n\n    if (typeof filter === 'string') {\n      try {\n        filter = JSON.parse(filter) as unknown\n      } catch {\n        throw new BadRequestException('Invalid filter query: malformed JSON.')\n      }\n    }\n\n    // 使用 eq 格式验证\n    const instance = plainToInstance(this.FilterQueryClass, { filter })\n    const errors = await validate(instance, { whitelist: true, forbidNonWhitelisted: true })\n\n    if (errors.length > 0) {\n      throw new BadRequestException(errors)\n    }\n\n    // 验证通过后，转换 eq → $eq\n    const prefixed = addOperatorPrefix(filter)\n    return { filter: prefixed } as IFilterQuery<T>\n  }\n}\n","import { BadRequestException, PipeTransform } from '@nestjs/common'\nimport { validate as uuidValidate, version as uuidVersion } from 'uuid'\n\n\n/**\n * UUIDv7 格式验证管道，校验输入字符串是否为合法的 UUIDv7。\n *\n * 若校验失败则抛出 `BadRequestException`。\n *\n * @example\n * ```typescript\n * @Controller('users')\n * class UserController {\n *   @Get(':id')\n *   findOne(@Param('id', ParseUUIDv7Pipe) id: string) {\n *     return this.userService.findOne(id)\n *   }\n * }\n * ```\n */\nexport class ParseUUIDv7Pipe implements PipeTransform<string, string> {\n  transform(value: string): string {\n    if (!uuidValidate(value) || uuidVersion(value) !== 7) {\n      throw new BadRequestException('Validation failed (UUIDv7 is expected)')\n    }\n\n    return value\n  }\n}\n","import { Query } from '@nestjs/common'\nimport { ApiQuery } from '@nestjs/swagger'\nimport { NextCursorPageSchema, OffsetPageSchema, PreviousCursorPageSchema } from '../constants'\nimport { BukaPageQueryValidationPipe } from '../pipes'\n\n\n/**\n * 分页查询参数装饰器，从 query string 中提取并验证分页参数。\n *\n * 支持 offset 分页（`limit` + `offset`）和 cursor 分页（`after`/`before` + `first`/`last`）两种模式。\n * 未指定 `mode` 时同时支持两种分页方式。\n *\n * @param mode - 分页模式：`'cursor'` 或 `'offset'`，不传则同时支持两种\n *\n * @example\n * ```typescript\n * @Controller('users')\n * class UserController {\n *   @Get()\n *   findAll(@PageQuery('offset') page: { limit: number; offset: number }) {\n *     return this.userService.findAll(page)\n *   }\n * }\n * ```\n */\nexport function PageQuery(mode?: 'cursor' | 'offset'): ParameterDecorator {\n  return (target: object, propertyKey: string | symbol | undefined, parameterIndex: number) => {\n    if (!propertyKey) {\n      throw new Error('@PageQuery decorator can only be used on method parameters.')\n    }\n\n    const descriptor = Reflect.getOwnPropertyDescriptor(target, propertyKey)!\n\n    if (mode === 'offset') {\n      ApiQuery({\n        name: 'page',\n        required: true,\n        schema: OffsetPageSchema,\n      })(target, propertyKey, descriptor)\n    } else if (mode === 'cursor') {\n      ApiQuery({\n        name: 'page',\n        required: true,\n        schema: {\n          oneOf: [\n            NextCursorPageSchema,\n            PreviousCursorPageSchema,\n          ],\n        },\n      })(target, propertyKey, descriptor)\n    } else {\n      ApiQuery({\n        name: 'page',\n        required: true,\n        schema: {\n          oneOf: [\n            OffsetPageSchema,\n            NextCursorPageSchema,\n            PreviousCursorPageSchema,\n          ],\n        },\n      })(target, propertyKey, descriptor)\n    }\n\n    Query(new BukaPageQueryValidationPipe({ mode }))(target, propertyKey, parameterIndex)\n  }\n}\n\n/**\n * 可选的分页查询参数装饰器，与 `@PageQuery()` 相同但允许不传分页参数。\n *\n * @param mode - 分页模式：`'cursor'` 或 `'offset'`，不传则同时支持两种\n *\n * @example\n * ```typescript\n * @Controller('users')\n * class UserController {\n *   @Get()\n *   findAll(@OptionalPageQuery('offset') page?: { limit: number; offset: number }) {\n *     return this.userService.findAll(page)\n *   }\n * }\n * ```\n */\nexport function OptionalPageQuery(mode?: 'cursor' | 'offset'): ParameterDecorator {\n  return (target: object, propertyKey: string | symbol | undefined, parameterIndex: number) => {\n    if (!propertyKey) {\n      throw new Error('@PageQuery decorator can only be used on method parameters.')\n    }\n\n    const descriptor = Reflect.getOwnPropertyDescriptor(target, propertyKey)!\n\n    if (mode === 'offset') {\n      ApiQuery({\n        name: 'page',\n        required: false,\n        schema: OffsetPageSchema,\n      })(target, propertyKey, descriptor)\n    } else if (mode === 'cursor') {\n      ApiQuery({\n        name: 'page',\n        required: false,\n        schema: {\n          oneOf: [\n            NextCursorPageSchema,\n            PreviousCursorPageSchema,\n          ],\n        },\n      })(target, propertyKey, descriptor)\n    } else {\n      ApiQuery({\n        name: 'page',\n        required: false,\n        schema: {\n          oneOf: [\n            OffsetPageSchema,\n            NextCursorPageSchema,\n            PreviousCursorPageSchema,\n          ],\n        },\n      })(target, propertyKey, descriptor)\n    }\n\n    Query(new BukaPageQueryValidationPipe({ mode, optional: true }))(target, propertyKey, parameterIndex)\n  }\n}\n","import { Query } from '@nestjs/common'\nimport { ApiQuery } from '@nestjs/swagger'\nimport { Class } from 'type-fest'\nimport { getFilterQuerySchema } from '../converters/filter-query-type/get-filter-query-schema'\nimport { SchemaObject } from '~/swagger-patcher/swagger-patcher'\nimport { FilterQueryTransformPipe } from '../pipes/filter-query-validation.pipe'\n\n\n/**\n * 过滤查询参数装饰器，从 query string 中提取 `filter` 参数，\n * 将前端传入的无前缀操作符（`eq`、`ne`、`gte`）自动转换为后端的 `$eq`、`$ne`、`$gte` 格式。\n *\n * @param classRef - 使用 `@Model()` 标注的类引用\n *\n * @example\n * ```typescript\n * @Controller('users')\n * class UserController {\n *   @Get()\n *   findAll(@FilterQuery(User) query: IFilterQuery<User>) {\n *     // HTTP: ?filter={\"name\":{\"eq\":\"Alice\"}}\n *     // query.filter?.name?.$eq === 'Alice'\n *   }\n * }\n * ```\n */\nexport function FilterQuery<T>(classRef: Class<T>): ParameterDecorator {\n  return (target: object, propertyKey: string | symbol | undefined, parameterIndex: number) => {\n    if (!propertyKey) {\n      throw new Error('@FilterQuery decorator can only be used on method parameters.')\n    }\n\n    const descriptor = Reflect.getOwnPropertyDescriptor(target, propertyKey)!\n\n    ApiQuery({\n      name: 'filter',\n      required: false,\n      schema: getFilterQuerySchema(classRef) as SchemaObject,\n    })(target, propertyKey, descriptor)\n\n    Query(new FilterQueryTransformPipe(classRef))(target, propertyKey, parameterIndex)\n  }\n}\n","import { Property as MikroOrmProperty } from '@mikro-orm/decorators/legacy'\nimport type { PropertyOptions } from '@mikro-orm/core'\nimport { IsString, MaxLength } from 'class-validator'\nimport { applyDecorators } from '@nestjs/common'\nimport { Property } from '~/modules/core/decorators'\nimport { SchemaObject } from '~/swagger-patcher/swagger-patcher'\n\n\ninterface VarcharOptions<T extends object> extends Omit<PropertyOptions<T>, 'type' | 'columnType'> {\n  length?: number\n  example?: SchemaObject['example']\n  examples?: SchemaObject['examples']\n}\n\n/**\n * VARCHAR 列装饰器，声明一个可变长度字符串列。\n *\n * 自动应用 MikroORM `@Property({ type: 'varchar' })`、`@IsString()` 验证及 Swagger schema。\n *\n * @param options - 列配置，支持 `length` 限制最大长度\n *\n * @example\n * ```typescript\n * @Entity()\n * class User {\n *   @Varchar({ length: 255, comment: '用户名' })\n *   name: string\n * }\n * ```\n */\nexport function Varchar<T extends object>(options?: VarcharOptions<T>): (target: T, propertyName: string) => void {\n  return (target, propertyKey) => {\n    MikroOrmProperty({ ...options, type: 'varchar' })(target, propertyKey)\n\n    applyDecorators(\n      ...(options?.length ? [IsString(), MaxLength(options.length)] : [IsString()]),\n      Property({\n        optional: options?.nullable,\n        lazy: options?.lazy,\n        schema: {\n          type: 'string',\n          maxLength: options?.length,\n          description: options?.comment,\n          example: options?.example,\n          examples: options?.examples,\n          required: !options?.nullable,\n        },\n      }),\n    )(target, propertyKey)\n  }\n}\n","import { Property as MikroOrmProperty } from '@mikro-orm/decorators/legacy'\nimport type { PropertyOptions } from '@mikro-orm/core'\nimport { IsString, MaxLength, MinLength } from 'class-validator'\nimport { applyDecorators } from '@nestjs/common'\nimport { Property } from '~/modules/core/decorators'\nimport { SchemaObject } from '~/swagger-patcher/swagger-patcher'\n\n\ninterface CharOptions<T extends object> extends Omit<PropertyOptions<T>, 'type' | 'columnType'> {\n  length?: number\n  example?: SchemaObject['example']\n  examples?: SchemaObject['examples']\n}\n\n/**\n * CHAR 列装饰器，声明一个固定长度字符串列。\n *\n * 自动应用 MikroORM `@Property({ type: 'char' })`、`@IsString()` 验证及 Swagger schema。\n * 当指定 `length` 时，同时校验最小和最大长度。\n *\n * @param options - 列配置，支持 `length` 指定固定长度\n *\n * @example\n * ```typescript\n * @Entity()\n * class Country {\n *   @Char({ length: 2, comment: '国家代码' })\n *   code: string\n * }\n * ```\n */\nexport function Char<T extends object>(options?: CharOptions<T>): (target: T, propertyName: string) => void {\n  return (target, propertyKey) => {\n    MikroOrmProperty({ ...options, type: 'char' })(target, propertyKey)\n\n    applyDecorators(\n      ...(options?.length ? [IsString(), MaxLength(options.length), MinLength(options.length)] : [IsString()]),\n      Property({\n        optional: options?.nullable,\n        lazy: options?.lazy,\n        schema: {\n          type: 'string',\n          maxLength: options?.length,\n          minLength: options?.length,\n          description: options?.comment,\n          example: options?.example,\n          examples: options?.examples,\n          required: !options?.nullable,\n        },\n      }),\n    )(target, propertyKey)\n  }\n}\n","import { Property as MikroOrmProperty } from '@mikro-orm/decorators/legacy'\nimport type { PropertyOptions } from '@mikro-orm/core'\nimport { IsString } from 'class-validator'\nimport { applyDecorators } from '@nestjs/common'\nimport { Property } from '~/modules/core/decorators'\nimport { SchemaObject } from '~/swagger-patcher/swagger-patcher'\n\n\ninterface TextOptions<T extends object> extends Omit<PropertyOptions<T>, 'type' | 'columnType'> {\n  example?: SchemaObject['example']\n  examples?: SchemaObject['examples']\n}\n\n/**\n * TEXT 列装饰器，声明一个无长度限制的文本列。\n *\n * 自动应用 MikroORM `@Property({ type: 'text' })`、`@IsString()` 验证及 Swagger schema。\n *\n * @param options - 列配置\n *\n * @example\n * ```typescript\n * @Entity()\n * class Article {\n *   @Text({ comment: '文章内容' })\n *   content: string\n * }\n * ```\n */\nexport function Text<T extends object>(options?: TextOptions<T>): (target: T, propertyName: string) => void {\n  return (target, propertyKey) => {\n    MikroOrmProperty({ ...options, type: 'text' })(target, propertyKey)\n\n    applyDecorators(\n      IsString(),\n      Property({\n        optional: options?.nullable,\n        lazy: options?.lazy,\n        schema: {\n          type: 'string',\n          description: options?.comment,\n          example: options?.example,\n          examples: options?.examples,\n          required: !options?.nullable,\n        },\n      }),\n    )(target, propertyKey)\n  }\n}\n","import { Property as MikroOrmProperty } from '@mikro-orm/decorators/legacy'\nimport type { PropertyOptions } from '@mikro-orm/core'\nimport { IsCurrency } from 'class-validator'\nimport { applyDecorators } from '@nestjs/common'\nimport { Property } from '~/modules/core/decorators'\nimport { SchemaObject } from '~/swagger-patcher/swagger-patcher'\n\n\ninterface MoneyOptions<T extends object> extends Omit<PropertyOptions<T>, 'type' | 'columnType'> {\n  example?: SchemaObject['example']\n  examples?: SchemaObject['examples']\n}\n\n/**\n * MONEY 列装饰器，声明一个货币类型列。\n *\n * 自动应用 MikroORM `@Property({ type: 'money' })`、`@IsCurrency()` 验证及 Swagger schema（format: money）。\n *\n * @param options - 列配置\n *\n * @example\n * ```typescript\n * @Entity()\n * class Order {\n *   @Money({ comment: '订单金额' })\n *   totalAmount: string\n * }\n * ```\n */\nexport function Money<T extends object>(options?: MoneyOptions<T>): (target: T, propertyName: string) => void {\n  return (target, propertyKey) => {\n    MikroOrmProperty({ ...options, type: 'money' })(target, propertyKey)\n\n    applyDecorators(\n      IsCurrency({ symbol: '' }),\n      Property({\n        optional: options?.nullable,\n        lazy: options?.lazy,\n        schema: {\n          type: 'string',\n          format: 'money',\n          description: options?.comment,\n          example: options?.example,\n          examples: options?.examples,\n          required: !options?.nullable,\n        },\n      }),\n    )(target, propertyKey)\n  }\n}\n","import { Property as MikroOrmProperty } from '@mikro-orm/decorators/legacy'\nimport type { PropertyOptions } from '@mikro-orm/core'\nimport { IsInt } from 'class-validator'\nimport { applyDecorators } from '@nestjs/common'\nimport { Property } from '~/modules/core/decorators'\nimport { SchemaObject } from '~/swagger-patcher/swagger-patcher'\n\n\ninterface IntOptions<T extends object> extends Omit<PropertyOptions<T>, 'type' | 'columnType'> {\n  example?: SchemaObject['example']\n  examples?: SchemaObject['examples']\n}\n\n/**\n * INT 列装饰器，声明一个 32 位整数列。\n *\n * 自动应用 MikroORM `@Property({ type: 'int' })`、`@IsInt()` 验证及 Swagger schema。\n *\n * @param options - 列配置，支持 `unsigned` 设置无符号\n *\n * @example\n * ```typescript\n * @Entity()\n * class Product {\n *   @Int({ unsigned: true, comment: '库存数量' })\n *   stock: number\n * }\n * ```\n */\nexport function Int<T extends object>(options?: IntOptions<T>): (target: T, propertyName: string) => void {\n  return (target, propertyKey) => {\n    MikroOrmProperty({ ...options, type: 'int' })(target, propertyKey)\n\n    applyDecorators(\n      IsInt(),\n      Property({\n        optional: options?.nullable,\n        lazy: options?.lazy,\n        schema: {\n          type: 'integer',\n          minimum: options?.unsigned ? 0 : -2147483647,\n          maximum: options?.unsigned ? 4294967295 : 2147483647,\n          description: options?.comment,\n          example: options?.example,\n          examples: options?.examples,\n          required: !options?.nullable,\n        },\n      }),\n    )(target, propertyKey)\n  }\n}\n","import { Property as MikroOrmProperty } from '@mikro-orm/decorators/legacy'\nimport type { PropertyOptions } from '@mikro-orm/core'\nimport { IsInt } from 'class-validator'\nimport { applyDecorators } from '@nestjs/common'\nimport { Property } from '~/modules/core/decorators'\nimport { SchemaObject } from '~/swagger-patcher/swagger-patcher'\n\n\ninterface SmallintOptions<T extends object> extends Omit<PropertyOptions<T>, 'type' | 'columnType'> {\n  example?: SchemaObject['example']\n  examples?: SchemaObject['examples']\n}\n\n/**\n * SMALLINT 列装饰器，声明一个 16 位整数列。\n *\n * 自动应用 MikroORM `@Property({ type: 'smallint' })`、`@IsInt()` 验证及 Swagger schema。\n *\n * @param options - 列配置，支持 `unsigned` 设置无符号\n *\n * @example\n * ```typescript\n * @Entity()\n * class Config {\n *   @Smallint({ comment: '排序权重' })\n *   weight: number\n * }\n * ```\n */\nexport function Smallint<T extends object>(options?: SmallintOptions<T>): (target: T, propertyName: string) => void {\n  return (target, propertyKey) => {\n    MikroOrmProperty({ ...options, type: 'smallint' })(target, propertyKey)\n\n    applyDecorators(\n      IsInt(),\n      Property({\n        optional: options?.nullable,\n        lazy: options?.lazy,\n        schema: {\n          type: 'integer',\n          minimum: options?.unsigned ? 0 : -32768,\n          maximum: options?.unsigned ? 65535 : 32767,\n          description: options?.comment,\n          example: options?.example,\n          examples: options?.examples,\n          required: !options?.nullable,\n        },\n      }),\n    )(target, propertyKey)\n  }\n}\n","import { Property as MikroOrmProperty } from '@mikro-orm/decorators/legacy'\nimport type { PropertyOptions } from '@mikro-orm/core'\nimport { IsInt } from 'class-validator'\nimport { applyDecorators } from '@nestjs/common'\nimport { Property } from '~/modules/core/decorators'\nimport { SchemaObject } from '~/swagger-patcher/swagger-patcher'\n\n\ninterface TinyintOptions<T extends object> extends Omit<PropertyOptions<T>, 'type' | 'columnType'> {\n  example?: SchemaObject['example']\n  examples?: SchemaObject['examples']\n}\n\n/**\n * TINYINT 列装饰器，声明一个 8 位整数列。\n *\n * 自动应用 MikroORM `@Property({ type: 'tinyint' })`、`@IsInt()` 验证及 Swagger schema。\n *\n * @param options - 列配置，支持 `unsigned` 设置无符号\n *\n * @example\n * ```typescript\n * @Entity()\n * class Config {\n *   @Tinyint({ unsigned: true, comment: '状态码' })\n *   status: number\n * }\n * ```\n */\nexport function Tinyint<T extends object>(options?: TinyintOptions<T>): (target: T, propertyName: string) => void {\n  return (target, propertyKey) => {\n    MikroOrmProperty({ ...options, type: 'tinyint' })(target, propertyKey)\n\n    applyDecorators(\n      IsInt(),\n      Property({\n        optional: options?.nullable,\n        lazy: options?.lazy,\n        schema: {\n          type: 'integer',\n          minimum: options?.unsigned ? 0 : -128,\n          maximum: options?.unsigned ? 255 : 127,\n          description: options?.comment,\n          example: options?.example,\n          examples: options?.examples,\n          required: !options?.nullable,\n        },\n      }),\n    )(target, propertyKey)\n  }\n}\n","import { BigIntType } from '@mikro-orm/core'\nimport { Property as MikroOrmProperty } from '@mikro-orm/decorators/legacy'\nimport type { PropertyOptions } from '@mikro-orm/core'\nimport { IsInt, IsString } from 'class-validator'\nimport { applyDecorators } from '@nestjs/common'\nimport { Property } from '~/modules/core/decorators'\nimport { SchemaObject } from '~/swagger-patcher/swagger-patcher'\n\n\ninterface BigintOptions<T extends object> extends Omit<PropertyOptions<T>, 'type' | 'columnType'> {\n  mode?: 'string' | 'number'\n  example?: SchemaObject['example']\n  examples?: SchemaObject['examples']\n}\n\n/**\n * BIGINT 列装饰器，声明一个 64 位整数列。\n *\n * 默认以字符串模式（`mode: 'string'`）映射以避免 JavaScript 精度丢失，\n * 可设置 `mode: 'number'` 以数值模式映射。\n *\n * @param options - 列配置，支持 `mode` 切换映射模式\n *\n * @example\n * ```typescript\n * @Entity()\n * class Order {\n *   @Bigint({ comment: '订单号' })\n *   orderNo: string\n *\n *   @Bigint({ mode: 'number' })\n *   amount: number\n * }\n * ```\n */\nexport function Bigint<T extends object>(options?: BigintOptions<T>): (target: T, propertyName: string) => void {\n  return (target, propertyKey) => {\n    const mode = options?.mode ?? 'string'\n\n    MikroOrmProperty({\n      ...options,\n      type: mode === 'string' ? new BigIntType('string') : new BigIntType('number'),\n    })(target, propertyKey)\n\n    const isStringMode = mode === 'string'\n\n    applyDecorators(\n      ...(isStringMode ? [IsString()] : [IsInt()]),\n      Property({\n        optional: options?.nullable,\n        lazy: options?.lazy,\n        schema: isStringMode\n          ? {\n            type: 'string',\n            description: options?.comment,\n            example: options?.example,\n            examples: options?.examples,\n            required: !options?.nullable,\n          }\n          : {\n            type: 'integer',\n            format: 'int64',\n            description: options?.comment,\n            example: options?.example,\n            examples: options?.examples,\n            required: !options?.nullable,\n          },\n      }),\n    )(target, propertyKey)\n  }\n}\n","import { Property as MikroOrmProperty } from '@mikro-orm/decorators/legacy'\nimport type { PropertyOptions } from '@mikro-orm/core'\nimport { IsNumber } from 'class-validator'\nimport { applyDecorators } from '@nestjs/common'\nimport { Property } from '~/modules/core/decorators'\nimport { SchemaObject } from '~/swagger-patcher/swagger-patcher'\n\n\ninterface DoubleOptions<T extends object> extends Omit<PropertyOptions<T>, 'type' | 'columnType'> {\n  example?: SchemaObject['example']\n  examples?: SchemaObject['examples']\n}\n\n/**\n * DOUBLE 列装饰器，声明一个双精度浮点数列。\n *\n * 自动应用 MikroORM `@Property({ type: 'double' })`、`@IsNumber()` 验证及 Swagger schema。\n *\n * @param options - 列配置\n *\n * @example\n * ```typescript\n * @Entity()\n * class Location {\n *   @Double({ comment: '经度' })\n *   longitude: number\n * }\n * ```\n */\nexport function Double<T extends object>(options?: DoubleOptions<T>): (target: T, propertyName: string) => void {\n  return (target, propertyKey) => {\n    MikroOrmProperty({ ...options, type: 'double' })(target, propertyKey)\n\n    applyDecorators(\n      IsNumber(),\n      Property({\n        optional: options?.nullable,\n        lazy: options?.lazy,\n        schema: {\n          type: 'number',\n          format: 'double',\n          minimum: options?.unsigned ? 0 : undefined,\n          description: options?.comment,\n          example: options?.example,\n          examples: options?.examples,\n          required: !options?.nullable,\n        },\n      }),\n    )(target, propertyKey)\n  }\n}\n","import { Property as MikroOrmProperty } from '@mikro-orm/decorators/legacy'\nimport type { PropertyOptions } from '@mikro-orm/core'\nimport { IsNumber } from 'class-validator'\nimport { applyDecorators } from '@nestjs/common'\nimport { Property } from '~/modules/core/decorators'\nimport { SchemaObject } from '~/swagger-patcher/swagger-patcher'\n\n\ninterface NumericOptions<T extends object> extends Omit<PropertyOptions<T>, 'type' | 'columnType'> {\n  example?: SchemaObject['example']\n  examples?: SchemaObject['examples']\n}\n\n/**\n * NUMERIC 列装饰器，声明一个精确数值列，适用于需要精确小数的场景（如金额计算）。\n *\n * 自动应用 MikroORM `@Property({ type: 'numeric' })`、`@IsNumber()` 验证及 Swagger schema。\n * 可通过 `precision` 和 `scale` 控制精度。\n *\n * @param options - 列配置\n *\n * @example\n * ```typescript\n * @Entity()\n * class Product {\n *   @Numeric({ precision: 10, scale: 2, comment: '价格' })\n *   price: number\n * }\n * ```\n */\nexport function Numeric<T extends object>(options?: NumericOptions<T>): (target: T, propertyName: string) => void {\n  return (target, propertyKey) => {\n    MikroOrmProperty({ ...options, type: 'numeric' })(target, propertyKey)\n\n    applyDecorators(\n      options?.scale ? IsNumber({ maxDecimalPlaces: options.scale }) : IsNumber(),\n      Property({\n        optional: options?.nullable,\n        lazy: options?.lazy,\n        schema: {\n          type: 'number',\n          format: 'double',\n          minimum: options?.unsigned ? 0 : undefined,\n          description: options?.comment,\n          example: options?.example,\n          examples: options?.examples,\n          required: !options?.nullable,\n        },\n      }),\n    )(target, propertyKey)\n  }\n}\n","import { Property as MikroOrmProperty } from '@mikro-orm/decorators/legacy'\nimport type { PropertyOptions } from '@mikro-orm/core'\nimport { IsBoolean } from 'class-validator'\nimport { applyDecorators } from '@nestjs/common'\nimport { Property } from '~/modules/core/decorators'\nimport { SchemaObject } from '~/swagger-patcher/swagger-patcher'\n\n\ninterface BooleanOptions<T extends object> extends Omit<PropertyOptions<T>, 'type' | 'columnType'> {\n  example?: SchemaObject['example']\n  examples?: SchemaObject['examples']\n}\n\n/**\n * BOOLEAN 列装饰器，声明一个布尔类型列。\n *\n * 自动应用 MikroORM `@Property({ type: 'boolean' })`、`@IsBoolean()` 验证及 Swagger schema。\n *\n * @param options - 列配置\n *\n * @example\n * ```typescript\n * @Entity()\n * class User {\n *   @Boolean({ comment: '是否激活' })\n *   isActive: boolean\n * }\n * ```\n */\nexport function Boolean<T extends object>(options?: BooleanOptions<T>): (target: T, propertyName: string) => void {\n  return (target, propertyKey) => {\n    MikroOrmProperty({ ...options, type: 'boolean' })(target, propertyKey)\n\n    applyDecorators(\n      IsBoolean(),\n      Property({\n        optional: options?.nullable,\n        lazy: options?.lazy,\n        schema: {\n          type: 'boolean',\n          description: options?.comment,\n          example: options?.example,\n          examples: options?.examples,\n          required: !options?.nullable,\n        },\n      }),\n    )(target, propertyKey)\n  }\n}\n","import { Property as MikroOrmProperty } from '@mikro-orm/decorators/legacy'\nimport type { PropertyOptions } from '@mikro-orm/core'\nimport { IsString } from 'class-validator'\nimport { applyDecorators } from '@nestjs/common'\nimport { Property } from '~/modules/core/decorators'\nimport { SchemaObject } from '~/swagger-patcher/swagger-patcher'\n\n\ninterface UuidOptions<T extends object> extends Omit<PropertyOptions<T>, 'type' | 'columnType'> {\n  example?: SchemaObject['example']\n  examples?: SchemaObject['examples']\n}\n\n/**\n * UUID 列装饰器，声明一个 UUID 类型列。\n *\n * 自动应用 MikroORM `@Property({ type: 'uuid' })`、`@IsString()` 验证及 Swagger schema（format: uuid）。\n *\n * @param options - 列配置\n *\n * @example\n * ```typescript\n * @Entity()\n * class User {\n *   @Uuid({ comment: '用户 ID' })\n *   id: string\n * }\n * ```\n */\nexport function Uuid<T extends object>(options?: UuidOptions<T>): (target: T, propertyName: string) => void {\n  return (target, propertyKey) => {\n    MikroOrmProperty({ ...options, type: 'uuid' })(target, propertyKey)\n\n    applyDecorators(\n      IsString(),\n      Property({\n        optional: options?.nullable,\n        lazy: options?.lazy,\n        schema: {\n          type: 'string',\n          format: 'uuid',\n          description: options?.comment,\n          example: options?.example,\n          examples: options?.examples,\n          required: !options?.nullable,\n        },\n      }),\n    )(target, propertyKey)\n  }\n}\n","import { Property as MikroOrmProperty } from '@mikro-orm/decorators/legacy'\nimport type { PropertyOptions } from '@mikro-orm/core'\nimport { IsISO8601 } from 'class-validator'\nimport { applyDecorators } from '@nestjs/common'\nimport { Property } from '~/modules/core/decorators'\nimport { SchemaObject } from '~/swagger-patcher/swagger-patcher'\n\n\ninterface TimestamptzOptions<T extends object> extends Omit<PropertyOptions<T>, 'type' | 'columnType'> {\n  example?: SchemaObject['example']\n  examples?: SchemaObject['examples']\n}\n\n/**\n * TIMESTAMPTZ 列装饰器，声明一个带时区的时间戳列。\n *\n * 自动应用 MikroORM `@Property({ type: 'timestamptz' })`、`@IsISO8601()` 验证及 Swagger schema（format: date-time）。\n *\n * @param options - 列配置\n *\n * @example\n * ```typescript\n * @Entity()\n * class User {\n *   @Timestamptz({ comment: '创建时间' })\n *   createdAt: string\n * }\n * ```\n */\nexport function Timestamptz<T extends object>(options?: TimestamptzOptions<T>): (target: T, propertyName: string) => void {\n  return (target, propertyKey) => {\n    MikroOrmProperty({ ...options, type: 'timestamptz' })(target, propertyKey)\n\n    applyDecorators(\n      IsISO8601(),\n      Property({\n        optional: options?.nullable,\n        lazy: options?.lazy,\n        schema: {\n          type: 'string',\n          format: 'date-time',\n          description: options?.comment,\n          example: options?.example,\n          examples: options?.examples,\n          required: !options?.nullable,\n        },\n      }),\n    )(target, propertyKey)\n  }\n}\n","import type { AnyEntity } from '@mikro-orm/core'\nimport { Enum as MikroOrmEnum } from '@mikro-orm/decorators/legacy'\nimport type { EnumOptions } from '@mikro-orm/core'\nimport { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger'\nimport { IsArray, IsDefined, IsOptional } from 'class-validator'\nimport { IsEnumColumn, ModelRegister, Property } from '~/modules/core/decorators'\nimport type { SchemaObject } from '~/swagger-patcher/swagger-patcher'\n\n\ninterface ColumnEnumOptions extends Omit<EnumOptions<AnyEntity>, 'type' | 'columnType'> {\n  enumName?: string\n  example?: SchemaObject['example']\n  examples?: SchemaObject['examples']\n}\n\n/**\n * 枚举列装饰器，声明一个枚举类型的数据库列。\n *\n * 自动应用 MikroORM `@Enum()` 及 Swagger schema，支持通过 `items` 指定枚举值。\n *\n * @param options - 列配置，必须通过 `items` 指定枚举值数组或返回枚举值的函数\n *\n * @example\n * ```typescript\n * enum Status { Active = 'active', Inactive = 'inactive' }\n *\n * @Entity()\n * class User {\n *   @Enum({ items: () => Status, enumName: 'Status', comment: '用户状态' })\n *   status: Status\n * }\n * ```\n */\nexport function Enum<T extends object>(options: ColumnEnumOptions): (target: T, propertyName: string) => void {\n  return (target, propertyKey) => {\n    MikroOrmEnum(options)(target, propertyKey)\n\n    const items = options.items as ((() => (string | number)[]) | (string | number)[])\n\n    if (options.array) {\n      IsArray()(target, propertyKey)\n      IsEnumColumn(items, { each: true })(target, propertyKey)\n\n      if (options.nullable) {\n        IsOptional()(target, propertyKey)\n      } else {\n        IsDefined()(target, propertyKey)\n      }\n\n      if (!options.lazy) {\n        const schema = {\n          description: options.comment,\n          enum: items,\n          isArray: true,\n          enumName: options.enumName,\n          example: options.example,\n          examples: options.examples,\n          required: !options.nullable,\n        }\n\n        if (options.nullable) {\n          ApiPropertyOptional(schema)(target, propertyKey)\n        } else {\n          ApiProperty(schema)(target, propertyKey)\n        }\n      }\n\n      ModelRegister.addProperty(target.constructor as { new(...args: any[]): T }, propertyKey, {\n        kind: 'enum',\n        optional: options.nullable ?? false,\n        lazy: options.lazy ?? false,\n        items,\n        enumName: options.enumName,\n        array: options.array,\n      })\n    } else {\n      Property({\n        optional: options.nullable,\n        lazy: options.lazy,\n        schema: {\n          description: options.comment,\n          enum: items,\n          enumName: options.enumName,\n          example: options.example,\n          examples: options.examples,\n          required: !options.nullable,\n        },\n      })(target, propertyKey)\n    }\n  }\n}\n","import { Property as MikroOrmProperty } from '@mikro-orm/decorators/legacy'\nimport type { PropertyOptions } from '@mikro-orm/core'\nimport { ApiHideProperty, ApiPropertyOptions } from '@nestjs/swagger'\nimport { Composite, Dictionary, List } from '~/modules/core/decorators'\nimport { isScalarClass, type ScalarClass } from '~/modules/core/decorators/class-validator/is-scalar'\nimport { Class } from 'type-fest'\n\n\ninterface JsonbOptionsBase<T extends object> extends Omit<PropertyOptions<T>, 'type' | 'columnType'> {\n  schema?: ApiPropertyOptions\n}\n\n/**\n * kind = 'composite'（默认）时，type 必须是 class 引用，不能是标量类型。\n */\ninterface JsonbOptionsComposite<T extends object> extends JsonbOptionsBase<T> {\n  type: () => Class<object>\n  kind?: 'composite'\n}\n\n/**\n * kind = 'list' | 'dictionary' 时，type 可以是 class 引用或标量类型（String / Number / Boolean）。\n */\ninterface JsonbOptionsListOrDict<T extends object> extends JsonbOptionsBase<T> {\n  type: (() => Class<object>) | ScalarClass\n  kind: 'list' | 'dictionary'\n}\n\ntype JsonbOptions<T extends object> = JsonbOptionsComposite<T> | JsonbOptionsListOrDict<T>\n\n/**\n * JSONB 列装饰器，声明一个 JSONB 类型的数据库列。\n *\n * 通过 `kind` 参数指定 JSON 数据的结构类型：`'composite'`（对象）、`'list'`（数组）或 `'dictionary'`（字典），\n * 自动应用对应的 `@Composite()`、`@List()` 或 `@Dictionary()` 装饰器。\n *\n * @param options - 列配置，必须通过 `type` 指定嵌套类引用\n *\n * @example\n * ```typescript\n * @Entity()\n * class User {\n *   @Jsonb({ type: () => ProfileDTO, comment: '用户资料' })\n *   profile: ProfileDTO\n *\n *   @Jsonb({ type: () => TagDTO, kind: 'list', comment: '标签列表' })\n *   tags: TagDTO[]\n * }\n * ```\n */\nexport function Jsonb<T extends object>(options: JsonbOptions<T>): (target: T, propertyName: string) => void {\n  const { type, kind = 'composite', schema, ...ormOptions } = options\n\n  return (target, propertyKey) => {\n    MikroOrmProperty({\n      ...ormOptions,\n      columnType: 'jsonb',\n      type: 'json',\n    })(target, propertyKey)\n\n    if (ormOptions.hidden) {\n      ApiHideProperty()(target, propertyKey)\n      return\n    }\n\n    const mergedSchema: ApiPropertyOptions = {\n      description: ormOptions.comment,\n      ...schema,\n    }\n\n    const decoratorOptions = {\n      type,\n      optional: ormOptions.nullable,\n      lazy: ormOptions.lazy,\n      schema: mergedSchema,\n    }\n\n    switch (kind) {\n      case 'list':\n        List(decoratorOptions)(target, propertyKey)\n        break\n      case 'dictionary':\n        Dictionary(decoratorOptions)(target, propertyKey)\n        break\n      default:\n        if (isScalarClass(type)) {\n          throw new TypeError(\n            `Jsonb with kind='composite' requires a class reference (() => Class), but got scalar type: ${type.name}`,\n          )\n        }\n        Composite({ ...decoratorOptions, type })(target, propertyKey)\n        break\n    }\n  }\n}\n","import { Property as MikroOrmProperty } from '@mikro-orm/decorators/legacy'\nimport { Class } from 'type-fest'\nimport { ModelRegister } from '~/modules/core/decorators'\n\n\ninterface TransientOptions {\n  type: string\n}\n\n/**\n * 瞬态属性装饰器，标记属性不持久化到数据库。\n *\n * 等效于 MikroORM `@Property({ persist: false })`，适用于仅在运行时使用的计算属性。\n * 同时向 ModelRegister 注册，以便类型系统正确识别该属性。\n *\n * @param options - 必须通过 `type` 指定属性类型（MikroORM v7 要求）\n *\n * @example\n * ```typescript\n * @Entity()\n * class User {\n *   @Transient({ type: 'string' })\n *   fullName: string\n * }\n * ```\n */\nexport function Transient<T extends object>(options: TransientOptions): (target: T, propertyName: string) => void {\n  return (target, propertyName) => {\n    ModelRegister.addProperty(target.constructor as Class<any>, propertyName, {\n      kind: 'scalar',\n      optional: false,\n      lazy: false,\n    })\n    return MikroOrmProperty({ persist: false, type: options.type })(target, propertyName)\n  }\n}\n","import { Embedded as MikroOrmEmbedded } from '@mikro-orm/decorators/legacy'\nimport type { EmbeddedOptions, EntityName } from '@mikro-orm/core'\nimport { Composite, List } from '~/modules/core/decorators'\nimport { Type } from '@nestjs/common'\n\n\n/**\n * Embedded 列装饰器，声明一个嵌入式（Embeddable）对象列。\n *\n * 将嵌入对象的属性平铺到父实体的表中。支持单个嵌入对象和嵌入数组（`array: true`）。\n *\n * @param type - 嵌入类型的引用函数，或包含配置的 options 对象\n * @param options - 可选的 MikroORM Embedded 配置\n *\n * @example\n * ```typescript\n * @Entity()\n * class User {\n *   @Embedded(() => Address)\n *   address: Address\n *\n *   @Embedded(() => Phone, { array: true })\n *   phones: Phone[]\n * }\n * ```\n */\nexport function Embedded<Owner extends object, Target>(\n  type?: EmbeddedOptions<Owner, Target> | (() => EntityName<Target> | EntityName<Target>[]),\n  options?: EmbeddedOptions<Owner, Target>,\n): (target: Owner, propertyName: string) => void {\n  return (target, propertyKey) => {\n    MikroOrmEmbedded(type, options)(target, propertyKey)\n\n    const resolvedOptions = typeof type === 'object' ? type : options\n    const resolvedType = typeof type === 'function' ? type : undefined\n\n    if (resolvedType) {\n      if (resolvedOptions?.array) {\n        List({\n          type: () => resolvedType() as Type,\n          optional: resolvedOptions?.nullable,\n          lazy: resolvedOptions?.lazy,\n        })(target, propertyKey)\n      } else {\n        Composite({\n          type: () => resolvedType() as Type,\n          optional: resolvedOptions?.nullable,\n          lazy: resolvedOptions?.lazy,\n        })(target, propertyKey)\n      }\n    }\n  }\n}\n","import { Varchar } from './varchar.column'\nimport { Char } from './char.column'\nimport { Text } from './text.column'\nimport { Money } from './money.column'\nimport { Int } from './int.column'\nimport { Smallint } from './smallint.column'\nimport { Tinyint } from './tinyint.column'\nimport { Bigint } from './bigint.column'\nimport { Double } from './double.column'\nimport { Numeric } from './numeric.column'\nimport { Boolean } from './boolean.column'\nimport { Uuid } from './uuid.column'\nimport { Timestamptz } from './timestamptz.column'\nimport { Enum } from './enum.column'\nimport { Jsonb } from './jsonb.column'\nimport { Transient } from './transient.column'\nimport { Embedded } from './embedded.column'\n\n\nexport const Column = {\n  Varchar,\n  Char,\n  Text,\n  Money,\n  Int,\n  Smallint,\n  Tinyint,\n  Bigint,\n  Double,\n  Numeric,\n  Boolean,\n  Uuid,\n  Timestamptz,\n  Enum,\n  Jsonb,\n  Transient,\n  Embedded,\n} as const\n","import { OptionalProps } from '@mikro-orm/core'\nimport { Column } from '../decorators/columns/index'\n\n\nexport abstract class TimestampedEntity<Optional = never> {\n  [OptionalProps]?: 'createdAt' | 'updatedAt' | Optional\n\n  @Column.Timestamptz({\n    onCreate: () => new Date(),\n    defaultRaw: 'CURRENT_TIMESTAMP',\n    comment: '创建时间',\n  })\n  createdAt: Date = new Date()\n\n  @Column.Timestamptz({\n    onUpdate: () => new Date(),\n    defaultRaw: 'CURRENT_TIMESTAMP',\n    comment: '更新时间',\n  })\n  updatedAt: Date = new Date()\n}\n","import { BigIntType, Config, PrimaryKeyProp } from '@mikro-orm/core'\nimport type { DefineConfig } from '@mikro-orm/core'\nimport { PrimaryKey } from '@mikro-orm/decorators/legacy'\nimport { IsNumberString } from 'class-validator'\nimport { TimestampedEntity } from './timestamped-entity.js'\nimport { Property } from '~/modules/core/decorators/index.js'\n\n\nexport abstract class LinearEntity<Optional = never> extends TimestampedEntity<Optional> {\n  [Config]?: DefineConfig<{ forceObject: true }>;\n  [PrimaryKeyProp]?: 'id'\n\n  @Property({\n    schema: {\n      type: 'string',\n      description: 'PK',\n      example: '1',\n      required: true,\n    },\n  })\n  @PrimaryKey({\n    type: new BigIntType('string'),\n    comment: '主键',\n  })\n  @IsNumberString()\n  id!: string\n}\n","import { Config, PrimaryKeyProp } from '@mikro-orm/core'\nimport type { DefineConfig } from '@mikro-orm/core'\nimport { PrimaryKey } from '@mikro-orm/decorators/legacy'\nimport { TimestampedEntity } from './timestamped-entity.js'\nimport { IsString, IsUUID } from 'class-validator'\nimport { v7 as uuidv7 } from 'uuid'\nimport { Property } from '~/modules/core/decorators/index.js'\n\n\nexport abstract class DiscreteEntity<Optional = never> extends TimestampedEntity<Optional> {\n  [Config]?: DefineConfig<{ forceObject: true }>;\n  [PrimaryKeyProp]?: 'id'\n\n  @IsUUID('7')\n  @Property({\n    schema: {\n      type: 'string',\n      description: 'PK',\n      example: '1',\n      required: true,\n    },\n  })\n  @PrimaryKey({\n    type: 'uuid',\n    comment: '主键',\n  })\n  @IsString()\n  id: string = uuidv7()\n}\n","import { Collection } from '@mikro-orm/core'\nimport { Class } from 'type-fest'\nimport { ModelRegister } from '~/modules/core/decorators'\nimport { ExcludeOpt } from '~/modules/mikro-orm'\nimport {\n  METADATA_FACTORY_NAME,\n  DECORATORS,\n} from '~/utils/internals/nestjs-swagger'\nimport type { SchemaObjectMetadata } from '~/utils/internals/nestjs-swagger'\n\n\n/**\n * 从实体中排除 `Collection` 类型的属性键。\n *\n * `Collection` 对应 OneToMany / ManyToMany 关系，默认 `lazy: true`，\n * 不应出现在 EntityDto 中。\n */\ntype IsCollection<T> = T extends Collection<any> ? true : false\n\n/**\n * 将实体的 MikroORM 类型转换为 DTO 友好的类型：\n * - `Collection<Entity>` → 键被排除（lazy，不在默认 Swagger 中）\n * - `Ref<Entity>` → **保留原样**（`Ref` 是 nestjs-kit 的一等公民类型，\n *   序列化层会自动处理：populated 时完整序列化，否则仅返回主键）\n * - `Xxx & Opt` → 去除 `Opt` 标记\n */\nexport type EntityDtoShape<T> = {\n  [K in keyof T as IsCollection<T[K]> extends true ? never : K]:\n  ExcludeOpt<T[K]>\n}\n\n/**\n * 基于实体生成一个无继承关系的纯 DTO 类，用于安全派生。\n *\n * 返回的类：\n * - 不继承实体类，避免 `Collection` 类型与 DTO 字段冲突\n * - 仅包含非 `lazy: true` 的 Model 属性\n * - 保留 `Ref<Entity>` 类型（序列化层自动处理：populated 时完整序列化，否则仅主键）\n * - 保留所有 Swagger、class-validator、class-transformer 元数据\n * - Swagger schema 与 `findOne()` 不加 populate 的结果一致\n *\n * @param classRef - 使用 `@Model()` 标注的实体类引用\n * @returns 可用于 `extends` 派生的纯 DTO 类\n *\n * @example\n * ```typescript\n * // 基本用法：派生不含 Collection 的 DTO\n * class UserProfileBriefDto extends EntityDto(UserProfile) {}\n *\n * // 扩展用法：手动添加 lazy 属性\n * class UserProfileDetailDto extends EntityDto(UserProfile) {\n *   @List({ type: () => PrimaryKeyType(Avatar) })\n *   avatars!: PrimaryKeyTypeClass[]\n * }\n * ```\n */\nexport function EntityDto<T extends object>(classRef: Class<T>): Class<EntityDtoShape<T>> {\n  if (!ModelRegister.isModel(classRef)) {\n    throw new TypeError('EntityDto only accepts a class annotated with @Model().')\n  }\n\n  class EntityDtoClass {}\n\n  /**\n   * 收集从源实体复制的 Swagger 属性元数据，\n   * 用于构建 `_OPENAPI_METADATA_FACTORY`。\n   */\n  const swaggerProps: Record<string, SchemaObjectMetadata> = {}\n\n  for (const propertyKey of ModelRegister.getModelPropertyKeys(classRef)) {\n    const metadata = ModelRegister.getProperty(classRef, propertyKey)\n    if (metadata?.lazy) continue\n\n    ModelRegister.copyProperty(classRef, EntityDtoClass, propertyKey)\n\n    const metadataKeys = Reflect.getMetadataKeys(classRef.prototype, propertyKey)\n\n    for (const metadataKey of metadataKeys) {\n      const value = Reflect.getMetadata(metadataKey, classRef.prototype, propertyKey)\n      if (Reflect.hasMetadata(metadataKey, EntityDtoClass.prototype, propertyKey)) continue\n      Reflect.defineMetadata(metadataKey, value, EntityDtoClass.prototype, propertyKey)\n    }\n\n    /**\n     * 收集已复制的 `@ApiProperty` 元数据，后续通过\n     * `_OPENAPI_METADATA_FACTORY` 暴露给 `@nestjs/swagger`，\n     * 使 applyMetadataFactory() 遍历原型链时能发现这些属性。\n     */\n    if (typeof propertyKey === 'string') {\n      const swaggerMeta: SchemaObjectMetadata | undefined = Reflect.getMetadata(\n        DECORATORS.API_MODEL_PROPERTIES,\n        EntityDtoClass.prototype,\n        propertyKey,\n      )\n      if (swaggerMeta) {\n        swaggerProps[propertyKey] = swaggerMeta\n      }\n    }\n  }\n\n  /**\n   * 设置 `_OPENAPI_METADATA_FACTORY` 静态方法。\n   *\n   * `@nestjs/swagger` 插件在编译时无法识别 `EntityDto`，\n   * 只对子类（如 `CourseBriefDto`）中直接声明的属性生成 factory。\n   * 当 `applyMetadataFactory()` 遍历原型链时，\n   * 它会在 `EntityDtoClass` 上找到此 factory，\n   * 并将源实体属性应用到子类的 prototype 上。\n   */\n  if (Object.keys(swaggerProps).length > 0) {\n    EntityDtoClass[METADATA_FACTORY_NAME] = () => swaggerProps\n  }\n\n  return EntityDtoClass as unknown as Class<EntityDtoShape<T>>\n}\n","import * as R from 'ramda'\nimport { EntityMetadata, MetadataStorage, EntityProperty } from '@mikro-orm/core'\nimport { Type } from '@nestjs/common'\n\n\nexport function getMetadata<T>(classRef: Type<T>): EntityProperty<T>[] {\n  const metadatas: EntityMetadata<T>[] = []\n\n  let parent: any = classRef\n  do {\n    const meta = MetadataStorage.getMetadata(parent.name, parent[MetadataStorage.PATH_SYMBOL])\n    if (meta instanceof EntityMetadata) metadatas.push(meta)\n    parent = Object.getPrototypeOf(parent)\n  } while (parent && parent !== Object.prototype)\n\n  return R.unnest(metadatas.map((meta) => R.values(meta.properties)))\n}\n","\nimport { inheritTransformationMetadata, inheritValidationMetadata } from '@nestjs/mapped-types'\nimport { Class } from 'type-fest'\nimport { ModelRegister } from '~/modules/core/decorators'\nimport * as SwaggerUtils from '~/utils/nestjs-swagger-utils'\nimport * as MikroOrmUtils from '../../utils/mikro-orm-utils.js'\nimport { IEntityPrimaryKey } from './types/index.js'\n\n\nexport const PrimaryKeyTypeClassMetadataPropertyKey = Symbol('PrimaryKeyTypeClassMetadataPropertyKey')\n\nconst storage = new WeakMap<Class<object>, Class<IEntityPrimaryKey<any>>>()\n\nexport function PrimaryKeyType<T extends object>(classRef: Class<T>): Class<IEntityPrimaryKey<T>> {\n  if (storage.has(classRef)) {\n    return storage.get(classRef)!\n  }\n\n  const properties = MikroOrmUtils.getMetadata(classRef)\n\n  const primaryProperties: string[] = properties.filter((prop) => prop.primary)\n    .map((prop) => prop.name)\n\n  if (!primaryProperties.length) {\n    throw new Error(`Cannot create PrimaryKeyType for ${classRef.name} because it has no primary properties.`)\n  }\n\n  class PrimaryKeyTypeClass {}\n\n  // 设置唯一类名，使 @nestjs/swagger 为每个实体生成独立的 schema\n  // 例如：UserPrimaryKeyType, ProductPrimaryKeyType\n  // 避免不同实体的 PrimaryKeyType schema 相互覆盖\n  Object.defineProperty(PrimaryKeyTypeClass, 'name', {\n    value: `${classRef.name}PrimaryKeyType`,\n  })\n\n  PrimaryKeyTypeClass[PrimaryKeyTypeClassMetadataPropertyKey] = classRef\n\n  SwaggerUtils.cloneMetadata(PrimaryKeyTypeClass, classRef, primaryProperties)\n  inheritValidationMetadata(classRef, PrimaryKeyTypeClass, (key) => primaryProperties.includes(key))\n  inheritTransformationMetadata(classRef, PrimaryKeyTypeClass, (key) => primaryProperties.includes(key))\n\n  // 将主键字段的 ModelRegister 属性元数据复制到 PrimaryKeyTypeClass，\n  for (const propertyName of primaryProperties) {\n    ModelRegister.copyProperty(classRef, PrimaryKeyTypeClass as any, propertyName)\n  }\n\n  storage.set(classRef, PrimaryKeyTypeClass as Class<IEntityPrimaryKey<T>>)\n  return PrimaryKeyTypeClass as Class<IEntityPrimaryKey<T>>\n}\n","import type { EntityName } from '@mikro-orm/core'\nimport { EntitySchema } from '@mikro-orm/core'\nimport { Type } from '@nestjs/common'\nimport { PrimaryKeyType } from '../../converters/entity-primary-key-type/entity-primary-key-type'\n\n\n/**\n * 将 `EntityName<T>` 解析为类引用（`Type`）。\n *\n * v7 中 `EntityName<T>` 只可能是 class、abstract class 或 `EntitySchema`（不再包含字符串）。\n */\nexport function resolveEntityClass<T>(entityName: EntityName<T>): Type | undefined {\n  if (entityName instanceof EntitySchema) {\n    return entityName.meta?.class as Type | undefined\n  }\n\n  // EntityClass | EntityCtor — 都是类引用，直接返回\n  return entityName as Type\n}\n\n/**\n * 为关系装饰器的 entity 参数解析 Swagger / Property 所需的类型。\n *\n * - `eager` 为 true 时，返回实体类本身（完整对象结构）。\n * - 否则返回 `PrimaryKeyType(cls)`（仅包含主键字段）。\n * - 无法解析时回退为 `Object`。\n */\nexport function resolveEntityType<T>(\n  entityRef: (() => EntityName<T> | EntityName<T>[]) | undefined,\n  eager?: boolean,\n): Type {\n  if (!entityRef) return Object\n\n  const result = entityRef()\n  const entityName = Array.isArray(result) ? result[0] : result\n  if (!entityName) return Object\n\n  const cls = resolveEntityClass(entityName)\n  if (!cls) return Object\n  return eager ? cls : PrimaryKeyType(cls as any)\n}\n\n/**\n * 为 Swagger schema 解析实体类引用。始终返回完整实体类（非 PrimaryKeyType），\n * 保证 `$ref` 指向正确注册的 schema。\n *\n * 返回函数形式以支持延迟求值，避免装饰器执行时的循环引用问题。\n */\nexport function resolveEntitySchemaType<T>(\n  entityRef: (() => EntityName<T> | EntityName<T>[]) | undefined,\n): () => Type {\n  return () => {\n    if (!entityRef) return Object\n    const result = entityRef()\n    const entityName = Array.isArray(result) ? result[0] : result\n    if (!entityName) return Object\n    return resolveEntityClass(entityName) || Object\n  }\n}\n","import type { EntityName } from '@mikro-orm/core'\nimport { ManyToOne as OrmManyToOne } from '@mikro-orm/decorators/legacy'\nimport type { ManyToOneOptions } from '@mikro-orm/core'\nimport { ApiHideProperty } from '@nestjs/swagger'\nimport { Type } from '@nestjs/common'\nimport { resolveEntityType } from './_resolve-entity-class'\nimport { Composite } from '~/modules/core'\n\n\n/**\n * 多对一关系装饰器，封装 MikroORM `@ManyToOne()` 并自动注册 `@Composite()` 元数据和 Swagger schema。\n *\n * @example\n * ```typescript\n * @Entity()\n * class Post {\n *   @ManyToOne(() => User)\n *   author: User\n * }\n * ```\n */\nexport function ManyToOne<Target extends object, Owner extends object>(\n  entity?: ManyToOneOptions<Owner, Target> | ((e?: any) => EntityName<Target>),\n  options?: Partial<ManyToOneOptions<Owner, Target>>,\n): (target: Owner, propertyName: string) => void {\n  return (target, propertyKey) => {\n    if (typeof entity === 'function') {\n      OrmManyToOne(entity, options)(target, propertyKey)\n    } else if (entity) {\n      OrmManyToOne(entity)(target, propertyKey)\n    } else {\n      OrmManyToOne(options)(target, propertyKey)\n    }\n\n    const resolvedOptions = typeof entity === 'object' ? entity : options\n    const entityRef = typeof entity === 'function' ? entity : resolvedOptions?.entity\n\n    if (resolvedOptions?.hidden) {\n      ApiHideProperty()(target, propertyKey)\n      return\n    }\n\n    const type = (): Type => resolveEntityType(entityRef, resolvedOptions?.eager)\n    const fullEntityType = (): Type => resolveEntityType(entityRef, true)\n\n    Composite({\n      type,\n      association: {\n        kind: 'm:1',\n        type: fullEntityType,\n      },\n      schema: {\n        description: resolvedOptions?.comment,\n        required: !resolvedOptions?.nullable,\n      },\n    })(target, propertyKey)\n  }\n}\n","import type { EntityName } from '@mikro-orm/core'\nimport { OneToOne as OrmOneToOne } from '@mikro-orm/decorators/legacy'\nimport type { OneToOneOptions } from '@mikro-orm/core'\nimport { ApiHideProperty } from '@nestjs/swagger'\nimport { Type } from '@nestjs/common'\nimport { resolveEntityType } from './_resolve-entity-class'\nimport { Composite } from '~/modules/core'\n\n\n/**\n * 一对一关系装饰器，封装 MikroORM `@OneToOne()` 并自动注册 `@Composite()` 元数据和 Swagger schema。\n *\n * @example\n * ```typescript\n * @Entity()\n * class User {\n *   @OneToOne(() => Profile, (profile) => profile.user)\n *   profile: Profile\n * }\n * ```\n */\nexport function OneToOne<Target extends object, Owner extends object>(\n  entity?: OneToOneOptions<Owner, Target> | ((e: Owner) => EntityName<Target>),\n  mappedByOrOptions?: (string & keyof Target) | ((e: Target) => any) | Partial<OneToOneOptions<Owner, Target>>,\n  options?: Partial<OneToOneOptions<Owner, Target>>,\n): (target: Owner, propertyName: string) => void {\n  return (target, propertyKey) => {\n    if (typeof entity === 'function') {\n      OrmOneToOne(entity, mappedByOrOptions, options)(target, propertyKey)\n    } else {\n      OrmOneToOne(entity)(target, propertyKey)\n    }\n\n    const resolvedOptions = typeof entity === 'object'\n      ? entity\n      : (typeof mappedByOrOptions === 'object' && !(typeof mappedByOrOptions === 'function') ? mappedByOrOptions : options)\n    const entityRef: (() => EntityName<Target> | EntityName<Target>[]) | undefined =\n      typeof entity === 'function' ? entity as () => EntityName<Target> : resolvedOptions?.entity\n\n    if (resolvedOptions?.hidden) {\n      ApiHideProperty()(target, propertyKey)\n      return\n    }\n\n    const type = (): Type => resolveEntityType(entityRef, resolvedOptions?.eager)\n    const fullEntityType = (): Type => resolveEntityType(entityRef, true)\n\n    Composite({\n      type,\n      association: {\n        kind: '1:1',\n        type: fullEntityType,\n      },\n      schema: {\n        description: resolvedOptions?.comment,\n        required: !resolvedOptions?.nullable,\n      },\n    })(target, propertyKey)\n  }\n}\n","import { OneToMany as OrmOneToMany } from '@mikro-orm/decorators/legacy'\nimport type { OneToManyOptions } from '@mikro-orm/core'\nimport { ApiHideProperty } from '@nestjs/swagger'\nimport { Type } from '@nestjs/common'\nimport { resolveEntitySchemaType, resolveEntityType } from './_resolve-entity-class'\nimport { List } from '~/modules/core'\n\n\n/**\n * 一对多关系装饰器，封装 MikroORM `@OneToMany()` 并自动注册 `@List()` 元数据和 Swagger schema。\n *\n * @param options - MikroORM OneToMany 配置\n *\n * @example\n * ```typescript\n * @Entity()\n * class User {\n *   @OneToMany({ entity: () => Post, mappedBy: 'author' })\n *   posts: Collection<Post>\n * }\n * ```\n */\nexport function OneToMany<Target extends object, Owner extends object>(options: OneToManyOptions<Owner, Target>): (target: Owner, propertyName: string) => void {\n  return (target, propertyKey) => {\n    OrmOneToMany(options)(target, propertyKey)\n\n    if (options.hidden) {\n      ApiHideProperty()(target, propertyKey)\n      return\n    }\n\n    const entityRef = options.entity\n\n    const type = (): Type => resolveEntityType(entityRef, options.eager)\n    const fullEntityType = (): Type => resolveEntityType(entityRef, true)\n\n    List({\n      type,\n      optional: options.nullable,\n      lazy: options.eager !== true,\n      association: {\n        kind: '1:m',\n        type: fullEntityType,\n      },\n      schema: {\n        description: options.comment,\n        type: resolveEntitySchemaType(entityRef),\n        isArray: true,\n      },\n    })(target, propertyKey)\n  }\n}\n","import type { EntityName } from '@mikro-orm/core'\nimport { ManyToMany as OrmManyToMany } from '@mikro-orm/decorators/legacy'\nimport type { ManyToManyOptions } from '@mikro-orm/core'\nimport { ApiHideProperty } from '@nestjs/swagger'\nimport { Type } from '@nestjs/common'\nimport { resolveEntitySchemaType, resolveEntityType } from './_resolve-entity-class'\nimport { List } from '~/modules/core'\n\n\n/**\n * 多对多关系装饰器，封装 MikroORM `@ManyToMany()` 并自动注册 `@List()` 元数据和 Swagger schema。\n *\n * @example\n * ```typescript\n * @Entity()\n * class User {\n *   @ManyToMany(() => Role, (role) => role.users)\n *   roles: Collection<Role>\n * }\n * ```\n */\nexport function ManyToMany<Target extends object, Owner extends object>(\n  entity?: ManyToManyOptions<Owner, Target> | (() => EntityName<Target>),\n  mappedBy?: (string & keyof Target) | ((e: Target) => any),\n  options?: Partial<ManyToManyOptions<Owner, Target>>,\n): (target: Owner, propertyName: string & keyof Owner) => void {\n  return (target, propertyKey) => {\n    if (typeof entity === 'function') {\n      OrmManyToMany(entity, mappedBy, options)(target, propertyKey)\n    } else {\n      OrmManyToMany(entity)(target, propertyKey)\n    }\n\n    const resolvedOptions = typeof entity === 'object' ? entity : options\n    const entityRef = typeof entity === 'function' ? entity : resolvedOptions?.entity\n\n    if (resolvedOptions?.hidden) {\n      ApiHideProperty()(target, propertyKey)\n      return\n    }\n\n    const type = (): Type => resolveEntityType(entityRef, resolvedOptions?.eager)\n    const fullEntityType = (): Type => resolveEntityType(entityRef, true)\n\n    List({\n      type,\n      optional: resolvedOptions?.nullable,\n      lazy: resolvedOptions?.eager !== true,\n      association: {\n        kind: 'm:n',\n        type: fullEntityType,\n      },\n      schema: {\n        description: resolvedOptions?.comment,\n        type: resolveEntitySchemaType(entityRef),\n        isArray: true,\n      },\n    })(target, propertyKey)\n  }\n}\n","import { ManyToOne } from './many-to-one.cardinality'\nimport { OneToOne } from './one-to-one.cardinality'\nimport { OneToMany } from './one-to-many.cardinality'\nimport { ManyToMany } from './many-to-many.cardinality'\n\n\nexport const Cardinality = {\n  ManyToOne,\n  OneToOne,\n  OneToMany,\n  ManyToMany,\n} as const\n","import { ApiPropertyOptions } from '@nestjs/swagger'\nimport { Class } from 'type-fest'\nimport { RefAssociationMetadata, Composite } from '../../../core/decorators/model'\nimport { PrimaryKeyType } from '../../converters/entity-primary-key-type/entity-primary-key-type'\n\ninterface EntityRefOptions {\n  optional?: boolean\n  schema?: ApiPropertyOptions\n  association?: RefAssociationMetadata\n}\n\n/**\n * 实体引用装饰器，通过实体的主键类型声明对另一个实体的引用。\n *\n * 内部使用 `PrimaryKeyType()` 将实体类转换为仅包含主键字段的 DTO，\n * 适用于创建/更新请求中通过主键关联实体的场景。\n *\n * @param entity - 被引用实体的类引用函数\n * @param options - 可选配置\n *\n * @example\n * ```typescript\n * @Model()\n * class CreatePostDTO {\n *   @Property()\n *   title: string\n *\n *   @EntityRef(() => User)\n *   author: { id: string }\n * }\n * ```\n */\nexport function EntityRef<T extends object>(\n  entity: () => Class<T>,\n  options?: EntityRefOptions,\n): PropertyDecorator {\n  return Composite({\n    type: () => PrimaryKeyType(entity()),\n    optional: options?.optional,\n    schema: options?.schema,\n    association: options?.association ?? {\n      kind: 'm:1',\n      type: entity,\n    },\n  })\n}\n","import { ToNumber } from '@buka/class-transformer-extra'\nimport { IsBoolean, IsNumber, IsString } from 'class-validator'\n\nimport * as R from 'ramda'\nimport * as util from 'util'\nimport { Migrator } from '@mikro-orm/migrations'\nimport type { Options } from '@mikro-orm/core'\nimport { FlushMode } from '@mikro-orm/core'\nimport { BadRequestException } from '@nestjs/common'\n\n\nexport class DatabaseConfig {\n  @IsBoolean()\n  debug = false\n\n  @IsBoolean()\n  migration: boolean = false\n\n  @IsString()\n  dbName!: string\n\n  @IsString()\n  host!: string\n\n  @ToNumber()\n  @IsNumber({ allowNaN: false })\n  port!: number\n\n  @IsString()\n  user!: string\n\n  @IsString()\n  password!: string\n\n  @IsString()\n  timezone? = '+08:00'\n\n  @ToNumber()\n  @IsNumber({ allowNaN: false })\n  poolMax: number = 10\n\n  @ToNumber()\n  @IsNumber({ allowNaN: false })\n  poolMin: number = 0\n\n  @ToNumber()\n  @IsNumber({ allowNaN: false })\n  poolIdleTimeoutMillis: number = 30000\n\n  toMikroOrmOptions(config?: Partial<Options>): Partial<Options> {\n    let options: Partial<Options> = {\n      host: this.host,\n      port: this.port,\n      user: this.user,\n      password: this.password,\n      dbName: this.dbName,\n      debug: this.debug,\n      timezone: this.timezone,\n\n      forceUndefined: true,\n      populateAfterFlush: false,\n      flushMode: FlushMode.COMMIT,\n\n      pool: {\n        max: this.poolMax,\n        min: this.poolMin,\n        idleTimeoutMillis: this.poolIdleTimeoutMillis,\n      },\n\n      serialization: {\n        forceObject: true,\n      },\n\n      findOneOrFailHandler: (entityName, where) => new BadRequestException(`Cannot find ${entityName} where ${util.inspect(where)}`),\n    }\n\n    if (this.migration) {\n      options = R.mergeDeepRight(options, {\n        extensions: [Migrator],\n        migrations: {\n          snapshotName: 'snapshot',\n          path: 'migrations',\n          fileName: (timestamp) => `migration-${timestamp}`,\n        },\n      })\n    }\n\n    return R.mergeDeepRight(options, config || {})\n  }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { MikroORM, EntityManager } from '@mikro-orm/core'\nimport { ValidationPipe, ValidationPipeOptions } from '@nestjs/common'\nimport { ArgumentMetadata, Injectable, Logger, PipeTransform, Type } from '@nestjs/common'\nimport { Class } from 'type-fest'\nimport { PrimaryKeyTypeClassMetadataPropertyKey } from '~/modules/mikro-orm'\nimport * as MikroOrmUtils from '~/modules/mikro-orm/utils/mikro-orm-utils'\nimport { isScalarClass, ModelRegister } from '../decorators'\n\n\nfunction deepMap(obj: any, fn: (value: any) => any): any {\n  if (Array.isArray(obj)) {\n    return obj.map((item) => deepMap(item, fn))\n  } else {\n    return fn(obj)\n  }\n}\n\n\nfunction transformReference(em: EntityManager, value: any, metatype: Class<object>): any {\n  if (typeof value !== 'object' || value === null) return value\n\n  const entityProperties = MikroOrmUtils.getMetadata(metatype)\n  const primaryProperties = entityProperties.filter((p) => p.primary)\n\n  if (primaryProperties.length === 1) {\n    const propertyKey = primaryProperties[0].name\n    const ref = em.getReference(metatype, value[propertyKey], { wrapped: true })\n    return ref\n  } else if (primaryProperties.length > 1) {\n    const propertyKeys = primaryProperties.map((p) => p.name)\n    const ref = em.getReference(metatype, propertyKeys.map((key) => value[key]), { wrapped: true })\n    return ref\n  }\n\n  return value\n}\n\n\nfunction deepTransform(em: EntityManager, value: any, metatype: Class<any>): any {\n  // value = transformReferenceProperties(em, value, metatype)\n\n  if (typeof value !== 'object' || value === null) {\n    // transform 不需要做 validate，其他的格式也可能是合法的，交给 class-validator 处理\n    return value\n  }\n\n  const propertyKeys = ModelRegister.getModelPropertyKeys(metatype)\n\n  const result = { ...value }\n\n  for (const propertyKey of propertyKeys) {\n    const propertyMetadata = ModelRegister.getProperty(metatype, propertyKey)\n    if (!propertyMetadata) continue\n    if (!(propertyKey in value)) continue\n\n    const propertyValue = value[propertyKey]\n\n    if (propertyMetadata.kind === 'composite') {\n      const ctor = propertyMetadata.type() as Type<any>\n\n      if (PrimaryKeyTypeClassMetadataPropertyKey in ctor) {\n        // 是 PrimaryKeyType，读取存储在标记上的原始实体类\n        const originalEntity = ctor[PrimaryKeyTypeClassMetadataPropertyKey] as Type<any>\n        result[propertyKey] = transformReference(em, propertyValue, originalEntity)\n      } else {\n        const v = deepTransform(em, propertyValue, ctor)\n        result[propertyKey] = v\n      }\n    } else if (propertyMetadata.kind === 'list') {\n      if (propertyMetadata.type && !isScalarClass(propertyMetadata.type)) {\n        result[propertyKey] = deepMap(\n          propertyValue,\n          (item) => deepTransform(em, item, propertyMetadata.type!() as Type<any>),\n        )\n      }\n    } else if (propertyMetadata.kind === 'dictionary') {\n      if (propertyMetadata.type && !isScalarClass(propertyMetadata.type)) {\n        if (propertyValue instanceof Map) {\n          result[propertyKey] = new Map(\n            Array.from((propertyValue as Map<string, any>).entries())\n              .map(([k, v]) => [k, deepTransform(em, v, propertyMetadata.type!() as Type<any>)] as const),\n          )\n        } else {\n          result[propertyKey] = Object.fromEntries(\n            Object.entries(propertyValue)\n              .map(([k, v]) => [k, deepTransform(em, v, propertyMetadata.type!() as Type<any>)]),\n          )\n        }\n      }\n    }\n  }\n\n  return result\n}\n\n\n/**\n * 增强的验证管道，在 NestJS `ValidationPipe` 基础上增加了 MikroORM 实体引用自动转换能力。\n *\n * 验证通过后，会自动将嵌套对象中包含主键的属性转换为 MikroORM 的 `Reference` 对象。\n *\n * @example\n * ```typescript\n * // 在 NestJS 模块中全局注册\n * app.useGlobalPipes(new BukaValidationPipe(orm, em, { transform: true }))\n * ```\n */\n@Injectable()\nexport class BukaValidationPipe extends ValidationPipe implements PipeTransform {\n  private readonly logger = new Logger(BukaValidationPipe.name)\n  private readonly validationOptions?: ValidationPipeOptions\n\n  constructor(\n    private readonly orm: MikroORM,\n    private readonly em: EntityManager,\n    options?: ValidationPipeOptions,\n  ) {\n    super(options)\n    this.validationOptions = options\n  }\n\n  async transform(value: any, metadata: ArgumentMetadata): Promise<any> {\n    value = await super.transform(value, metadata)\n\n    // 自定义装饰器（type === 'custom'）的参数值由开发者代码在运行时注入，\n    // 不是来自 HTTP 请求体的 JSON 数据，不需要 MikroORM 实体引用转换。\n    // 遵循 NestJS ValidationPipe.toValidate() 对 custom 类型跳过验证的设计模式\n    if (metadata.type === 'custom') return value\n\n    if (this.validationOptions && !this.validationOptions.transform) return value\n\n    if (!metadata.metatype || typeof metadata.metatype !== 'function') {\n      return value\n    }\n\n    const metatype = metadata.metatype\n\n    const result = await deepTransform(this.em, value, metatype)\n    return result\n  }\n}\n","import { ConfigurableModuleBuilder } from '@nestjs/common'\nimport { BukaModuleOptions } from './buka-module-options.js'\n\nexport const {\n  ConfigurableModuleClass: BukaConfigurableModuleClass,\n  MODULE_OPTIONS_TOKEN: BUKA_MODULE_OPTIONS_TOKEN,\n} = new ConfigurableModuleBuilder<BukaModuleOptions>()\n  .build()\n","import { Module, Global } from '@nestjs/common'\nimport { APP_PIPE } from '@nestjs/core'\nimport { MikroORM, EntityManager } from '@mikro-orm/core'\nimport { BukaModuleOptions } from './buka-module-options.js'\nimport { BukaValidationPipe } from './pipes/validation.pipe.js'\nimport { BukaConfigurableModuleClass, BUKA_MODULE_OPTIONS_TOKEN } from './buka.module-definition.js'\n\n\n@Global()\n@Module({\n  providers: [\n    {\n      provide: APP_PIPE,\n      inject: [BUKA_MODULE_OPTIONS_TOKEN, MikroORM, EntityManager],\n      useFactory: (options: BukaModuleOptions, orm: MikroORM, em: EntityManager) => {\n        return new BukaValidationPipe(orm, em, options?.validation)\n      },\n    },\n  ],\n})\nexport class BukaModule extends BukaConfigurableModuleClass {}\n","import { Model, Property } from '../decorators'\n\n\n@Model({\n  schema: {\n    description: '基于偏移量的分页响应，通过 offset + limit 定位数据位置，适用于传统翻页场景',\n    additionalProperties: false,\n  },\n})\nexport class OffsetPagination {\n  @Property({\n    schema: {\n      type: 'number',\n      description: '总数',\n    },\n  })\n  total!: number\n\n  @Property({\n    schema: {\n      type: 'number',\n      description: '每页数量',\n    },\n  })\n  limit!: number\n\n  @Property({\n    schema: {\n      type: 'number',\n      description: '偏移量',\n    },\n  })\n  offset!: number\n\n  constructor(total: number, parameters: { limit: number; offset: number }) {\n    this.total = total\n    this.limit = parameters.limit\n    this.offset = parameters.offset\n  }\n}\n","import { Cursor } from '@mikro-orm/core'\nimport { Model, Property } from '../decorators'\n\n\n@Model({\n  schema: {\n    description: '基于游标的分页响应，通过 startCursor/endCursor 定位数据位置，适用于无限滚动等场景',\n    additionalProperties: false,\n  },\n})\nexport class CursorPagination {\n  @Property({\n    schema: {\n      type: 'number',\n      description: '总数',\n    },\n  })\n  total?: number\n\n  @Property({\n    schema: {\n      type: 'number',\n      description: '每页数量',\n    },\n  })\n  limit!: number\n\n  @Property({\n    schema: {\n      type: 'string',\n      description: '开始游标',\n      nullable: true,\n    },\n  })\n  startCursor!: string | null\n\n  @Property({\n    schema: {\n      type: 'string',\n      description: '结束游标',\n      nullable: true,\n    },\n  })\n  endCursor!: string | null\n\n  @Property({\n    schema: {\n      type: 'boolean',\n      description: '是否有下一页',\n    },\n  })\n  hasNextPage!: boolean\n\n  @Property({\n    schema: {\n      type: 'boolean',\n      description: '是否有上一页',\n    },\n  })\n  hasPrevPage!: boolean\n\n  constructor(cursor: Cursor<any>) {\n    this.total = cursor.totalCount\n    this.limit = cursor.length\n    this.startCursor = cursor.startCursor\n    this.endCursor = cursor.endCursor\n    this.hasNextPage = cursor.hasNextPage\n    this.hasPrevPage = cursor.hasPrevPage\n  }\n}\n","import { Cursor, Loaded } from '@mikro-orm/core'\nimport { IOffsetPageParameters } from '../types'\nimport { OffsetPagination } from './offset-pagination'\nimport { CursorPagination } from './cursor-pagination'\n\n\nexport class Slice<T extends object> {\n  data!: Array<T>\n\n  pagination!: OffsetPagination | CursorPagination\n\n  constructor(data: Array<T>, pagination: OffsetPagination | CursorPagination) {\n    this.data = data\n    this.pagination = pagination\n  }\n\n  *[Symbol.iterator](): Iterator<T> {\n    for (const item of this.data) {\n      yield item\n    }\n  }\n\n  static fromOffset<T extends object>(data: Array<T>, total: number, parameters: IOffsetPageParameters): Slice<T> {\n    const pagination = new OffsetPagination(total, parameters)\n\n    return new Slice<T>(data, pagination)\n  }\n\n  static fromCursor<\n    T extends object,\n    Hint extends string = never,\n    Fields extends string = never,\n    Excludes extends string = never,\n  >(cursor: Cursor<T, Hint, Fields, Excludes>): Slice<Loaded<T, Hint, Fields, Excludes>> {\n    const pagination = new CursorPagination(cursor)\n    return new Slice<Loaded<T, Hint, Fields, Excludes>>(cursor.items, pagination)\n  }\n\n  map<R extends object>(fn: (item: T, index: number) => R): Slice<R> {\n    const mappedData = this.data.map(fn)\n    return new Slice<R>(mappedData, this.pagination)\n  }\n}\n","import { PickType as SwaggerPickType } from '@nestjs/swagger'\nimport { Class } from 'type-fest'\nimport { ModelRegister } from '~/modules/core/decorators'\n\n/**\n * 从模型中选取指定属性，生成新的子集类型。\n *\n * 类似 TypeScript 的 `Pick<T, K>`，同时保留 class-validator、class-transformer 和 Swagger 的元数据。\n *\n * @param classRef - 使用 `@Model()` 标注的类引用\n * @param keys - 需要选取的属性名数组\n * @returns 仅包含指定属性的新类\n *\n * @example\n * ```typescript\n * const CreateUserDTO = PickType(UserDTO, ['name', 'email'])\n * ```\n */\nexport function PickType<T, K extends keyof T>(classRef: Class<T>, keys: K[]): Class<Pick<T, typeof keys[number]>> {\n  if (!ModelRegister.isModel(classRef)) {\n    throw new TypeError('PickType only accepts a class annotated with @Model().')\n  }\n\n  const PickTypeClass = SwaggerPickType(classRef, keys)\n\n\n  for (const key of keys) {\n    ModelRegister.copyProperty(classRef, PickTypeClass, key as string)\n\n    const metadataKeys = Reflect.getMetadataKeys(classRef.prototype, key as string)\n\n    for (const metadataKey of metadataKeys) {\n      const metadata = Reflect.getMetadata(metadataKey, classRef.prototype, key as string)\n      if (Reflect.hasMetadata(metadataKey, PickTypeClass.prototype, key as string)) continue\n      Reflect.defineMetadata(metadataKey, metadata, PickTypeClass.prototype, key as string)\n    }\n  }\n\n  return PickTypeClass\n}\n","import { OmitType as SwaggerOmitType } from '@nestjs/swagger'\nimport { Class } from 'type-fest'\nimport { ModelRegister } from '~/modules/core/decorators'\n\n\n/**\n * 从模型中排除指定属性，生成新的类型。\n *\n * 类似 TypeScript 的 `Omit<T, K>`，同时保留 class-validator、class-transformer 和 Swagger 的元数据。\n *\n * @param classRef - 使用 `@Model()` 标注的类引用\n * @param keys - 需要排除的属性名数组\n * @returns 排除了指定属性的新类\n *\n * @example\n * ```typescript\n * const UpdateUserDTO = OmitType(UserDTO, ['id', 'createdAt'])\n * ```\n */\nexport function OmitType<T, K extends keyof T>(classRef: Class<T>, keys: K[]): Class<Omit<T, typeof keys[number]>> {\n  if (!ModelRegister.isModel(classRef)) {\n    throw new TypeError('OmitType only accepts a class annotated with @Model().')\n  }\n\n  const OmitTypeClass = SwaggerOmitType(classRef, keys)\n\n  for (const propertyKey of ModelRegister.getModelPropertyKeys(classRef)) {\n    if (keys.includes(propertyKey as K)) continue\n\n    ModelRegister.copyProperty(classRef, OmitTypeClass, propertyKey)\n\n    const metadataKeys = Reflect.getMetadataKeys(classRef.prototype, propertyKey)\n\n    for (const metadataKey of metadataKeys) {\n      const metadata = Reflect.getMetadata(metadataKey, classRef.prototype, propertyKey)\n      if (Reflect.hasMetadata(metadataKey, OmitTypeClass.prototype, propertyKey)) continue\n      Reflect.defineMetadata(metadataKey, metadata, OmitTypeClass.prototype, propertyKey)\n    }\n  }\n\n  return OmitTypeClass\n}\n","import { PartialType as SwaggerPartialType } from '@nestjs/swagger'\nimport { Class } from 'type-fest'\nimport { ModelRegister } from '~/modules/core/decorators'\n\n/**\n * 将模型的所有属性变为可选，生成新的 Partial 类型。\n *\n * 类似 TypeScript 的 `Partial<T>`，同时保留 class-validator、class-transformer 和 Swagger 的元数据。\n *\n * @param classRef - 使用 `@Model()` 标注的类引用\n * @returns 所有属性均为可选的新类\n *\n * @example\n * ```typescript\n * const PatchUserDTO = PartialType(UserDTO)\n * ```\n */\nexport function PartialType<T>(classRef: Class<T>): Class<Partial<T>> {\n  const PartialTypeClass = SwaggerPartialType(classRef)\n\n  for (const propertyKey of ModelRegister.getModelPropertyKeys(classRef)) {\n    ModelRegister.copyProperty(classRef, PartialTypeClass, propertyKey)\n\n    const propertyMetadata = ModelRegister.getProperty(PartialTypeClass, propertyKey)\n    if (propertyMetadata) {\n      ModelRegister.setProperty(PartialTypeClass, propertyKey, { ...propertyMetadata, optional: true })\n    }\n\n    const metadataKeys = Reflect.getMetadataKeys(classRef.prototype, propertyKey as string)\n\n    for (const metadataKey of metadataKeys) {\n      const metadata = Reflect.getMetadata(metadataKey, classRef.prototype, propertyKey as string)\n      if (Reflect.hasMetadata(metadataKey, PartialTypeClass.prototype, propertyKey as string)) continue\n      Reflect.defineMetadata(metadataKey, metadata, PartialTypeClass.prototype, propertyKey as string)\n    }\n  }\n\n  return PartialTypeClass\n}\n","import { Type } from '@nestjs/common'\nimport { IntersectionType as SwaggerIntersectionType } from '@nestjs/swagger'\nimport { ModelRegister } from '~/modules/core/decorators'\n\n\ntype UnionToIntersection<U> = (U extends any ? (k: U) => void : never) extends (k: infer I) => void ? I : never\ntype ClassRefsToConstructors<T extends Type[]> = {\n  [U in keyof T]: T[U] extends Type<infer V> ? V : never;\n}\ntype Intersection<T extends Type[]> = Type<UnionToIntersection<ClassRefsToConstructors<T>[number]>>\n\n/**\n * 将多个模型类合并为一个交叉类型。\n *\n * 类似 TypeScript 的交叉类型 `A & B`，同时合并 class-validator、class-transformer 和 Swagger 的元数据。\n *\n * @param classRefs - 需要合并的模型类引用列表\n * @returns 包含所有类属性的新类\n *\n * @example\n * ```typescript\n * const CreateUserDTO = IntersectionType(UserBaseDTO, UserProfileDTO)\n * ```\n */\nexport function IntersectionType<T extends Type[]>(...classRefs: T): Intersection<T> {\n  const IntersectionTypeClass = SwaggerIntersectionType(...classRefs)\n\n  for (const classRef of classRefs) {\n    for (const propertyKey of ModelRegister.getModelPropertyKeys(classRef)) {\n      ModelRegister.copyProperty(classRef, IntersectionTypeClass, propertyKey)\n\n\n      const metadataKeys = Reflect.getMetadataKeys(classRef.prototype, propertyKey)\n\n      for (const metadataKey of metadataKeys) {\n        const metadata = Reflect.getMetadata(metadataKey, classRef.prototype, propertyKey)\n        if (Reflect.hasMetadata(metadataKey, IntersectionTypeClass.prototype, propertyKey)) continue\n        Reflect.defineMetadata(metadataKey, metadata, IntersectionTypeClass.prototype, propertyKey)\n      }\n    }\n  }\n\n  return IntersectionTypeClass as Intersection<T>\n}\n","import { ApiPropertyOptions } from '@nestjs/swagger'\nimport { Class } from 'type-fest'\nimport { ModelRegister } from '~/modules/core/decorators'\nimport { SchemaObject } from '~/swagger-patcher/swagger-patcher'\n\n\nfunction getOrderQueryEnum(): SchemaObject {\n  return {\n    type: 'string',\n    enum: [\n      'asc',\n      'asc nulls last',\n      'asc nulls first',\n      'desc',\n      'desc nulls last',\n      'desc nulls first',\n    ],\n  }\n}\n\nfunction getOrderQueryMapSchema(classRef: Class<any>): SchemaObject {\n  const properties = {}\n  const schema: SchemaObject = {\n    type: 'object',\n    properties,\n    required: [],\n  }\n\n  for (const propertyKey of ModelRegister.getModelPropertyKeys(classRef)) {\n    const propertyMetadata = ModelRegister.getProperty(classRef, propertyKey)\n    // const isCollection = propertyMetadata?.association?.kind === '1:m' || propertyMetadata?.association?.kind === 'm:n'\n    const isRelation = !!propertyMetadata?.association\n    // const isOptional = !!propertyMetadata?.optional\n\n    if (isRelation) {\n      properties[propertyKey] = getOrderQueryMapSchema(propertyMetadata.association!.type() as Class<any>)\n    } else {\n      properties[propertyKey] = getOrderQueryEnum()\n    }\n\n    // if (!isOptional) schema.required!.push(propertyKey)\n  }\n\n  return schema\n}\n\n\nexport function getOrderQuerySchema(classRef: Class<any>): ApiPropertyOptions {\n  const orderQueryMapSchema = getOrderQueryMapSchema(classRef)\n\n  return {\n    description: `Order query for ${classRef.name}`,\n    oneOf: [\n      {\n        type: 'array',\n        items: orderQueryMapSchema,\n      },\n      orderQueryMapSchema,\n    ],\n    required: false,\n  }\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { Class } from 'type-fest'\nimport { IOrderQuery } from './types'\nimport { getOrderQuerySchema } from './get-order-query-schema'\nimport { Property, MatchJsonSchema } from '~/modules/core/decorators'\n\n/**\n * 根据模型类自动生成排序查询 DTO 类型。\n *\n * 生成的类型包含 `orderBy` 属性，其值通过 JSON Schema 校验，确保只能按模型中的属性排序。\n *\n * @param classRef - 使用 `@Model()` 标注的类引用\n * @returns 包含 `orderBy` 属性的查询 DTO 类\n *\n * @example\n * ```typescript\n * @Model()\n * class User {\n *   @Property()\n *   name: string\n *\n *   @Property()\n *   createdAt: Date\n * }\n *\n * const UserOrderQuery = OrderQueryType(User)\n * // 允许按 name、createdAt 排序\n * ```\n */\nexport function OrderQueryType<T>(classRef: Class<T>): Class<IOrderQuery<T>> {\n  const schema = getOrderQuerySchema(classRef)\n\n  class OrderQueryClass {\n    orderBy!: ''\n  }\n\n  Property({ optional: true, schema })(OrderQueryClass.prototype, 'orderBy')\n\n  MatchJsonSchema(schema, { message: 'Invalid order query' })(OrderQueryClass.prototype, 'orderBy')\n\n  return OrderQueryClass as any\n}\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\nimport { Type } from '@nestjs/common'\nimport { Class } from 'type-fest'\nimport { IListResponseBody, IListResponseBodyMeta } from './types/list-response-body'\nimport { Composite, List, serializeModel } from '~/modules/core/decorators'\nimport { CursorPagination, OffsetPagination, Slice } from '~/modules/core/models'\nimport { ApiExtraModels, getSchemaPath } from '@nestjs/swagger'\n\n\ntype IListResponseBodyClass<T extends object, MODE extends 'offset' | 'cursor'> = Class<IListResponseBody<T, MODE>> & {\n  fromSlice(slice: Slice<T>): IListResponseBody<T, MODE>\n}\n\n/**\n * 生成列表响应体类型，将数据包裹在 `{ data: T[], meta: { pagination } }` 结构中。\n *\n * 支持 offset 和 cursor 两种分页模式，通过 `fromSlice()` 静态方法从分页切片创建响应。\n *\n * @param classRef - 列表项的模型类引用\n * @param mode - 分页模式：`'offset'` 或 `'cursor'`，不传则同时支持两种\n * @returns 包含 `data` 和 `meta.pagination` 的列表响应体类\n *\n * @example\n * ```typescript\n * const UserListResponse = ListResponseBodyType(UserDTO, 'offset')\n *\n * @Controller('users')\n * class UserController {\n *   @Get()\n *   async findAll(@PageQuery('offset') page): Promise<UserListResponse> {\n *     const slice = await this.userService.findAll(page)\n *     return UserListResponse.fromSlice(slice)\n *   }\n * }\n * ```\n */\nexport function ListResponseBodyType<T extends object, MODE extends 'offset' | 'cursor' = 'offset' | 'cursor'>(classRef: Type<T>, mode?: MODE): IListResponseBodyClass<T, MODE> {\n  class ResponseBodyMeta {\n    pagination: unknown\n  }\n\n  class ListResponseBody {\n    @List({ type: () => classRef })\n    data!: T[]\n\n    meta!: IListResponseBodyMeta<MODE>\n\n    constructor(data: T[], meta: IListResponseBodyMeta<MODE>) {\n      this.data = data\n      this.meta = meta\n    }\n\n    static fromSlice(slice: Slice<T>): ListResponseBody {\n      const data = slice.data\n      const meta = {\n        pagination: slice.pagination,\n      }\n\n      const res = new ListResponseBody(data, meta as IListResponseBodyMeta<MODE>)\n      return res\n    }\n\n    toJSON(): any {\n      return {\n        data: this.data.map((item) => serializeModel(item, classRef)),\n        meta: serializeModel(this.meta, ResponseBodyMeta),\n      }\n    }\n  }\n\n  ApiExtraModels(CursorPagination, OffsetPagination)(ListResponseBody)\n\n  const paginationSchema = mode === 'cursor'\n    ? { $ref: getSchemaPath(CursorPagination) }\n    : mode === 'offset'\n      ? { $ref: getSchemaPath(OffsetPagination) }\n      : { oneOf: [{ $ref: getSchemaPath(OffsetPagination) }, { $ref: getSchemaPath(CursorPagination) }] }\n\n  Composite({\n    type: () => Object,\n    schema: {\n      type: 'object',\n      properties: { pagination: paginationSchema },\n      additionalProperties: true,\n      required: ['pagination'],\n    },\n  })(ListResponseBody.prototype, 'meta')\n\n  return ListResponseBody as IListResponseBodyClass<T, MODE>\n}\n","import { Class } from 'type-fest'\nimport { IResponseBody } from './types/index.js'\nimport { Composite, serializeModel } from '~/modules/core/decorators/index.js'\n\n\ntype IResponseBodyClass<T> = Class<IResponseBody<T>> & {\n  from(data: T): IResponseBody<T>\n}\n\n\n/**\n * 生成标准响应体类型，将数据包裹在 `{ data: T }` 结构中。\n *\n * 返回的类包含 `from()` 静态方法和 `toJSON()` 序列化支持。\n *\n * @param classRef - 响应数据的模型类引用\n * @returns 包含 `data` 属性的响应体类\n *\n * @example\n * ```typescript\n * const UserResponse = ResponseBodyType(UserDTO)\n *\n * @Controller('users')\n * class UserController {\n *   @Get(':id')\n *   async findOne(@Param('id') id: string): Promise<UserResponse> {\n *     const user = await this.userService.findOne(id)\n *     return UserResponse.from(user)\n *   }\n * }\n * ```\n */\nexport function ResponseBodyType<T extends object>(classRef: Class<T>): IResponseBodyClass<T> {\n  class ResponseBodyClass {\n    constructor(public data: T) {}\n\n    static from(data: T, meta: Record<string, any>): ResponseBodyClass {\n      const instance = new ResponseBodyClass(data)\n      return instance\n    }\n\n    toJSON(): any {\n      return { data: serializeModel(this.data, classRef) }\n    }\n  }\n\n  Composite({\n    type: () => classRef,\n    schema: {\n      type: () => classRef,\n    },\n  })(ResponseBodyClass.prototype, 'data')\n\n  return ResponseBodyClass as unknown as IResponseBodyClass<T>\n}\n","import { ConfigurableModuleBuilder } from '@nestjs/common'\nimport { OpenBaoModuleOptions } from './types/index.js'\n\nexport const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } = new ConfigurableModuleBuilder<OpenBaoModuleOptions>()\n  .build()\n","import * as fs from 'node:fs'\nimport { Inject, Injectable, Logger, OnModuleDestroy, OnModuleInit } from '@nestjs/common'\nimport { KeqRequest } from 'keq'\nimport type { OpenBaoAuthResponse, OpenBaoModuleOptions, OpenBaoTokenLookupSelfResponse } from './types'\nimport { MODULE_OPTIONS_TOKEN } from './open-bao.module-definition'\n\n/**\n * OpenBao Token 生命周期管理服务\n *\n * 负责：\n * - 通过配置的认证方式获取 Token\n * - 定时续期 Token（在 Token 过期前触发）\n * - 续期失败时自动重新认证\n */\n@Injectable()\nexport class OpenBaoTokenManager implements OnModuleInit, OnModuleDestroy {\n  private readonly logger = new Logger(OpenBaoTokenManager.name)\n\n  /**\n   * 用于认证操作的独立 KeqRequest 实例（不依赖动态 token 中间件）\n   */\n  private readonly authRequest = new KeqRequest()\n\n  private token: string | null = null\n  private renewable = false\n  private leaseDuration = 0\n  private renewalTimer: ReturnType<typeof setTimeout> | null = null\n\n  constructor(\n    @Inject(MODULE_OPTIONS_TOKEN)\n    private readonly config: OpenBaoModuleOptions,\n  ) {}\n\n  async onModuleInit(): Promise<void> {\n    await this.authenticate()\n    this.scheduleRenewal()\n  }\n\n  onModuleDestroy(): void {\n    if (this.renewalTimer) {\n      clearTimeout(this.renewalTimer)\n      this.renewalTimer = null\n    }\n  }\n\n  /**\n   * 获取当前有效的 Token\n   * @throws 如果 Token 尚未获取或认证失败\n   */\n  getToken(): string {\n    if (!this.token) {\n      throw new Error('OpenBao token not available. Authentication may have failed.')\n    }\n    return this.token\n  }\n\n  // ─── 认证方法 ──────────────────────────────────────────────\n\n  private async authenticate(): Promise<void> {\n    const { auth } = this.config\n\n    switch (auth.method) {\n      case 'token':\n        this.token = auth.token\n        await this.lookupTokenInfo()\n        break\n      case 'userpass':\n        await this.loginUserpass(auth.username, auth.password, auth.mount ?? 'userpass')\n        break\n      case 'approle':\n        await this.loginAppRole(auth.roleId, auth.secretId, auth.mount ?? 'approle')\n        break\n      case 'kubernetes':\n        await this.loginKubernetes(auth.role, auth.jwt, auth.tokenPath, auth.mount ?? 'kubernetes')\n        break\n    }\n\n    this.logger.log(`OpenBao authentication successful (method: ${auth.method})`)\n  }\n\n  /**\n   * 使用用户名密码登录\n   */\n  private async loginUserpass(username: string, password: string, mount: string): Promise<void> {\n    const response = await this.authRequest\n      .post<OpenBaoAuthResponse>(`${this.config.address}/v1/auth/${mount}/login/${username}`)\n      .type('application/json')\n      .send({ password })\n\n    this.handleAuthResponse(response)\n  }\n\n  /**\n   * 使用 AppRole 登录\n   */\n  private async loginAppRole(roleId: string, secretId: string, mount: string): Promise<void> {\n    const response = await this.authRequest\n      .post<OpenBaoAuthResponse>(`${this.config.address}/v1/auth/${mount}/login`)\n      .type('application/json')\n      .send({ role_id: roleId, secret_id: secretId })\n\n    this.handleAuthResponse(response)\n  }\n\n  /**\n   * 使用 Kubernetes ServiceAccount 登录\n   */\n  private async loginKubernetes(\n    role: string,\n    jwt?: string,\n    tokenPath?: string,\n    mount = 'kubernetes',\n  ): Promise<void> {\n    const resolvedJwt = jwt ?? fs.readFileSync(\n      tokenPath ?? '/var/run/secrets/kubernetes.io/serviceaccount/token',\n      'utf-8',\n    ).trim()\n\n    const response = await this.authRequest\n      .post<OpenBaoAuthResponse>(`${this.config.address}/v1/auth/${mount}/login`)\n      .type('application/json')\n      .send({ role, jwt: resolvedJwt })\n\n    this.handleAuthResponse(response)\n  }\n\n  /**\n   * 处理认证响应，提取 Token 和续期信息\n   */\n  private handleAuthResponse(response: OpenBaoAuthResponse): void {\n    this.token = response.auth.client_token\n    this.renewable = response.auth.renewable\n    this.leaseDuration = response.auth.lease_duration\n  }\n\n  /**\n   * 查询当前 Token 的信息（用于 token 认证方式，获取 TTL 和续期能力）\n   */\n  private async lookupTokenInfo(): Promise<void> {\n    try {\n      const response = await this.authRequest\n        .get<OpenBaoTokenLookupSelfResponse>(`${this.config.address}/v1/auth/token/lookup-self`)\n        .set('X-Vault-Token', this.token!)\n\n      this.renewable = response.data?.renewable ?? false\n      this.leaseDuration = response.data?.ttl ?? 0\n    } catch {\n      this.logger.warn('Failed to lookup token info, assuming non-renewable static token')\n      this.renewable = false\n      this.leaseDuration = 0\n    }\n  }\n\n  // ─── Token 续期调度 ────────────────────────────────────────\n\n  /**\n   * 根据 Token 的 TTL 和续期缓冲时间，调度下一次续期\n   */\n  private scheduleRenewal(): void {\n    if (!this.renewable || this.leaseDuration <= 0) {\n      this.logger.log('Token is not renewable or has no TTL, skipping renewal schedule')\n      return\n    }\n\n    const renewBuffer = this.config.renewBufferSeconds ?? 30\n    // 续期间隔上限：min(7天, TTL * 70%)，避免 setTimeout 32 位溢出和时间漂移\n    const SEVEN_DAYS_MS = 7 * 24 * 60 * 60 * 1000\n    const maxCheckInterval = Math.min(SEVEN_DAYS_MS, this.leaseDuration * 0.7 * 1000)\n    // 在 Token 过期前 renewBuffer 秒触发续期，但不超过上限，最少 1 秒\n    const renewInMs = Math.min(\n      Math.max((this.leaseDuration - renewBuffer) * 1000, 1000),\n      maxCheckInterval,\n    )\n\n    this.renewalTimer = setTimeout(() => {\n      void this.renewToken()\n    }, renewInMs)\n\n    // 防止 timer 阻止 Node.js 进程退出\n    this.renewalTimer.unref()\n\n    this.logger.log(`Token renewal scheduled in ${renewInMs / 1000}s (TTL: ${this.leaseDuration}s, buffer: ${renewBuffer}s)`)\n  }\n\n  /**\n   * 执行 Token 续期，失败时尝试重新认证\n   */\n  private async renewToken(): Promise<void> {\n    try {\n      const response = await this.authRequest\n        .post<OpenBaoAuthResponse>(`${this.config.address}/v1/auth/token/renew-self`)\n        .type('application/json')\n        .set('X-Vault-Token', this.token!)\n\n      this.handleAuthResponse(response)\n      this.logger.log('Token renewed successfully')\n      this.scheduleRenewal()\n    } catch (renewError) {\n      this.logger.error('Failed to renew token, attempting re-authentication', renewError instanceof Error ? renewError.stack : undefined)\n\n      try {\n        await this.authenticate()\n        this.scheduleRenewal()\n      } catch (authError) {\n        this.logger.error('Re-authentication also failed, will retry in 5s', authError instanceof Error ? authError.stack : undefined)\n        this.renewalTimer = setTimeout(() => {\n          void this.renewToken()\n        }, 5000)\n        this.renewalTimer.unref()\n      }\n    }\n  }\n}\n","// Code generated by @keq-request/cli. DO NOT EDIT.\n// Code generated by @keq-request/cli. DO NOT EDIT.\n// Code generated by @keq-request/cli. DO NOT EDIT.\n\n/* @anchor:file:start */\n\nimport { Injectable, Logger } from '@nestjs/common'\nimport { Keq, KeqRequest } from 'keq'\nimport type { KubernetesReadAuthConfigurationOperation, KubernetesReadAuthConfigurationResponseBodies, KubernetesReadAuthConfigurationRequestParameters } from './types/operations/kubernetes-read-auth-configuration.type'\nimport type { KubernetesConfigureAuthOperation, KubernetesConfigureAuthResponseBodies, KubernetesConfigureAuthRequestParameters } from './types/operations/kubernetes-configure-auth.type'\nimport type { KubernetesLoginOperation, KubernetesLoginResponseBodies, KubernetesLoginRequestParameters } from './types/operations/kubernetes-login.type'\nimport type { KubernetesListAuthRolesOperation, KubernetesListAuthRolesResponseBodies, KubernetesListAuthRolesRequestParameters } from './types/operations/kubernetes-list-auth-roles.type'\nimport type { KubernetesReadAuthRoleOperation, KubernetesReadAuthRoleResponseBodies, KubernetesReadAuthRoleRequestParameters } from './types/operations/kubernetes-read-auth-role.type'\nimport type { KubernetesWriteAuthRoleOperation, KubernetesWriteAuthRoleResponseBodies, KubernetesWriteAuthRoleRequestParameters } from './types/operations/kubernetes-write-auth-role.type'\nimport type { KubernetesDeleteAuthRoleOperation, KubernetesDeleteAuthRoleResponseBodies, KubernetesDeleteAuthRoleRequestParameters } from './types/operations/kubernetes-delete-auth-role.type'\nimport type { TokenListAccessorsOperation, TokenListAccessorsResponseBodies, TokenListAccessorsRequestParameters } from './types/operations/token-list-accessors.type'\nimport type { TokenCreateOperation, TokenCreateResponseBodies, TokenCreateRequestParameters } from './types/operations/token-create.type'\nimport type { TokenCreateOrphanOperation, TokenCreateOrphanResponseBodies, TokenCreateOrphanRequestParameters } from './types/operations/token-create-orphan.type'\nimport type { TokenCreateAgainstRoleOperation, TokenCreateAgainstRoleResponseBodies, TokenCreateAgainstRoleRequestParameters } from './types/operations/token-create-against-role.type'\nimport type { TokenLookUpGetOperation, TokenLookUpGetResponseBodies, TokenLookUpGetRequestParameters } from './types/operations/token-look-up-get.type'\nimport type { TokenLookUpUpdateOperation, TokenLookUpUpdateResponseBodies, TokenLookUpUpdateRequestParameters } from './types/operations/token-look-up-update.type'\nimport type { TokenLookUpByAccessorOperation, TokenLookUpByAccessorResponseBodies, TokenLookUpByAccessorRequestParameters } from './types/operations/token-look-up-by-accessor.type'\nimport type { TokenLookUpSelfGetOperation, TokenLookUpSelfGetResponseBodies, TokenLookUpSelfGetRequestParameters } from './types/operations/token-look-up-self-get.type'\nimport type { TokenLookUpSelfUpdateOperation, TokenLookUpSelfUpdateResponseBodies, TokenLookUpSelfUpdateRequestParameters } from './types/operations/token-look-up-self-update.type'\nimport type { TokenRenewOperation, TokenRenewResponseBodies, TokenRenewRequestParameters } from './types/operations/token-renew.type'\nimport type { TokenRenewAccessorOperation, TokenRenewAccessorResponseBodies, TokenRenewAccessorRequestParameters } from './types/operations/token-renew-accessor.type'\nimport type { TokenRenewSelfOperation, TokenRenewSelfResponseBodies, TokenRenewSelfRequestParameters } from './types/operations/token-renew-self.type'\nimport type { TokenRevokeOperation, TokenRevokeResponseBodies, TokenRevokeRequestParameters } from './types/operations/token-revoke.type'\nimport type { TokenRevokeAccessorOperation, TokenRevokeAccessorResponseBodies, TokenRevokeAccessorRequestParameters } from './types/operations/token-revoke-accessor.type'\nimport type { TokenRevokeOrphanOperation, TokenRevokeOrphanResponseBodies, TokenRevokeOrphanRequestParameters } from './types/operations/token-revoke-orphan.type'\nimport type { TokenRevokeSelfOperation, TokenRevokeSelfResponseBodies, TokenRevokeSelfRequestParameters } from './types/operations/token-revoke-self.type'\nimport type { TokenListRolesOperation, TokenListRolesResponseBodies, TokenListRolesRequestParameters } from './types/operations/token-list-roles.type'\nimport type { TokenReadRoleOperation, TokenReadRoleResponseBodies, TokenReadRoleRequestParameters } from './types/operations/token-read-role.type'\nimport type { TokenWriteRoleOperation, TokenWriteRoleResponseBodies, TokenWriteRoleRequestParameters } from './types/operations/token-write-role.type'\nimport type { TokenDeleteRoleOperation, TokenDeleteRoleResponseBodies, TokenDeleteRoleRequestParameters } from './types/operations/token-delete-role.type'\nimport type { TokenTidyOperation, TokenTidyResponseBodies, TokenTidyRequestParameters } from './types/operations/token-tidy.type'\nimport type { UserpassLoginOperation, UserpassLoginResponseBodies, UserpassLoginRequestParameters } from './types/operations/userpass-login.type'\nimport type { UserpassListUsersOperation, UserpassListUsersResponseBodies, UserpassListUsersRequestParameters } from './types/operations/userpass-list-users.type'\nimport type { UserpassReadUserOperation, UserpassReadUserResponseBodies, UserpassReadUserRequestParameters } from './types/operations/userpass-read-user.type'\nimport type { UserpassWriteUserOperation, UserpassWriteUserResponseBodies, UserpassWriteUserRequestParameters } from './types/operations/userpass-write-user.type'\nimport type { UserpassDeleteUserOperation, UserpassDeleteUserResponseBodies, UserpassDeleteUserRequestParameters } from './types/operations/userpass-delete-user.type'\nimport type { UserpassResetPasswordOperation, UserpassResetPasswordResponseBodies, UserpassResetPasswordRequestParameters } from './types/operations/userpass-reset-password.type'\nimport type { UserpassUpdatePoliciesOperation, UserpassUpdatePoliciesResponseBodies, UserpassUpdatePoliciesRequestParameters } from './types/operations/userpass-update-policies.type'\nimport type { CubbyholeReadOperation, CubbyholeReadResponseBodies, CubbyholeReadRequestParameters } from './types/operations/cubbyhole-read.type'\nimport type { CubbyholeWriteOperation, CubbyholeWriteResponseBodies, CubbyholeWriteRequestParameters } from './types/operations/cubbyhole-write.type'\nimport type { CubbyholeDeleteOperation, CubbyholeDeleteResponseBodies, CubbyholeDeleteRequestParameters } from './types/operations/cubbyhole-delete.type'\nimport type { AliasCreateOperation, AliasCreateResponseBodies, AliasCreateRequestParameters } from './types/operations/alias-create.type'\nimport type { AliasListByIdOperation, AliasListByIdResponseBodies, AliasListByIdRequestParameters } from './types/operations/alias-list-by-id.type'\nimport type { AliasReadByIdOperation, AliasReadByIdResponseBodies, AliasReadByIdRequestParameters } from './types/operations/alias-read-by-id.type'\nimport type { AliasUpdateByIdOperation, AliasUpdateByIdResponseBodies, AliasUpdateByIdRequestParameters } from './types/operations/alias-update-by-id.type'\nimport type { AliasDeleteByIdOperation, AliasDeleteByIdResponseBodies, AliasDeleteByIdRequestParameters } from './types/operations/alias-delete-by-id.type'\nimport type { EntityCreateOperation, EntityCreateResponseBodies, EntityCreateRequestParameters } from './types/operations/entity-create.type'\nimport type { EntityCreateAliasOperation, EntityCreateAliasResponseBodies, EntityCreateAliasRequestParameters } from './types/operations/entity-create-alias.type'\nimport type { EntityListAliasesByIdOperation, EntityListAliasesByIdResponseBodies, EntityListAliasesByIdRequestParameters } from './types/operations/entity-list-aliases-by-id.type'\nimport type { EntityReadAliasByIdOperation, EntityReadAliasByIdResponseBodies, EntityReadAliasByIdRequestParameters } from './types/operations/entity-read-alias-by-id.type'\nimport type { EntityUpdateAliasByIdOperation, EntityUpdateAliasByIdResponseBodies, EntityUpdateAliasByIdRequestParameters } from './types/operations/entity-update-alias-by-id.type'\nimport type { EntityDeleteAliasByIdOperation, EntityDeleteAliasByIdResponseBodies, EntityDeleteAliasByIdRequestParameters } from './types/operations/entity-delete-alias-by-id.type'\nimport type { EntityBatchDeleteOperation, EntityBatchDeleteResponseBodies, EntityBatchDeleteRequestParameters } from './types/operations/entity-batch-delete.type'\nimport type { EntityListByIdOperation, EntityListByIdResponseBodies, EntityListByIdRequestParameters } from './types/operations/entity-list-by-id.type'\nimport type { EntityReadByIdOperation, EntityReadByIdResponseBodies, EntityReadByIdRequestParameters } from './types/operations/entity-read-by-id.type'\nimport type { EntityUpdateByIdOperation, EntityUpdateByIdResponseBodies, EntityUpdateByIdRequestParameters } from './types/operations/entity-update-by-id.type'\nimport type { EntityDeleteByIdOperation, EntityDeleteByIdResponseBodies, EntityDeleteByIdRequestParameters } from './types/operations/entity-delete-by-id.type'\nimport type { EntityMergeOperation, EntityMergeResponseBodies, EntityMergeRequestParameters } from './types/operations/entity-merge.type'\nimport type { EntityListByNameOperation, EntityListByNameResponseBodies, EntityListByNameRequestParameters } from './types/operations/entity-list-by-name.type'\nimport type { EntityReadByNameOperation, EntityReadByNameResponseBodies, EntityReadByNameRequestParameters } from './types/operations/entity-read-by-name.type'\nimport type { EntityUpdateByNameOperation, EntityUpdateByNameResponseBodies, EntityUpdateByNameRequestParameters } from './types/operations/entity-update-by-name.type'\nimport type { EntityDeleteByNameOperation, EntityDeleteByNameResponseBodies, EntityDeleteByNameRequestParameters } from './types/operations/entity-delete-by-name.type'\nimport type { GroupCreateOperation, GroupCreateResponseBodies, GroupCreateRequestParameters } from './types/operations/group-create.type'\nimport type { GroupCreateAliasOperation, GroupCreateAliasResponseBodies, GroupCreateAliasRequestParameters } from './types/operations/group-create-alias.type'\nimport type { GroupListAliasesByIdOperation, GroupListAliasesByIdResponseBodies, GroupListAliasesByIdRequestParameters } from './types/operations/group-list-aliases-by-id.type'\nimport type { GroupReadAliasByIdOperation, GroupReadAliasByIdResponseBodies, GroupReadAliasByIdRequestParameters } from './types/operations/group-read-alias-by-id.type'\nimport type { GroupUpdateAliasByIdOperation, GroupUpdateAliasByIdResponseBodies, GroupUpdateAliasByIdRequestParameters } from './types/operations/group-update-alias-by-id.type'\nimport type { GroupDeleteAliasByIdOperation, GroupDeleteAliasByIdResponseBodies, GroupDeleteAliasByIdRequestParameters } from './types/operations/group-delete-alias-by-id.type'\nimport type { GroupListByIdOperation, GroupListByIdResponseBodies, GroupListByIdRequestParameters } from './types/operations/group-list-by-id.type'\nimport type { GroupReadByIdOperation, GroupReadByIdResponseBodies, GroupReadByIdRequestParameters } from './types/operations/group-read-by-id.type'\nimport type { GroupUpdateByIdOperation, GroupUpdateByIdResponseBodies, GroupUpdateByIdRequestParameters } from './types/operations/group-update-by-id.type'\nimport type { GroupDeleteByIdOperation, GroupDeleteByIdResponseBodies, GroupDeleteByIdRequestParameters } from './types/operations/group-delete-by-id.type'\nimport type { GroupListByNameOperation, GroupListByNameResponseBodies, GroupListByNameRequestParameters } from './types/operations/group-list-by-name.type'\nimport type { GroupReadByNameOperation, GroupReadByNameResponseBodies, GroupReadByNameRequestParameters } from './types/operations/group-read-by-name.type'\nimport type { GroupUpdateByNameOperation, GroupUpdateByNameResponseBodies, GroupUpdateByNameRequestParameters } from './types/operations/group-update-by-name.type'\nimport type { GroupDeleteByNameOperation, GroupDeleteByNameResponseBodies, GroupDeleteByNameRequestParameters } from './types/operations/group-delete-by-name.type'\nimport type { EntityLookUpOperation, EntityLookUpResponseBodies, EntityLookUpRequestParameters } from './types/operations/entity-look-up.type'\nimport type { GroupLookUpOperation, GroupLookUpResponseBodies, GroupLookUpRequestParameters } from './types/operations/group-look-up.type'\nimport type { MfaListLoginEnforcementsOperation, MfaListLoginEnforcementsResponseBodies, MfaListLoginEnforcementsRequestParameters } from './types/operations/mfa-list-login-enforcements.type'\nimport type { MfaReadLoginEnforcementOperation, MfaReadLoginEnforcementResponseBodies, MfaReadLoginEnforcementRequestParameters } from './types/operations/mfa-read-login-enforcement.type'\nimport type { MfaWriteLoginEnforcementOperation, MfaWriteLoginEnforcementResponseBodies, MfaWriteLoginEnforcementRequestParameters } from './types/operations/mfa-write-login-enforcement.type'\nimport type { MfaDeleteLoginEnforcementOperation, MfaDeleteLoginEnforcementResponseBodies, MfaDeleteLoginEnforcementRequestParameters } from './types/operations/mfa-delete-login-enforcement.type'\nimport type { MfaListMethodsOperation, MfaListMethodsResponseBodies, MfaListMethodsRequestParameters } from './types/operations/mfa-list-methods.type'\nimport type { MfaListDuoMethodsOperation, MfaListDuoMethodsResponseBodies, MfaListDuoMethodsRequestParameters } from './types/operations/mfa-list-duo-methods.type'\nimport type { MfaReadDuoMethodConfigurationOperation, MfaReadDuoMethodConfigurationResponseBodies, MfaReadDuoMethodConfigurationRequestParameters } from './types/operations/mfa-read-duo-method-configuration.type'\nimport type { MfaConfigureDuoMethodOperation, MfaConfigureDuoMethodResponseBodies, MfaConfigureDuoMethodRequestParameters } from './types/operations/mfa-configure-duo-method.type'\nimport type { MfaDeleteDuoMethodOperation, MfaDeleteDuoMethodResponseBodies, MfaDeleteDuoMethodRequestParameters } from './types/operations/mfa-delete-duo-method.type'\nimport type { MfaListOktaMethodsOperation, MfaListOktaMethodsResponseBodies, MfaListOktaMethodsRequestParameters } from './types/operations/mfa-list-okta-methods.type'\nimport type { MfaReadOktaMethodConfigurationOperation, MfaReadOktaMethodConfigurationResponseBodies, MfaReadOktaMethodConfigurationRequestParameters } from './types/operations/mfa-read-okta-method-configuration.type'\nimport type { MfaConfigureOktaMethodOperation, MfaConfigureOktaMethodResponseBodies, MfaConfigureOktaMethodRequestParameters } from './types/operations/mfa-configure-okta-method.type'\nimport type { MfaDeleteOktaMethodOperation, MfaDeleteOktaMethodResponseBodies, MfaDeleteOktaMethodRequestParameters } from './types/operations/mfa-delete-okta-method.type'\nimport type { MfaListPingIdMethodsOperation, MfaListPingIdMethodsResponseBodies, MfaListPingIdMethodsRequestParameters } from './types/operations/mfa-list-ping-id-methods.type'\nimport type { MfaReadPingIdMethodConfigurationOperation, MfaReadPingIdMethodConfigurationResponseBodies, MfaReadPingIdMethodConfigurationRequestParameters } from './types/operations/mfa-read-ping-id-method-configuration.type'\nimport type { MfaConfigurePingIdMethodOperation, MfaConfigurePingIdMethodResponseBodies, MfaConfigurePingIdMethodRequestParameters } from './types/operations/mfa-configure-ping-id-method.type'\nimport type { MfaDeletePingIdMethodOperation, MfaDeletePingIdMethodResponseBodies, MfaDeletePingIdMethodRequestParameters } from './types/operations/mfa-delete-ping-id-method.type'\nimport type { MfaListTotpMethodsOperation, MfaListTotpMethodsResponseBodies, MfaListTotpMethodsRequestParameters } from './types/operations/mfa-list-totp-methods.type'\nimport type { MfaAdminDestroyTotpSecretOperation, MfaAdminDestroyTotpSecretResponseBodies, MfaAdminDestroyTotpSecretRequestParameters } from './types/operations/mfa-admin-destroy-totp-secret.type'\nimport type { MfaAdminGenerateTotpSecretOperation, MfaAdminGenerateTotpSecretResponseBodies, MfaAdminGenerateTotpSecretRequestParameters } from './types/operations/mfa-admin-generate-totp-secret.type'\nimport type { MfaGenerateTotpSecretOperation, MfaGenerateTotpSecretResponseBodies, MfaGenerateTotpSecretRequestParameters } from './types/operations/mfa-generate-totp-secret.type'\nimport type { MfaReadTotpMethodConfigurationOperation, MfaReadTotpMethodConfigurationResponseBodies, MfaReadTotpMethodConfigurationRequestParameters } from './types/operations/mfa-read-totp-method-configuration.type'\nimport type { MfaConfigureTotpMethodOperation, MfaConfigureTotpMethodResponseBodies, MfaConfigureTotpMethodRequestParameters } from './types/operations/mfa-configure-totp-method.type'\nimport type { MfaDeleteTotpMethodOperation, MfaDeleteTotpMethodResponseBodies, MfaDeleteTotpMethodRequestParameters } from './types/operations/mfa-delete-totp-method.type'\nimport type { MfaReadMethodConfigurationOperation, MfaReadMethodConfigurationResponseBodies, MfaReadMethodConfigurationRequestParameters } from './types/operations/mfa-read-method-configuration.type'\nimport type { OidcReadPublicKeysOperation, OidcReadPublicKeysResponseBodies, OidcReadPublicKeysRequestParameters } from './types/operations/oidc-read-public-keys.type'\nimport type { OidcReadOpenIdConfigurationOperation, OidcReadOpenIdConfigurationResponseBodies, OidcReadOpenIdConfigurationRequestParameters } from './types/operations/oidc-read-open-id-configuration.type'\nimport type { OidcListAssignmentsOperation, OidcListAssignmentsResponseBodies, OidcListAssignmentsRequestParameters } from './types/operations/oidc-list-assignments.type'\nimport type { OidcReadAssignmentOperation, OidcReadAssignmentResponseBodies, OidcReadAssignmentRequestParameters } from './types/operations/oidc-read-assignment.type'\nimport type { OidcWriteAssignmentOperation, OidcWriteAssignmentResponseBodies, OidcWriteAssignmentRequestParameters } from './types/operations/oidc-write-assignment.type'\nimport type { OidcDeleteAssignmentOperation, OidcDeleteAssignmentResponseBodies, OidcDeleteAssignmentRequestParameters } from './types/operations/oidc-delete-assignment.type'\nimport type { OidcListClientsOperation, OidcListClientsResponseBodies, OidcListClientsRequestParameters } from './types/operations/oidc-list-clients.type'\nimport type { OidcReadClientOperation, OidcReadClientResponseBodies, OidcReadClientRequestParameters } from './types/operations/oidc-read-client.type'\nimport type { OidcWriteClientOperation, OidcWriteClientResponseBodies, OidcWriteClientRequestParameters } from './types/operations/oidc-write-client.type'\nimport type { OidcDeleteClientOperation, OidcDeleteClientResponseBodies, OidcDeleteClientRequestParameters } from './types/operations/oidc-delete-client.type'\nimport type { OidcReadConfigurationOperation, OidcReadConfigurationResponseBodies, OidcReadConfigurationRequestParameters } from './types/operations/oidc-read-configuration.type'\nimport type { OidcConfigureOperation, OidcConfigureResponseBodies, OidcConfigureRequestParameters } from './types/operations/oidc-configure.type'\nimport type { OidcIntrospectOperation, OidcIntrospectResponseBodies, OidcIntrospectRequestParameters } from './types/operations/oidc-introspect.type'\nimport type { OidcListKeysOperation, OidcListKeysResponseBodies, OidcListKeysRequestParameters } from './types/operations/oidc-list-keys.type'\nimport type { OidcReadKeyOperation, OidcReadKeyResponseBodies, OidcReadKeyRequestParameters } from './types/operations/oidc-read-key.type'\nimport type { OidcWriteKeyOperation, OidcWriteKeyResponseBodies, OidcWriteKeyRequestParameters } from './types/operations/oidc-write-key.type'\nimport type { OidcDeleteKeyOperation, OidcDeleteKeyResponseBodies, OidcDeleteKeyRequestParameters } from './types/operations/oidc-delete-key.type'\nimport type { OidcRotateKeyOperation, OidcRotateKeyResponseBodies, OidcRotateKeyRequestParameters } from './types/operations/oidc-rotate-key.type'\nimport type { OidcListProvidersOperation, OidcListProvidersResponseBodies, OidcListProvidersRequestParameters } from './types/operations/oidc-list-providers.type'\nimport type { OidcReadProviderOperation, OidcReadProviderResponseBodies, OidcReadProviderRequestParameters } from './types/operations/oidc-read-provider.type'\nimport type { OidcWriteProviderOperation, OidcWriteProviderResponseBodies, OidcWriteProviderRequestParameters } from './types/operations/oidc-write-provider.type'\nimport type { OidcDeleteProviderOperation, OidcDeleteProviderResponseBodies, OidcDeleteProviderRequestParameters } from './types/operations/oidc-delete-provider.type'\nimport type { OidcReadProviderPublicKeysOperation, OidcReadProviderPublicKeysResponseBodies, OidcReadProviderPublicKeysRequestParameters } from './types/operations/oidc-read-provider-public-keys.type'\nimport type { OidcReadProviderOpenIdConfigurationOperation, OidcReadProviderOpenIdConfigurationResponseBodies, OidcReadProviderOpenIdConfigurationRequestParameters } from './types/operations/oidc-read-provider-open-id-configuration.type'\nimport type { OidcProviderAuthorizeOperation, OidcProviderAuthorizeResponseBodies, OidcProviderAuthorizeRequestParameters } from './types/operations/oidc-provider-authorize.type'\nimport type { OidcProviderAuthorizeWithParametersOperation, OidcProviderAuthorizeWithParametersResponseBodies, OidcProviderAuthorizeWithParametersRequestParameters } from './types/operations/oidc-provider-authorize-with-parameters.type'\nimport type { OidcProviderTokenOperation, OidcProviderTokenResponseBodies, OidcProviderTokenRequestParameters } from './types/operations/oidc-provider-token.type'\nimport type { OidcProviderUserInfoOperation, OidcProviderUserInfoResponseBodies, OidcProviderUserInfoRequestParameters } from './types/operations/oidc-provider-user-info.type'\nimport type { OidcListRolesOperation, OidcListRolesResponseBodies, OidcListRolesRequestParameters } from './types/operations/oidc-list-roles.type'\nimport type { OidcReadRoleOperation, OidcReadRoleResponseBodies, OidcReadRoleRequestParameters } from './types/operations/oidc-read-role.type'\nimport type { OidcWriteRoleOperation, OidcWriteRoleResponseBodies, OidcWriteRoleRequestParameters } from './types/operations/oidc-write-role.type'\nimport type { OidcDeleteRoleOperation, OidcDeleteRoleResponseBodies, OidcDeleteRoleRequestParameters } from './types/operations/oidc-delete-role.type'\nimport type { OidcListScopesOperation, OidcListScopesResponseBodies, OidcListScopesRequestParameters } from './types/operations/oidc-list-scopes.type'\nimport type { OidcReadScopeOperation, OidcReadScopeResponseBodies, OidcReadScopeRequestParameters } from './types/operations/oidc-read-scope.type'\nimport type { OidcWriteScopeOperation, OidcWriteScopeResponseBodies, OidcWriteScopeRequestParameters } from './types/operations/oidc-write-scope.type'\nimport type { OidcDeleteScopeOperation, OidcDeleteScopeResponseBodies, OidcDeleteScopeRequestParameters } from './types/operations/oidc-delete-scope.type'\nimport type { OidcGenerateTokenOperation, OidcGenerateTokenResponseBodies, OidcGenerateTokenRequestParameters } from './types/operations/oidc-generate-token.type'\nimport type { PersonaCreateOperation, PersonaCreateResponseBodies, PersonaCreateRequestParameters } from './types/operations/persona-create.type'\nimport type { PersonaListByIdOperation, PersonaListByIdResponseBodies, PersonaListByIdRequestParameters } from './types/operations/persona-list-by-id.type'\nimport type { PersonaReadByIdOperation, PersonaReadByIdResponseBodies, PersonaReadByIdRequestParameters } from './types/operations/persona-read-by-id.type'\nimport type { PersonaUpdateByIdOperation, PersonaUpdateByIdResponseBodies, PersonaUpdateByIdRequestParameters } from './types/operations/persona-update-by-id.type'\nimport type { PersonaDeleteByIdOperation, PersonaDeleteByIdResponseBodies, PersonaDeleteByIdRequestParameters } from './types/operations/persona-delete-by-id.type'\nimport type { KvReadConfigOperation, KvReadConfigResponseBodies, KvReadConfigRequestParameters } from './types/operations/kv-read-config.type'\nimport type { KvWriteConfigOperation, KvWriteConfigResponseBodies, KvWriteConfigRequestParameters } from './types/operations/kv-write-config.type'\nimport type { KvReadDataPathOperation, KvReadDataPathResponseBodies, KvReadDataPathRequestParameters } from './types/operations/kv-read-data-path.type'\nimport type { KvWriteDataPathOperation, KvWriteDataPathResponseBodies, KvWriteDataPathRequestParameters } from './types/operations/kv-write-data-path.type'\nimport type { KvDeleteDataPathOperation, KvDeleteDataPathResponseBodies, KvDeleteDataPathRequestParameters } from './types/operations/kv-delete-data-path.type'\nimport type { KvWriteDeletePathOperation, KvWriteDeletePathResponseBodies, KvWriteDeletePathRequestParameters } from './types/operations/kv-write-delete-path.type'\nimport type { KvWriteDestroyPathOperation, KvWriteDestroyPathResponseBodies, KvWriteDestroyPathRequestParameters } from './types/operations/kv-write-destroy-path.type'\nimport type { KvListDetailedMetadataPathOperation, KvListDetailedMetadataPathResponseBodies, KvListDetailedMetadataPathRequestParameters } from './types/operations/kv-list-detailed-metadata-path.type'\nimport type { KvReadMetadataPathOperation, KvReadMetadataPathResponseBodies, KvReadMetadataPathRequestParameters } from './types/operations/kv-read-metadata-path.type'\nimport type { KvWriteMetadataPathOperation, KvWriteMetadataPathResponseBodies, KvWriteMetadataPathRequestParameters } from './types/operations/kv-write-metadata-path.type'\nimport type { KvDeleteMetadataPathOperation, KvDeleteMetadataPathResponseBodies, KvDeleteMetadataPathRequestParameters } from './types/operations/kv-delete-metadata-path.type'\nimport type { KvReadSubkeysPathOperation, KvReadSubkeysPathResponseBodies, KvReadSubkeysPathRequestParameters } from './types/operations/kv-read-subkeys-path.type'\nimport type { KvWriteUndeletePathOperation, KvWriteUndeletePathResponseBodies, KvWriteUndeletePathRequestParameters } from './types/operations/kv-write-undelete-path.type'\nimport type { AuditingListEnabledDevicesOperation, AuditingListEnabledDevicesResponseBodies, AuditingListEnabledDevicesRequestParameters } from './types/operations/auditing-list-enabled-devices.type'\nimport type { AuditingCalculateHashOperation, AuditingCalculateHashResponseBodies, AuditingCalculateHashRequestParameters } from './types/operations/auditing-calculate-hash.type'\nimport type { AuditingEnableDeviceOperation, AuditingEnableDeviceResponseBodies, AuditingEnableDeviceRequestParameters } from './types/operations/auditing-enable-device.type'\nimport type { AuditingDisableDeviceOperation, AuditingDisableDeviceResponseBodies, AuditingDisableDeviceRequestParameters } from './types/operations/auditing-disable-device.type'\nimport type { AuthListEnabledMethodsOperation, AuthListEnabledMethodsResponseBodies, AuthListEnabledMethodsRequestParameters } from './types/operations/auth-list-enabled-methods.type'\nimport type { AuthReadConfigurationOperation, AuthReadConfigurationResponseBodies, AuthReadConfigurationRequestParameters } from './types/operations/auth-read-configuration.type'\nimport type { AuthEnableMethodOperation, AuthEnableMethodResponseBodies, AuthEnableMethodRequestParameters } from './types/operations/auth-enable-method.type'\nimport type { AuthDisableMethodOperation, AuthDisableMethodResponseBodies, AuthDisableMethodRequestParameters } from './types/operations/auth-disable-method.type'\nimport type { AuthReadTuningInformationOperation, AuthReadTuningInformationResponseBodies, AuthReadTuningInformationRequestParameters } from './types/operations/auth-read-tuning-information.type'\nimport type { AuthTuneConfigurationParametersOperation, AuthTuneConfigurationParametersResponseBodies, AuthTuneConfigurationParametersRequestParameters } from './types/operations/auth-tune-configuration-parameters.type'\nimport type { QueryTokenCapabilitiesOperation, QueryTokenCapabilitiesResponseBodies, QueryTokenCapabilitiesRequestParameters } from './types/operations/query-token-capabilities.type'\nimport type { QueryTokenAccessorCapabilitiesOperation, QueryTokenAccessorCapabilitiesResponseBodies, QueryTokenAccessorCapabilitiesRequestParameters } from './types/operations/query-token-accessor-capabilities.type'\nimport type { QueryTokenSelfCapabilitiesOperation, QueryTokenSelfCapabilitiesResponseBodies, QueryTokenSelfCapabilitiesRequestParameters } from './types/operations/query-token-self-capabilities.type'\nimport type { AuditingListRequestHeadersOperation, AuditingListRequestHeadersResponseBodies, AuditingListRequestHeadersRequestParameters } from './types/operations/auditing-list-request-headers.type'\nimport type { AuditingReadRequestHeaderInformationOperation, AuditingReadRequestHeaderInformationResponseBodies, AuditingReadRequestHeaderInformationRequestParameters } from './types/operations/auditing-read-request-header-information.type'\nimport type { AuditingEnableRequestHeaderOperation, AuditingEnableRequestHeaderResponseBodies, AuditingEnableRequestHeaderRequestParameters } from './types/operations/auditing-enable-request-header.type'\nimport type { AuditingDisableRequestHeaderOperation, AuditingDisableRequestHeaderResponseBodies, AuditingDisableRequestHeaderRequestParameters } from './types/operations/auditing-disable-request-header.type'\nimport type { CorsReadConfigurationOperation, CorsReadConfigurationResponseBodies, CorsReadConfigurationRequestParameters } from './types/operations/cors-read-configuration.type'\nimport type { CorsConfigureOperation, CorsConfigureResponseBodies, CorsConfigureRequestParameters } from './types/operations/cors-configure.type'\nimport type { CorsDeleteConfigurationOperation, CorsDeleteConfigurationResponseBodies, CorsDeleteConfigurationRequestParameters } from './types/operations/cors-delete-configuration.type'\nimport type { ReloadSubsystemOperation, ReloadSubsystemResponseBodies, ReloadSubsystemRequestParameters } from './types/operations/reload-subsystem.type'\nimport type { ReadSanitizedConfigurationStateOperation, ReadSanitizedConfigurationStateResponseBodies, ReadSanitizedConfigurationStateRequestParameters } from './types/operations/read-sanitized-configuration-state.type'\nimport type { UiHeadersListOperation, UiHeadersListResponseBodies, UiHeadersListRequestParameters } from './types/operations/ui-headers-list.type'\nimport type { UiHeadersReadConfigurationOperation, UiHeadersReadConfigurationResponseBodies, UiHeadersReadConfigurationRequestParameters } from './types/operations/ui-headers-read-configuration.type'\nimport type { UiHeadersConfigureOperation, UiHeadersConfigureResponseBodies, UiHeadersConfigureRequestParameters } from './types/operations/ui-headers-configure.type'\nimport type { UiHeadersDeleteConfigurationOperation, UiHeadersDeleteConfigurationResponseBodies, UiHeadersDeleteConfigurationRequestParameters } from './types/operations/ui-headers-delete-configuration.type'\nimport type { DecodeOperation, DecodeResponseBodies, DecodeRequestParameters } from './types/operations/decode.type'\nimport type { RootTokenGenerationReadProgress2Operation, RootTokenGenerationReadProgress2ResponseBodies, RootTokenGenerationReadProgress2RequestParameters } from './types/operations/root-token-generation-read-progress2.type'\nimport type { RootTokenGenerationReadProgressOperation, RootTokenGenerationReadProgressResponseBodies, RootTokenGenerationReadProgressRequestParameters } from './types/operations/root-token-generation-read-progress.type'\nimport type { RootTokenGenerationInitializeOperation, RootTokenGenerationInitializeResponseBodies, RootTokenGenerationInitializeRequestParameters } from './types/operations/root-token-generation-initialize.type'\nimport type { RootTokenGenerationCancelOperation, RootTokenGenerationCancelResponseBodies, RootTokenGenerationCancelRequestParameters } from './types/operations/root-token-generation-cancel.type'\nimport type { RootTokenGenerationUpdateOperation, RootTokenGenerationUpdateResponseBodies, RootTokenGenerationUpdateRequestParameters } from './types/operations/root-token-generation-update.type'\nimport type { HaStatusOperation, HaStatusResponseBodies, HaStatusRequestParameters } from './types/operations/ha-status.type'\nimport type { ReadHealthStatusOperation, ReadHealthStatusResponseBodies, ReadHealthStatusRequestParameters } from './types/operations/read-health-status.type'\nimport type { CollectHostInformationOperation, CollectHostInformationResponseBodies, CollectHostInformationRequestParameters } from './types/operations/collect-host-information.type'\nimport type { CollectInFlightRequestInformationOperation, CollectInFlightRequestInformationResponseBodies, CollectInFlightRequestInformationRequestParameters } from './types/operations/collect-in-flight-request-information.type'\nimport type { ReadInitializationStatusOperation, ReadInitializationStatusResponseBodies, ReadInitializationStatusRequestParameters } from './types/operations/read-initialization-status.type'\nimport type { InitializeSystemOperation, InitializeSystemResponseBodies, InitializeSystemRequestParameters } from './types/operations/initialize-system.type'\nimport type { EncryptionKeyStatusOperation, EncryptionKeyStatusResponseBodies, EncryptionKeyStatusRequestParameters } from './types/operations/encryption-key-status.type'\nimport type { LeaderStatusOperation, LeaderStatusResponseBodies, LeaderStatusRequestParameters } from './types/operations/leader-status.type'\nimport type { LeasesListOperation, LeasesListResponseBodies, LeasesListRequestParameters } from './types/operations/leases-list.type'\nimport type { LeasesCountOperation, LeasesCountResponseBodies, LeasesCountRequestParameters } from './types/operations/leases-count.type'\nimport type { LeasesReadLeaseOperation, LeasesReadLeaseResponseBodies, LeasesReadLeaseRequestParameters } from './types/operations/leases-read-lease.type'\nimport type { LeasesLookUpOperation, LeasesLookUpResponseBodies, LeasesLookUpRequestParameters } from './types/operations/leases-look-up.type'\nimport type { LeasesLookUpWithPrefixOperation, LeasesLookUpWithPrefixResponseBodies, LeasesLookUpWithPrefixRequestParameters } from './types/operations/leases-look-up-with-prefix.type'\nimport type { LeasesRenewLeaseOperation, LeasesRenewLeaseResponseBodies, LeasesRenewLeaseRequestParameters } from './types/operations/leases-renew-lease.type'\nimport type { LeasesRenewLeaseWithIdOperation, LeasesRenewLeaseWithIdResponseBodies, LeasesRenewLeaseWithIdRequestParameters } from './types/operations/leases-renew-lease-with-id.type'\nimport type { LeasesRevokeLeaseOperation, LeasesRevokeLeaseResponseBodies, LeasesRevokeLeaseRequestParameters } from './types/operations/leases-revoke-lease.type'\nimport type { LeasesForceRevokeLeaseWithPrefixOperation, LeasesForceRevokeLeaseWithPrefixResponseBodies, LeasesForceRevokeLeaseWithPrefixRequestParameters } from './types/operations/leases-force-revoke-lease-with-prefix.type'\nimport type { LeasesRevokeLeaseWithPrefixOperation, LeasesRevokeLeaseWithPrefixResponseBodies, LeasesRevokeLeaseWithPrefixRequestParameters } from './types/operations/leases-revoke-lease-with-prefix.type'\nimport type { LeasesRevokeLeaseWithIdOperation, LeasesRevokeLeaseWithIdResponseBodies, LeasesRevokeLeaseWithIdRequestParameters } from './types/operations/leases-revoke-lease-with-id.type'\nimport type { LeasesTidyOperation, LeasesTidyResponseBodies, LeasesTidyRequestParameters } from './types/operations/leases-tidy.type'\nimport type { LockedUsersListOperation, LockedUsersListResponseBodies, LockedUsersListRequestParameters } from './types/operations/locked-users-list.type'\nimport type { LockedUsersUnlockOperation, LockedUsersUnlockResponseBodies, LockedUsersUnlockRequestParameters } from './types/operations/locked-users-unlock.type'\nimport type { LoggersReadVerbosityLevelOperation, LoggersReadVerbosityLevelResponseBodies, LoggersReadVerbosityLevelRequestParameters } from './types/operations/loggers-read-verbosity-level.type'\nimport type { LoggersUpdateVerbosityLevelOperation, LoggersUpdateVerbosityLevelResponseBodies, LoggersUpdateVerbosityLevelRequestParameters } from './types/operations/loggers-update-verbosity-level.type'\nimport type { LoggersRevertVerbosityLevelOperation, LoggersRevertVerbosityLevelResponseBodies, LoggersRevertVerbosityLevelRequestParameters } from './types/operations/loggers-revert-verbosity-level.type'\nimport type { LoggersReadVerbosityLevelForOperation, LoggersReadVerbosityLevelForResponseBodies, LoggersReadVerbosityLevelForRequestParameters } from './types/operations/loggers-read-verbosity-level-for.type'\nimport type { LoggersUpdateVerbosityLevelForOperation, LoggersUpdateVerbosityLevelForResponseBodies, LoggersUpdateVerbosityLevelForRequestParameters } from './types/operations/loggers-update-verbosity-level-for.type'\nimport type { LoggersRevertVerbosityLevelForOperation, LoggersRevertVerbosityLevelForResponseBodies, LoggersRevertVerbosityLevelForRequestParameters } from './types/operations/loggers-revert-verbosity-level-for.type'\nimport type { MetricsOperation, MetricsResponseBodies, MetricsRequestParameters } from './types/operations/metrics.type'\nimport type { MfaValidateOperation, MfaValidateResponseBodies, MfaValidateRequestParameters } from './types/operations/mfa-validate.type'\nimport type { MonitorOperation, MonitorResponseBodies, MonitorRequestParameters } from './types/operations/monitor.type'\nimport type { MountsListSecretsEnginesOperation, MountsListSecretsEnginesResponseBodies, MountsListSecretsEnginesRequestParameters } from './types/operations/mounts-list-secrets-engines.type'\nimport type { MountsReadConfigurationOperation, MountsReadConfigurationResponseBodies, MountsReadConfigurationRequestParameters } from './types/operations/mounts-read-configuration.type'\nimport type { MountsEnableSecretsEngineOperation, MountsEnableSecretsEngineResponseBodies, MountsEnableSecretsEngineRequestParameters } from './types/operations/mounts-enable-secrets-engine.type'\nimport type { MountsDisableSecretsEngineOperation, MountsDisableSecretsEngineResponseBodies, MountsDisableSecretsEngineRequestParameters } from './types/operations/mounts-disable-secrets-engine.type'\nimport type { MountsReadTuningInformationOperation, MountsReadTuningInformationResponseBodies, MountsReadTuningInformationRequestParameters } from './types/operations/mounts-read-tuning-information.type'\nimport type { MountsTuneConfigurationParametersOperation, MountsTuneConfigurationParametersResponseBodies, MountsTuneConfigurationParametersRequestParameters } from './types/operations/mounts-tune-configuration-parameters.type'\nimport type { NamespacesListNamespacesOperation, NamespacesListNamespacesResponseBodies, NamespacesListNamespacesRequestParameters } from './types/operations/namespaces-list-namespaces.type'\nimport type { NamespacesWriteNamespacesApiLockLockOperation, NamespacesWriteNamespacesApiLockLockResponseBodies, NamespacesWriteNamespacesApiLockLockRequestParameters } from './types/operations/namespaces-write-namespaces-api-lock-lock.type'\nimport type { NamespacesWriteNamespacesApiLockLockPathOperation, NamespacesWriteNamespacesApiLockLockPathResponseBodies, NamespacesWriteNamespacesApiLockLockPathRequestParameters } from './types/operations/namespaces-write-namespaces-api-lock-lock-path.type'\nimport type { NamespacesWriteNamespacesApiLockUnlockOperation, NamespacesWriteNamespacesApiLockUnlockResponseBodies, NamespacesWriteNamespacesApiLockUnlockRequestParameters } from './types/operations/namespaces-write-namespaces-api-lock-unlock.type'\nimport type { NamespacesWriteNamespacesApiLockUnlockPathOperation, NamespacesWriteNamespacesApiLockUnlockPathResponseBodies, NamespacesWriteNamespacesApiLockUnlockPathRequestParameters } from './types/operations/namespaces-write-namespaces-api-lock-unlock-path.type'\nimport type { NamespacesReadNamespacesPathOperation, NamespacesReadNamespacesPathResponseBodies, NamespacesReadNamespacesPathRequestParameters } from './types/operations/namespaces-read-namespaces-path.type'\nimport type { NamespacesWriteNamespacesPathOperation, NamespacesWriteNamespacesPathResponseBodies, NamespacesWriteNamespacesPathRequestParameters } from './types/operations/namespaces-write-namespaces-path.type'\nimport type { NamespacesDeleteNamespacesPathOperation, NamespacesDeleteNamespacesPathResponseBodies, NamespacesDeleteNamespacesPathRequestParameters } from './types/operations/namespaces-delete-namespaces-path.type'\nimport type { PluginsCatalogListPluginsOperation, PluginsCatalogListPluginsResponseBodies, PluginsCatalogListPluginsRequestParameters } from './types/operations/plugins-catalog-list-plugins.type'\nimport type { PluginsCatalogReadPluginConfigurationOperation, PluginsCatalogReadPluginConfigurationResponseBodies, PluginsCatalogReadPluginConfigurationRequestParameters } from './types/operations/plugins-catalog-read-plugin-configuration.type'\nimport type { PluginsCatalogRegisterPluginOperation, PluginsCatalogRegisterPluginResponseBodies, PluginsCatalogRegisterPluginRequestParameters } from './types/operations/plugins-catalog-register-plugin.type'\nimport type { PluginsCatalogRemovePluginOperation, PluginsCatalogRemovePluginResponseBodies, PluginsCatalogRemovePluginRequestParameters } from './types/operations/plugins-catalog-remove-plugin.type'\nimport type { PluginsCatalogListPluginsWithTypeOperation, PluginsCatalogListPluginsWithTypeResponseBodies, PluginsCatalogListPluginsWithTypeRequestParameters } from './types/operations/plugins-catalog-list-plugins-with-type.type'\nimport type { PluginsCatalogReadPluginConfigurationWithTypeOperation, PluginsCatalogReadPluginConfigurationWithTypeResponseBodies, PluginsCatalogReadPluginConfigurationWithTypeRequestParameters } from './types/operations/plugins-catalog-read-plugin-configuration-with-type.type'\nimport type { PluginsCatalogRegisterPluginWithTypeOperation, PluginsCatalogRegisterPluginWithTypeResponseBodies, PluginsCatalogRegisterPluginWithTypeRequestParameters } from './types/operations/plugins-catalog-register-plugin-with-type.type'\nimport type { PluginsCatalogRemovePluginWithTypeOperation, PluginsCatalogRemovePluginWithTypeResponseBodies, PluginsCatalogRemovePluginWithTypeRequestParameters } from './types/operations/plugins-catalog-remove-plugin-with-type.type'\nimport type { PluginsReloadBackendsOperation, PluginsReloadBackendsResponseBodies, PluginsReloadBackendsRequestParameters } from './types/operations/plugins-reload-backends.type'\nimport type { PoliciesListAclPoliciesOperation, PoliciesListAclPoliciesResponseBodies, PoliciesListAclPoliciesRequestParameters } from './types/operations/policies-list-acl-policies.type'\nimport type { PoliciesReadAclPolicyOperation, PoliciesReadAclPolicyResponseBodies, PoliciesReadAclPolicyRequestParameters } from './types/operations/policies-read-acl-policy.type'\nimport type { PoliciesWriteAclPolicyOperation, PoliciesWriteAclPolicyResponseBodies, PoliciesWriteAclPolicyRequestParameters } from './types/operations/policies-write-acl-policy.type'\nimport type { PoliciesDeleteAclPolicyOperation, PoliciesDeleteAclPolicyResponseBodies, PoliciesDeleteAclPolicyRequestParameters } from './types/operations/policies-delete-acl-policy.type'\nimport type { SystemListPoliciesDetailedAclOperation, SystemListPoliciesDetailedAclResponseBodies, SystemListPoliciesDetailedAclRequestParameters } from './types/operations/system-list-policies-detailed-acl.type'\nimport type { SystemListPoliciesDetailedAclNameOperation, SystemListPoliciesDetailedAclNameResponseBodies, SystemListPoliciesDetailedAclNameRequestParameters } from './types/operations/system-list-policies-detailed-acl-name.type'\nimport type { PoliciesListPasswordPoliciesOperation, PoliciesListPasswordPoliciesResponseBodies, PoliciesListPasswordPoliciesRequestParameters } from './types/operations/policies-list-password-policies.type'\nimport type { PoliciesReadPasswordPolicyOperation, PoliciesReadPasswordPolicyResponseBodies, PoliciesReadPasswordPolicyRequestParameters } from './types/operations/policies-read-password-policy.type'\nimport type { PoliciesWritePasswordPolicyOperation, PoliciesWritePasswordPolicyResponseBodies, PoliciesWritePasswordPolicyRequestParameters } from './types/operations/policies-write-password-policy.type'\nimport type { PoliciesDeletePasswordPolicyOperation, PoliciesDeletePasswordPolicyResponseBodies, PoliciesDeletePasswordPolicyRequestParameters } from './types/operations/policies-delete-password-policy.type'\nimport type { PoliciesGeneratePasswordFromPasswordPolicyOperation, PoliciesGeneratePasswordFromPasswordPolicyResponseBodies, PoliciesGeneratePasswordFromPasswordPolicyRequestParameters } from './types/operations/policies-generate-password-from-password-policy.type'\nimport type { PoliciesListOperation, PoliciesListResponseBodies, PoliciesListRequestParameters } from './types/operations/policies-list.type'\nimport type { RateLimitQuotasReadConfigurationOperation, RateLimitQuotasReadConfigurationResponseBodies, RateLimitQuotasReadConfigurationRequestParameters } from './types/operations/rate-limit-quotas-read-configuration.type'\nimport type { RateLimitQuotasConfigureOperation, RateLimitQuotasConfigureResponseBodies, RateLimitQuotasConfigureRequestParameters } from './types/operations/rate-limit-quotas-configure.type'\nimport type { RateLimitQuotasListOperation, RateLimitQuotasListResponseBodies, RateLimitQuotasListRequestParameters } from './types/operations/rate-limit-quotas-list.type'\nimport type { RateLimitQuotasReadOperation, RateLimitQuotasReadResponseBodies, RateLimitQuotasReadRequestParameters } from './types/operations/rate-limit-quotas-read.type'\nimport type { RateLimitQuotasWriteOperation, RateLimitQuotasWriteResponseBodies, RateLimitQuotasWriteRequestParameters } from './types/operations/rate-limit-quotas-write.type'\nimport type { RateLimitQuotasDeleteOperation, RateLimitQuotasDeleteResponseBodies, RateLimitQuotasDeleteRequestParameters } from './types/operations/rate-limit-quotas-delete.type'\nimport type { RekeyReadBackupKeyOperation, RekeyReadBackupKeyResponseBodies, RekeyReadBackupKeyRequestParameters } from './types/operations/rekey-read-backup-key.type'\nimport type { RekeyDeleteBackupKeyOperation, RekeyDeleteBackupKeyResponseBodies, RekeyDeleteBackupKeyRequestParameters } from './types/operations/rekey-delete-backup-key.type'\nimport type { RekeyAttemptReadProgressOperation, RekeyAttemptReadProgressResponseBodies, RekeyAttemptReadProgressRequestParameters } from './types/operations/rekey-attempt-read-progress.type'\nimport type { RekeyAttemptInitializeOperation, RekeyAttemptInitializeResponseBodies, RekeyAttemptInitializeRequestParameters } from './types/operations/rekey-attempt-initialize.type'\nimport type { RekeyAttemptCancelOperation, RekeyAttemptCancelResponseBodies, RekeyAttemptCancelRequestParameters } from './types/operations/rekey-attempt-cancel.type'\nimport type { RekeyReadBackupRecoveryKeyOperation, RekeyReadBackupRecoveryKeyResponseBodies, RekeyReadBackupRecoveryKeyRequestParameters } from './types/operations/rekey-read-backup-recovery-key.type'\nimport type { RekeyDeleteBackupRecoveryKeyOperation, RekeyDeleteBackupRecoveryKeyResponseBodies, RekeyDeleteBackupRecoveryKeyRequestParameters } from './types/operations/rekey-delete-backup-recovery-key.type'\nimport type { RekeyAttemptUpdateOperation, RekeyAttemptUpdateResponseBodies, RekeyAttemptUpdateRequestParameters } from './types/operations/rekey-attempt-update.type'\nimport type { RekeyVerificationReadProgressOperation, RekeyVerificationReadProgressResponseBodies, RekeyVerificationReadProgressRequestParameters } from './types/operations/rekey-verification-read-progress.type'\nimport type { RekeyVerificationUpdateOperation, RekeyVerificationUpdateResponseBodies, RekeyVerificationUpdateRequestParameters } from './types/operations/rekey-verification-update.type'\nimport type { RekeyVerificationCancelOperation, RekeyVerificationCancelResponseBodies, RekeyVerificationCancelRequestParameters } from './types/operations/rekey-verification-cancel.type'\nimport type { RemountOperation, RemountResponseBodies, RemountRequestParameters } from './types/operations/remount.type'\nimport type { RemountStatusOperation, RemountStatusResponseBodies, RemountStatusRequestParameters } from './types/operations/remount-status.type'\nimport type { EncryptionKeyRotateOperation, EncryptionKeyRotateResponseBodies, EncryptionKeyRotateRequestParameters } from './types/operations/encryption-key-rotate.type'\nimport type { EncryptionKeyReadRotationConfigurationOperation, EncryptionKeyReadRotationConfigurationResponseBodies, EncryptionKeyReadRotationConfigurationRequestParameters } from './types/operations/encryption-key-read-rotation-configuration.type'\nimport type { EncryptionKeyConfigureRotationConfigurationOperation, EncryptionKeyConfigureRotationConfigurationResponseBodies, EncryptionKeyConfigureRotationConfigurationRequestParameters } from './types/operations/encryption-key-configure-rotation-configuration.type'\nimport type { EncryptionKeyRotateRotateKeyringOperation, EncryptionKeyRotateRotateKeyringResponseBodies, EncryptionKeyRotateRotateKeyringRequestParameters } from './types/operations/encryption-key-rotate-rotate-keyring.type'\nimport type { EncryptionKeyReadRotateKeyringConfigOperation, EncryptionKeyReadRotateKeyringConfigResponseBodies, EncryptionKeyReadRotateKeyringConfigRequestParameters } from './types/operations/encryption-key-read-rotate-keyring-config.type'\nimport type { EncryptionKeyConfigureRotateKeyringConfigOperation, EncryptionKeyConfigureRotateKeyringConfigResponseBodies, EncryptionKeyConfigureRotateKeyringConfigRequestParameters } from './types/operations/encryption-key-configure-rotate-keyring-config.type'\nimport type { RotateReadRotateRecoveryBackupOperation, RotateReadRotateRecoveryBackupResponseBodies, RotateReadRotateRecoveryBackupRequestParameters } from './types/operations/rotate-read-rotate-recovery-backup.type'\nimport type { RotateDeleteRotateRecoveryBackupOperation, RotateDeleteRotateRecoveryBackupResponseBodies, RotateDeleteRotateRecoveryBackupRequestParameters } from './types/operations/rotate-delete-rotate-recovery-backup.type'\nimport type { RotateAttemptReadRotateRecoveryInitOperation, RotateAttemptReadRotateRecoveryInitResponseBodies, RotateAttemptReadRotateRecoveryInitRequestParameters } from './types/operations/rotate-attempt-read-rotate-recovery-init.type'\nimport type { RotateAttemptInitializeRotateRecoveryInitOperation, RotateAttemptInitializeRotateRecoveryInitResponseBodies, RotateAttemptInitializeRotateRecoveryInitRequestParameters } from './types/operations/rotate-attempt-initialize-rotate-recovery-init.type'\nimport type { RotateAttemptCancelRotateRecoveryInitOperation, RotateAttemptCancelRotateRecoveryInitResponseBodies, RotateAttemptCancelRotateRecoveryInitRequestParameters } from './types/operations/rotate-attempt-cancel-rotate-recovery-init.type'\nimport type { RotateAttemptUpdateRotateRecoveryUpdateOperation, RotateAttemptUpdateRotateRecoveryUpdateResponseBodies, RotateAttemptUpdateRotateRecoveryUpdateRequestParameters } from './types/operations/rotate-attempt-update-rotate-recovery-update.type'\nimport type { RotateVerificationReadRotateRecoveryVerifyOperation, RotateVerificationReadRotateRecoveryVerifyResponseBodies, RotateVerificationReadRotateRecoveryVerifyRequestParameters } from './types/operations/rotate-verification-read-rotate-recovery-verify.type'\nimport type { RotateVerificationUpdateRotateRecoveryVerifyOperation, RotateVerificationUpdateRotateRecoveryVerifyResponseBodies, RotateVerificationUpdateRotateRecoveryVerifyRequestParameters } from './types/operations/rotate-verification-update-rotate-recovery-verify.type'\nimport type { RotateVerificationCancelRotateRecoveryVerifyOperation, RotateVerificationCancelRotateRecoveryVerifyResponseBodies, RotateVerificationCancelRotateRecoveryVerifyRequestParameters } from './types/operations/rotate-verification-cancel-rotate-recovery-verify.type'\nimport type { RootKeyRotateOperation, RootKeyRotateResponseBodies, RootKeyRotateRequestParameters } from './types/operations/root-key-rotate.type'\nimport type { RotateReadBackupKeyOperation, RotateReadBackupKeyResponseBodies, RotateReadBackupKeyRequestParameters } from './types/operations/rotate-read-backup-key.type'\nimport type { RotateDeleteBackupKeyOperation, RotateDeleteBackupKeyResponseBodies, RotateDeleteBackupKeyRequestParameters } from './types/operations/rotate-delete-backup-key.type'\nimport type { RotateAttemptReadProgressOperation, RotateAttemptReadProgressResponseBodies, RotateAttemptReadProgressRequestParameters } from './types/operations/rotate-attempt-read-progress.type'\nimport type { RotateAttemptInitializeOperation, RotateAttemptInitializeResponseBodies, RotateAttemptInitializeRequestParameters } from './types/operations/rotate-attempt-initialize.type'\nimport type { RotateAttemptCancelOperation, RotateAttemptCancelResponseBodies, RotateAttemptCancelRequestParameters } from './types/operations/rotate-attempt-cancel.type'\nimport type { RotateAttemptUpdateOperation, RotateAttemptUpdateResponseBodies, RotateAttemptUpdateRequestParameters } from './types/operations/rotate-attempt-update.type'\nimport type { RotateVerificationReadProgressOperation, RotateVerificationReadProgressResponseBodies, RotateVerificationReadProgressRequestParameters } from './types/operations/rotate-verification-read-progress.type'\nimport type { RotateVerificationUpdateOperation, RotateVerificationUpdateResponseBodies, RotateVerificationUpdateRequestParameters } from './types/operations/rotate-verification-update.type'\nimport type { RotateVerificationCancelOperation, RotateVerificationCancelResponseBodies, RotateVerificationCancelRequestParameters } from './types/operations/rotate-verification-cancel.type'\nimport type { SealOperation, SealResponseBodies, SealRequestParameters } from './types/operations/seal.type'\nimport type { SealStatusOperation, SealStatusResponseBodies, SealStatusRequestParameters } from './types/operations/seal-status.type'\nimport type { StepDownLeaderOperation, StepDownLeaderResponseBodies, StepDownLeaderRequestParameters } from './types/operations/step-down-leader.type'\nimport type { GenerateHashOperation, GenerateHashResponseBodies, GenerateHashRequestParameters } from './types/operations/generate-hash.type'\nimport type { GenerateHashWithAlgorithmOperation, GenerateHashWithAlgorithmResponseBodies, GenerateHashWithAlgorithmRequestParameters } from './types/operations/generate-hash-with-algorithm.type'\nimport type { GenerateRandomOperation, GenerateRandomResponseBodies, GenerateRandomRequestParameters } from './types/operations/generate-random.type'\nimport type { GenerateRandomWithSourceOperation, GenerateRandomWithSourceResponseBodies, GenerateRandomWithSourceRequestParameters } from './types/operations/generate-random-with-source.type'\nimport type { GenerateRandomWithSourceAndBytesOperation, GenerateRandomWithSourceAndBytesResponseBodies, GenerateRandomWithSourceAndBytesRequestParameters } from './types/operations/generate-random-with-source-and-bytes.type'\nimport type { GenerateRandomWithBytesOperation, GenerateRandomWithBytesResponseBodies, GenerateRandomWithBytesRequestParameters } from './types/operations/generate-random-with-bytes.type'\nimport type { UnsealOperation, UnsealResponseBodies, UnsealRequestParameters } from './types/operations/unseal.type'\nimport type { ReadWrappingPropertiesOperation, ReadWrappingPropertiesResponseBodies, ReadWrappingPropertiesRequestParameters } from './types/operations/read-wrapping-properties.type'\nimport type { RewrapOperation, RewrapResponseBodies, RewrapRequestParameters } from './types/operations/rewrap.type'\nimport type { UnwrapOperation, UnwrapResponseBodies, UnwrapRequestParameters } from './types/operations/unwrap.type'\nimport type { WrapOperation, WrapResponseBodies, WrapRequestParameters } from './types/operations/wrap.type'\nimport type { TransitBackUpKeyOperation, TransitBackUpKeyResponseBodies, TransitBackUpKeyRequestParameters } from './types/operations/transit-back-up-key.type'\nimport type { TransitByokKeyOperation, TransitByokKeyResponseBodies, TransitByokKeyRequestParameters } from './types/operations/transit-byok-key.type'\nimport type { TransitByokKeyVersionOperation, TransitByokKeyVersionResponseBodies, TransitByokKeyVersionRequestParameters } from './types/operations/transit-byok-key-version.type'\nimport type { TransitReadCacheConfigurationOperation, TransitReadCacheConfigurationResponseBodies, TransitReadCacheConfigurationRequestParameters } from './types/operations/transit-read-cache-configuration.type'\nimport type { TransitConfigureCacheOperation, TransitConfigureCacheResponseBodies, TransitConfigureCacheRequestParameters } from './types/operations/transit-configure-cache.type'\nimport type { TransitReadKeysConfigurationOperation, TransitReadKeysConfigurationResponseBodies, TransitReadKeysConfigurationRequestParameters } from './types/operations/transit-read-keys-configuration.type'\nimport type { TransitConfigureKeysOperation, TransitConfigureKeysResponseBodies, TransitConfigureKeysRequestParameters } from './types/operations/transit-configure-keys.type'\nimport type { TransitGenerateDataKeyOperation, TransitGenerateDataKeyResponseBodies, TransitGenerateDataKeyRequestParameters } from './types/operations/transit-generate-data-key.type'\nimport type { TransitDecryptOperation, TransitDecryptResponseBodies, TransitDecryptRequestParameters } from './types/operations/transit-decrypt.type'\nimport type { TransitDeriveKeyOperation, TransitDeriveKeyResponseBodies, TransitDeriveKeyRequestParameters } from './types/operations/transit-derive-key.type'\nimport type { TransitEncryptOperation, TransitEncryptResponseBodies, TransitEncryptRequestParameters } from './types/operations/transit-encrypt.type'\nimport type { TransitExportKeyOperation, TransitExportKeyResponseBodies, TransitExportKeyRequestParameters } from './types/operations/transit-export-key.type'\nimport type { TransitExportKeyVersionOperation, TransitExportKeyVersionResponseBodies, TransitExportKeyVersionRequestParameters } from './types/operations/transit-export-key-version.type'\nimport type { TransitHashOperation, TransitHashResponseBodies, TransitHashRequestParameters } from './types/operations/transit-hash.type'\nimport type { TransitHashWithAlgorithmOperation, TransitHashWithAlgorithmResponseBodies, TransitHashWithAlgorithmRequestParameters } from './types/operations/transit-hash-with-algorithm.type'\nimport type { TransitGenerateHmacOperation, TransitGenerateHmacResponseBodies, TransitGenerateHmacRequestParameters } from './types/operations/transit-generate-hmac.type'\nimport type { TransitGenerateHmacWithAlgorithmOperation, TransitGenerateHmacWithAlgorithmResponseBodies, TransitGenerateHmacWithAlgorithmRequestParameters } from './types/operations/transit-generate-hmac-with-algorithm.type'\nimport type { TransitListKeysOperation, TransitListKeysResponseBodies, TransitListKeysRequestParameters } from './types/operations/transit-list-keys.type'\nimport type { TransitReadKeyOperation, TransitReadKeyResponseBodies, TransitReadKeyRequestParameters } from './types/operations/transit-read-key.type'\nimport type { TransitCreateKeyOperation, TransitCreateKeyResponseBodies, TransitCreateKeyRequestParameters } from './types/operations/transit-create-key.type'\nimport type { TransitDeleteKeyOperation, TransitDeleteKeyResponseBodies, TransitDeleteKeyRequestParameters } from './types/operations/transit-delete-key.type'\nimport type { TransitConfigureKeyOperation, TransitConfigureKeyResponseBodies, TransitConfigureKeyRequestParameters } from './types/operations/transit-configure-key.type'\nimport type { GetCsrOperation, GetCsrResponseBodies, GetCsrRequestParameters } from './types/operations/get-csr.type'\nimport type { TransitImportKeyOperation, TransitImportKeyResponseBodies, TransitImportKeyRequestParameters } from './types/operations/transit-import-key.type'\nimport type { TransitImportKeyVersionOperation, TransitImportKeyVersionResponseBodies, TransitImportKeyVersionRequestParameters } from './types/operations/transit-import-key-version.type'\nimport type { TransitRotateKeyOperation, TransitRotateKeyResponseBodies, TransitRotateKeyRequestParameters } from './types/operations/transit-rotate-key.type'\nimport type { SetChainOperation, SetChainResponseBodies, SetChainRequestParameters } from './types/operations/set-chain.type'\nimport type { TransitSoftDeleteKeyOperation, TransitSoftDeleteKeyResponseBodies, TransitSoftDeleteKeyRequestParameters } from './types/operations/transit-soft-delete-key.type'\nimport type { TransitSoftDeleteRestoreKeyOperation, TransitSoftDeleteRestoreKeyResponseBodies, TransitSoftDeleteRestoreKeyRequestParameters } from './types/operations/transit-soft-delete-restore-key.type'\nimport type { TransitTrimKeyOperation, TransitTrimKeyResponseBodies, TransitTrimKeyRequestParameters } from './types/operations/transit-trim-key.type'\nimport type { TransitGenerateRandomOperation, TransitGenerateRandomResponseBodies, TransitGenerateRandomRequestParameters } from './types/operations/transit-generate-random.type'\nimport type { TransitGenerateRandomWithSourceOperation, TransitGenerateRandomWithSourceResponseBodies, TransitGenerateRandomWithSourceRequestParameters } from './types/operations/transit-generate-random-with-source.type'\nimport type { TransitGenerateRandomWithSourceAndBytesOperation, TransitGenerateRandomWithSourceAndBytesResponseBodies, TransitGenerateRandomWithSourceAndBytesRequestParameters } from './types/operations/transit-generate-random-with-source-and-bytes.type'\nimport type { TransitGenerateRandomWithBytesOperation, TransitGenerateRandomWithBytesResponseBodies, TransitGenerateRandomWithBytesRequestParameters } from './types/operations/transit-generate-random-with-bytes.type'\nimport type { TransitRestoreKeyOperation, TransitRestoreKeyResponseBodies, TransitRestoreKeyRequestParameters } from './types/operations/transit-restore-key.type'\nimport type { TransitRestoreAndRenameKeyOperation, TransitRestoreAndRenameKeyResponseBodies, TransitRestoreAndRenameKeyRequestParameters } from './types/operations/transit-restore-and-rename-key.type'\nimport type { TransitRewrapOperation, TransitRewrapResponseBodies, TransitRewrapRequestParameters } from './types/operations/transit-rewrap.type'\nimport type { TransitSignOperation, TransitSignResponseBodies, TransitSignRequestParameters } from './types/operations/transit-sign.type'\nimport type { TransitSignWithAlgorithmOperation, TransitSignWithAlgorithmResponseBodies, TransitSignWithAlgorithmRequestParameters } from './types/operations/transit-sign-with-algorithm.type'\nimport type { TransitVerifyOperation, TransitVerifyResponseBodies, TransitVerifyRequestParameters } from './types/operations/transit-verify.type'\nimport type { TransitVerifyWithAlgorithmOperation, TransitVerifyWithAlgorithmResponseBodies, TransitVerifyWithAlgorithmRequestParameters } from './types/operations/transit-verify-with-algorithm.type'\nimport type { TransitReadWrappingKeyOperation, TransitReadWrappingKeyResponseBodies, TransitReadWrappingKeyRequestParameters } from './types/operations/transit-read-wrapping-key.type'\n\n@Injectable()\nexport class OpenBaoHttpClient {\n  private readonly logger = new Logger(OpenBaoHttpClient.name)\n\n  constructor(\n    // @anchor:client-constructor-parameters:start\n    private readonly request: KeqRequest,\n    // @anchor:client-constructor-parameters:end\n  ) {}\n\n\n  kubernetesReadAuthConfiguration<STATUS extends keyof KubernetesReadAuthConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: KubernetesReadAuthConfigurationRequestParameters): Keq<KubernetesReadAuthConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<KubernetesReadAuthConfigurationResponseBodies[STATUS]>('/auth/kubernetes001/config')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kubernetesConfigureAuth<STATUS extends keyof KubernetesConfigureAuthResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: KubernetesConfigureAuthRequestParameters): Keq<KubernetesConfigureAuthOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<KubernetesConfigureAuthResponseBodies[STATUS]>('/auth/kubernetes001/config')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'disable_iss_validation' in args) req.send({ disable_iss_validation: args['disable_iss_validation'] })\n    if (args && 'disable_local_ca_jwt' in args) req.send({ disable_local_ca_jwt: args['disable_local_ca_jwt'] })\n    if (args && 'issuer' in args) req.send({ issuer: args['issuer'] })\n    if (args && 'kubernetes_ca_cert' in args) req.send({ kubernetes_ca_cert: args['kubernetes_ca_cert'] })\n    if (args && 'kubernetes_host' in args) req.send({ kubernetes_host: args['kubernetes_host'] })\n    if (args && 'pem_keys' in args) req.send({ pem_keys: args['pem_keys'] })\n    if (args && 'token_reviewer_jwt' in args) req.send({ token_reviewer_jwt: args['token_reviewer_jwt'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kubernetesLogin<STATUS extends keyof KubernetesLoginResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: KubernetesLoginRequestParameters): Keq<KubernetesLoginOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<KubernetesLoginResponseBodies[STATUS]>('/auth/kubernetes001/login')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'jwt' in args) req.send({ jwt: args['jwt'] })\n    if (args && 'role' in args) req.send({ role: args['role'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kubernetesListAuthRoles<STATUS extends keyof KubernetesListAuthRolesResponseBodies, CONTENT_TYPE extends never = never>(args?: KubernetesListAuthRolesRequestParameters): Keq<KubernetesListAuthRolesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<KubernetesListAuthRolesResponseBodies[STATUS]>('/auth/kubernetes001/role')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kubernetesReadAuthRole<STATUS extends keyof KubernetesReadAuthRoleResponseBodies, CONTENT_TYPE extends never = never>(args?: KubernetesReadAuthRoleRequestParameters): Keq<KubernetesReadAuthRoleOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<KubernetesReadAuthRoleResponseBodies[STATUS]>('/auth/kubernetes001/role/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kubernetesWriteAuthRole<STATUS extends keyof KubernetesWriteAuthRoleResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: KubernetesWriteAuthRoleRequestParameters): Keq<KubernetesWriteAuthRoleOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<KubernetesWriteAuthRoleResponseBodies[STATUS]>('/auth/kubernetes001/role/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'alias_name_source' in args) req.send({ alias_name_source: args['alias_name_source'] })\n    if (args && 'audience' in args) req.send({ audience: args['audience'] })\n    if (args && 'bound_cidrs' in args) req.send({ bound_cidrs: args['bound_cidrs'] })\n    if (args && 'bound_service_account_names' in args) req.send({ bound_service_account_names: args['bound_service_account_names'] })\n    if (args && 'bound_service_account_namespace_selector' in args) req.send({ bound_service_account_namespace_selector: args['bound_service_account_namespace_selector'] })\n    if (args && 'bound_service_account_namespaces' in args) req.send({ bound_service_account_namespaces: args['bound_service_account_namespaces'] })\n    if (args && 'max_ttl' in args) req.send({ max_ttl: args['max_ttl'] })\n    if (args && 'num_uses' in args) req.send({ num_uses: args['num_uses'] })\n    if (args && 'period' in args) req.send({ period: args['period'] })\n    if (args && 'policies' in args) req.send({ policies: args['policies'] })\n    if (args && 'token_bound_cidrs' in args) req.send({ token_bound_cidrs: args['token_bound_cidrs'] })\n    if (args && 'token_explicit_max_ttl' in args) req.send({ token_explicit_max_ttl: args['token_explicit_max_ttl'] })\n    if (args && 'token_max_ttl' in args) req.send({ token_max_ttl: args['token_max_ttl'] })\n    if (args && 'token_no_default_policy' in args) req.send({ token_no_default_policy: args['token_no_default_policy'] })\n    if (args && 'token_num_uses' in args) req.send({ token_num_uses: args['token_num_uses'] })\n    if (args && 'token_period' in args) req.send({ token_period: args['token_period'] })\n    if (args && 'token_policies' in args) req.send({ token_policies: args['token_policies'] })\n    if (args && 'token_strictly_bind_ip' in args) req.send({ token_strictly_bind_ip: args['token_strictly_bind_ip'] })\n    if (args && 'token_ttl' in args) req.send({ token_ttl: args['token_ttl'] })\n    if (args && 'token_type' in args) req.send({ token_type: args['token_type'] })\n    if (args && 'ttl' in args) req.send({ ttl: args['ttl'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kubernetesDeleteAuthRole<STATUS extends keyof KubernetesDeleteAuthRoleResponseBodies, CONTENT_TYPE extends never = never>(args?: KubernetesDeleteAuthRoleRequestParameters): Keq<KubernetesDeleteAuthRoleOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<KubernetesDeleteAuthRoleResponseBodies[STATUS]>('/auth/kubernetes001/role/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenListAccessors<STATUS extends keyof TokenListAccessorsResponseBodies, CONTENT_TYPE extends never = never>(args?: TokenListAccessorsRequestParameters): Keq<TokenListAccessorsOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<TokenListAccessorsResponseBodies[STATUS]>('/auth/token/accessors')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenCreate<STATUS extends keyof TokenCreateResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TokenCreateRequestParameters): Keq<TokenCreateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TokenCreateResponseBodies[STATUS]>('/auth/token/create')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'display_name' in args) req.send({ display_name: args['display_name'] })\n    if (args && 'entity_alias' in args) req.send({ entity_alias: args['entity_alias'] })\n    if (args && 'explicit_max_ttl' in args) req.send({ explicit_max_ttl: args['explicit_max_ttl'] })\n    if (args && 'id' in args) req.send({ id: args['id'] })\n    if (args && 'lease' in args) req.send({ lease: args['lease'] })\n    if (args && 'meta' in args) req.send({ meta: args['meta'] })\n    if (args && 'no_default_policy' in args) req.send({ no_default_policy: args['no_default_policy'] })\n    if (args && 'no_parent' in args) req.send({ no_parent: args['no_parent'] })\n    if (args && 'num_uses' in args) req.send({ num_uses: args['num_uses'] })\n    if (args && 'period' in args) req.send({ period: args['period'] })\n    if (args && 'policies' in args) req.send({ policies: args['policies'] })\n    if (args && 'renewable' in args) req.send({ renewable: args['renewable'] })\n    if (args && 'ttl' in args) req.send({ ttl: args['ttl'] })\n    if (args && 'type' in args) req.send({ type: args['type'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenCreateOrphan<STATUS extends keyof TokenCreateOrphanResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TokenCreateOrphanRequestParameters): Keq<TokenCreateOrphanOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TokenCreateOrphanResponseBodies[STATUS]>('/auth/token/create-orphan')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'display_name' in args) req.send({ display_name: args['display_name'] })\n    if (args && 'entity_alias' in args) req.send({ entity_alias: args['entity_alias'] })\n    if (args && 'explicit_max_ttl' in args) req.send({ explicit_max_ttl: args['explicit_max_ttl'] })\n    if (args && 'id' in args) req.send({ id: args['id'] })\n    if (args && 'lease' in args) req.send({ lease: args['lease'] })\n    if (args && 'meta' in args) req.send({ meta: args['meta'] })\n    if (args && 'no_default_policy' in args) req.send({ no_default_policy: args['no_default_policy'] })\n    if (args && 'no_parent' in args) req.send({ no_parent: args['no_parent'] })\n    if (args && 'num_uses' in args) req.send({ num_uses: args['num_uses'] })\n    if (args && 'period' in args) req.send({ period: args['period'] })\n    if (args && 'policies' in args) req.send({ policies: args['policies'] })\n    if (args && 'renewable' in args) req.send({ renewable: args['renewable'] })\n    if (args && 'ttl' in args) req.send({ ttl: args['ttl'] })\n    if (args && 'type' in args) req.send({ type: args['type'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenCreateAgainstRole<STATUS extends keyof TokenCreateAgainstRoleResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TokenCreateAgainstRoleRequestParameters): Keq<TokenCreateAgainstRoleOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TokenCreateAgainstRoleResponseBodies[STATUS]>('/auth/token/create/{role_name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'display_name' in args) req.send({ display_name: args['display_name'] })\n    if (args && 'entity_alias' in args) req.send({ entity_alias: args['entity_alias'] })\n    if (args && 'explicit_max_ttl' in args) req.send({ explicit_max_ttl: args['explicit_max_ttl'] })\n    if (args && 'id' in args) req.send({ id: args['id'] })\n    if (args && 'lease' in args) req.send({ lease: args['lease'] })\n    if (args && 'meta' in args) req.send({ meta: args['meta'] })\n    if (args && 'no_default_policy' in args) req.send({ no_default_policy: args['no_default_policy'] })\n    if (args && 'no_parent' in args) req.send({ no_parent: args['no_parent'] })\n    if (args && 'num_uses' in args) req.send({ num_uses: args['num_uses'] })\n    if (args && 'period' in args) req.send({ period: args['period'] })\n    if (args && 'policies' in args) req.send({ policies: args['policies'] })\n    if (args && 'renewable' in args) req.send({ renewable: args['renewable'] })\n    if (args && 'ttl' in args) req.send({ ttl: args['ttl'] })\n    if (args && 'type' in args) req.send({ type: args['type'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenLookUpGet<STATUS extends keyof TokenLookUpGetResponseBodies, CONTENT_TYPE extends never = never>(args?: TokenLookUpGetRequestParameters): Keq<TokenLookUpGetOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<TokenLookUpGetResponseBodies[STATUS]>('/auth/token/lookup')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenLookUpUpdate<STATUS extends keyof TokenLookUpUpdateResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TokenLookUpUpdateRequestParameters): Keq<TokenLookUpUpdateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TokenLookUpUpdateResponseBodies[STATUS]>('/auth/token/lookup')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'token' in args) req.send({ token: args['token'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenLookUpByAccessor<STATUS extends keyof TokenLookUpByAccessorResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TokenLookUpByAccessorRequestParameters): Keq<TokenLookUpByAccessorOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TokenLookUpByAccessorResponseBodies[STATUS]>('/auth/token/lookup-accessor')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'accessor' in args) req.send({ accessor: args['accessor'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenLookUpSelfGet<STATUS extends keyof TokenLookUpSelfGetResponseBodies, CONTENT_TYPE extends never = never>(args?: TokenLookUpSelfGetRequestParameters): Keq<TokenLookUpSelfGetOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<TokenLookUpSelfGetResponseBodies[STATUS]>('/auth/token/lookup-self')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenLookUpSelfUpdate<STATUS extends keyof TokenLookUpSelfUpdateResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TokenLookUpSelfUpdateRequestParameters): Keq<TokenLookUpSelfUpdateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TokenLookUpSelfUpdateResponseBodies[STATUS]>('/auth/token/lookup-self')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'token' in args) req.send({ token: args['token'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenRenew<STATUS extends keyof TokenRenewResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TokenRenewRequestParameters): Keq<TokenRenewOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TokenRenewResponseBodies[STATUS]>('/auth/token/renew')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'increment' in args) req.send({ increment: args['increment'] })\n    if (args && 'token' in args) req.send({ token: args['token'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenRenewAccessor<STATUS extends keyof TokenRenewAccessorResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TokenRenewAccessorRequestParameters): Keq<TokenRenewAccessorOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TokenRenewAccessorResponseBodies[STATUS]>('/auth/token/renew-accessor')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'accessor' in args) req.send({ accessor: args['accessor'] })\n    if (args && 'increment' in args) req.send({ increment: args['increment'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenRenewSelf<STATUS extends keyof TokenRenewSelfResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TokenRenewSelfRequestParameters): Keq<TokenRenewSelfOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TokenRenewSelfResponseBodies[STATUS]>('/auth/token/renew-self')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'increment' in args) req.send({ increment: args['increment'] })\n    if (args && 'token' in args) req.send({ token: args['token'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenRevoke<STATUS extends keyof TokenRevokeResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TokenRevokeRequestParameters): Keq<TokenRevokeOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TokenRevokeResponseBodies[STATUS]>('/auth/token/revoke')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'token' in args) req.send({ token: args['token'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenRevokeAccessor<STATUS extends keyof TokenRevokeAccessorResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TokenRevokeAccessorRequestParameters): Keq<TokenRevokeAccessorOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TokenRevokeAccessorResponseBodies[STATUS]>('/auth/token/revoke-accessor')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'accessor' in args) req.send({ accessor: args['accessor'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenRevokeOrphan<STATUS extends keyof TokenRevokeOrphanResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TokenRevokeOrphanRequestParameters): Keq<TokenRevokeOrphanOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TokenRevokeOrphanResponseBodies[STATUS]>('/auth/token/revoke-orphan')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'token' in args) req.send({ token: args['token'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenRevokeSelf<STATUS extends keyof TokenRevokeSelfResponseBodies, CONTENT_TYPE extends never = never>(args?: TokenRevokeSelfRequestParameters): Keq<TokenRevokeSelfOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TokenRevokeSelfResponseBodies[STATUS]>('/auth/token/revoke-self')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenListRoles<STATUS extends keyof TokenListRolesResponseBodies, CONTENT_TYPE extends never = never>(args?: TokenListRolesRequestParameters): Keq<TokenListRolesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<TokenListRolesResponseBodies[STATUS]>('/auth/token/roles')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenReadRole<STATUS extends keyof TokenReadRoleResponseBodies, CONTENT_TYPE extends never = never>(args?: TokenReadRoleRequestParameters): Keq<TokenReadRoleOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<TokenReadRoleResponseBodies[STATUS]>('/auth/token/roles/{role_name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenWriteRole<STATUS extends keyof TokenWriteRoleResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TokenWriteRoleRequestParameters): Keq<TokenWriteRoleOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TokenWriteRoleResponseBodies[STATUS]>('/auth/token/roles/{role_name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'allowed_entity_aliases' in args) req.send({ allowed_entity_aliases: args['allowed_entity_aliases'] })\n    if (args && 'allowed_policies' in args) req.send({ allowed_policies: args['allowed_policies'] })\n    if (args && 'allowed_policies_glob' in args) req.send({ allowed_policies_glob: args['allowed_policies_glob'] })\n    if (args && 'bound_cidrs' in args) req.send({ bound_cidrs: args['bound_cidrs'] })\n    if (args && 'disallowed_policies' in args) req.send({ disallowed_policies: args['disallowed_policies'] })\n    if (args && 'disallowed_policies_glob' in args) req.send({ disallowed_policies_glob: args['disallowed_policies_glob'] })\n    if (args && 'explicit_max_ttl' in args) req.send({ explicit_max_ttl: args['explicit_max_ttl'] })\n    if (args && 'orphan' in args) req.send({ orphan: args['orphan'] })\n    if (args && 'path_suffix' in args) req.send({ path_suffix: args['path_suffix'] })\n    if (args && 'period' in args) req.send({ period: args['period'] })\n    if (args && 'renewable' in args) req.send({ renewable: args['renewable'] })\n    if (args && 'token_bound_cidrs' in args) req.send({ token_bound_cidrs: args['token_bound_cidrs'] })\n    if (args && 'token_explicit_max_ttl' in args) req.send({ token_explicit_max_ttl: args['token_explicit_max_ttl'] })\n    if (args && 'token_no_default_policy' in args) req.send({ token_no_default_policy: args['token_no_default_policy'] })\n    if (args && 'token_num_uses' in args) req.send({ token_num_uses: args['token_num_uses'] })\n    if (args && 'token_period' in args) req.send({ token_period: args['token_period'] })\n    if (args && 'token_type' in args) req.send({ token_type: args['token_type'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenDeleteRole<STATUS extends keyof TokenDeleteRoleResponseBodies, CONTENT_TYPE extends never = never>(args?: TokenDeleteRoleRequestParameters): Keq<TokenDeleteRoleOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<TokenDeleteRoleResponseBodies[STATUS]>('/auth/token/roles/{role_name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  tokenTidy<STATUS extends keyof TokenTidyResponseBodies, CONTENT_TYPE extends never = never>(args?: TokenTidyRequestParameters): Keq<TokenTidyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TokenTidyResponseBodies[STATUS]>('/auth/token/tidy')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  userpassLogin<STATUS extends keyof UserpassLoginResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: UserpassLoginRequestParameters): Keq<UserpassLoginOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<UserpassLoginResponseBodies[STATUS]>('/auth/userpass/login/{username}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'password' in args) req.send({ password: args['password'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  userpassListUsers<STATUS extends keyof UserpassListUsersResponseBodies, CONTENT_TYPE extends never = never>(args?: UserpassListUsersRequestParameters): Keq<UserpassListUsersOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<UserpassListUsersResponseBodies[STATUS]>('/auth/userpass/users')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  userpassReadUser<STATUS extends keyof UserpassReadUserResponseBodies, CONTENT_TYPE extends never = never>(args?: UserpassReadUserRequestParameters): Keq<UserpassReadUserOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<UserpassReadUserResponseBodies[STATUS]>('/auth/userpass/users/{username}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  userpassWriteUser<STATUS extends keyof UserpassWriteUserResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: UserpassWriteUserRequestParameters): Keq<UserpassWriteUserOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<UserpassWriteUserResponseBodies[STATUS]>('/auth/userpass/users/{username}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'bound_cidrs' in args) req.send({ bound_cidrs: args['bound_cidrs'] })\n    if (args && 'max_ttl' in args) req.send({ max_ttl: args['max_ttl'] })\n    if (args && 'password' in args) req.send({ password: args['password'] })\n    if (args && 'policies' in args) req.send({ policies: args['policies'] })\n    if (args && 'token_bound_cidrs' in args) req.send({ token_bound_cidrs: args['token_bound_cidrs'] })\n    if (args && 'token_explicit_max_ttl' in args) req.send({ token_explicit_max_ttl: args['token_explicit_max_ttl'] })\n    if (args && 'token_max_ttl' in args) req.send({ token_max_ttl: args['token_max_ttl'] })\n    if (args && 'token_no_default_policy' in args) req.send({ token_no_default_policy: args['token_no_default_policy'] })\n    if (args && 'token_num_uses' in args) req.send({ token_num_uses: args['token_num_uses'] })\n    if (args && 'token_period' in args) req.send({ token_period: args['token_period'] })\n    if (args && 'token_policies' in args) req.send({ token_policies: args['token_policies'] })\n    if (args && 'token_strictly_bind_ip' in args) req.send({ token_strictly_bind_ip: args['token_strictly_bind_ip'] })\n    if (args && 'token_ttl' in args) req.send({ token_ttl: args['token_ttl'] })\n    if (args && 'token_type' in args) req.send({ token_type: args['token_type'] })\n    if (args && 'ttl' in args) req.send({ ttl: args['ttl'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  userpassDeleteUser<STATUS extends keyof UserpassDeleteUserResponseBodies, CONTENT_TYPE extends never = never>(args?: UserpassDeleteUserRequestParameters): Keq<UserpassDeleteUserOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<UserpassDeleteUserResponseBodies[STATUS]>('/auth/userpass/users/{username}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  userpassResetPassword<STATUS extends keyof UserpassResetPasswordResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: UserpassResetPasswordRequestParameters): Keq<UserpassResetPasswordOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<UserpassResetPasswordResponseBodies[STATUS]>('/auth/userpass/users/{username}/password')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'password' in args) req.send({ password: args['password'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  userpassUpdatePolicies<STATUS extends keyof UserpassUpdatePoliciesResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: UserpassUpdatePoliciesRequestParameters): Keq<UserpassUpdatePoliciesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<UserpassUpdatePoliciesResponseBodies[STATUS]>('/auth/userpass/users/{username}/policies')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'policies' in args) req.send({ policies: args['policies'] })\n    if (args && 'token_policies' in args) req.send({ token_policies: args['token_policies'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Retrieve the secret at the specified location.\n   *\n   */\n  cubbyholeRead<STATUS extends keyof CubbyholeReadResponseBodies, CONTENT_TYPE extends never = never>(args?: CubbyholeReadRequestParameters): Keq<CubbyholeReadOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<CubbyholeReadResponseBodies[STATUS]>('/cubbyhole/{path}')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Store a secret at the specified location.\n   *\n   */\n  cubbyholeWrite<STATUS extends keyof CubbyholeWriteResponseBodies, CONTENT_TYPE extends never = never>(args?: CubbyholeWriteRequestParameters): Keq<CubbyholeWriteOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<CubbyholeWriteResponseBodies[STATUS]>('/cubbyhole/{path}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Deletes the secret at the specified location.\n   *\n   */\n  cubbyholeDelete<STATUS extends keyof CubbyholeDeleteResponseBodies, CONTENT_TYPE extends never = never>(args?: CubbyholeDeleteRequestParameters): Keq<CubbyholeDeleteOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<CubbyholeDeleteResponseBodies[STATUS]>('/cubbyhole/{path}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  aliasCreate<STATUS extends keyof AliasCreateResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: AliasCreateRequestParameters): Keq<AliasCreateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<AliasCreateResponseBodies[STATUS]>('/identity/alias')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'canonical_id' in args) req.send({ canonical_id: args['canonical_id'] })\n    if (args && 'entity_id' in args) req.send({ entity_id: args['entity_id'] })\n    if (args && 'id' in args) req.send({ id: args['id'] })\n    if (args && 'mount_accessor' in args) req.send({ mount_accessor: args['mount_accessor'] })\n    if (args && 'name' in args) req.send({ name: args['name'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  aliasListById<STATUS extends keyof AliasListByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: AliasListByIdRequestParameters): Keq<AliasListByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<AliasListByIdResponseBodies[STATUS]>('/identity/alias/id')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  aliasReadById<STATUS extends keyof AliasReadByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: AliasReadByIdRequestParameters): Keq<AliasReadByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<AliasReadByIdResponseBodies[STATUS]>('/identity/alias/id/{id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  aliasUpdateById<STATUS extends keyof AliasUpdateByIdResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: AliasUpdateByIdRequestParameters): Keq<AliasUpdateByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<AliasUpdateByIdResponseBodies[STATUS]>('/identity/alias/id/{id}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'canonical_id' in args) req.send({ canonical_id: args['canonical_id'] })\n    if (args && 'entity_id' in args) req.send({ entity_id: args['entity_id'] })\n    if (args && 'mount_accessor' in args) req.send({ mount_accessor: args['mount_accessor'] })\n    if (args && 'name' in args) req.send({ name: args['name'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  aliasDeleteById<STATUS extends keyof AliasDeleteByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: AliasDeleteByIdRequestParameters): Keq<AliasDeleteByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<AliasDeleteByIdResponseBodies[STATUS]>('/identity/alias/id/{id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityCreate<STATUS extends keyof EntityCreateResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: EntityCreateRequestParameters): Keq<EntityCreateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<EntityCreateResponseBodies[STATUS]>('/identity/entity')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'disabled' in args) req.send({ disabled: args['disabled'] })\n    if (args && 'id' in args) req.send({ id: args['id'] })\n    if (args && 'metadata' in args) req.send({ metadata: args['metadata'] })\n    if (args && 'name' in args) req.send({ name: args['name'] })\n    if (args && 'policies' in args) req.send({ policies: args['policies'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityCreateAlias<STATUS extends keyof EntityCreateAliasResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: EntityCreateAliasRequestParameters): Keq<EntityCreateAliasOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<EntityCreateAliasResponseBodies[STATUS]>('/identity/entity-alias')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'canonical_id' in args) req.send({ canonical_id: args['canonical_id'] })\n    if (args && 'custom_metadata' in args) req.send({ custom_metadata: args['custom_metadata'] })\n    if (args && 'entity_id' in args) req.send({ entity_id: args['entity_id'] })\n    if (args && 'id' in args) req.send({ id: args['id'] })\n    if (args && 'mount_accessor' in args) req.send({ mount_accessor: args['mount_accessor'] })\n    if (args && 'name' in args) req.send({ name: args['name'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityListAliasesById<STATUS extends keyof EntityListAliasesByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: EntityListAliasesByIdRequestParameters): Keq<EntityListAliasesByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<EntityListAliasesByIdResponseBodies[STATUS]>('/identity/entity-alias/id')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityReadAliasById<STATUS extends keyof EntityReadAliasByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: EntityReadAliasByIdRequestParameters): Keq<EntityReadAliasByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<EntityReadAliasByIdResponseBodies[STATUS]>('/identity/entity-alias/id/{id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityUpdateAliasById<STATUS extends keyof EntityUpdateAliasByIdResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: EntityUpdateAliasByIdRequestParameters): Keq<EntityUpdateAliasByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<EntityUpdateAliasByIdResponseBodies[STATUS]>('/identity/entity-alias/id/{id}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'canonical_id' in args) req.send({ canonical_id: args['canonical_id'] })\n    if (args && 'custom_metadata' in args) req.send({ custom_metadata: args['custom_metadata'] })\n    if (args && 'entity_id' in args) req.send({ entity_id: args['entity_id'] })\n    if (args && 'mount_accessor' in args) req.send({ mount_accessor: args['mount_accessor'] })\n    if (args && 'name' in args) req.send({ name: args['name'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityDeleteAliasById<STATUS extends keyof EntityDeleteAliasByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: EntityDeleteAliasByIdRequestParameters): Keq<EntityDeleteAliasByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<EntityDeleteAliasByIdResponseBodies[STATUS]>('/identity/entity-alias/id/{id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityBatchDelete<STATUS extends keyof EntityBatchDeleteResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: EntityBatchDeleteRequestParameters): Keq<EntityBatchDeleteOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<EntityBatchDeleteResponseBodies[STATUS]>('/identity/entity/batch-delete')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'entity_ids' in args) req.send({ entity_ids: args['entity_ids'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityListById<STATUS extends keyof EntityListByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: EntityListByIdRequestParameters): Keq<EntityListByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<EntityListByIdResponseBodies[STATUS]>('/identity/entity/id')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityReadById<STATUS extends keyof EntityReadByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: EntityReadByIdRequestParameters): Keq<EntityReadByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<EntityReadByIdResponseBodies[STATUS]>('/identity/entity/id/{id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityUpdateById<STATUS extends keyof EntityUpdateByIdResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: EntityUpdateByIdRequestParameters): Keq<EntityUpdateByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<EntityUpdateByIdResponseBodies[STATUS]>('/identity/entity/id/{id}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'disabled' in args) req.send({ disabled: args['disabled'] })\n    if (args && 'metadata' in args) req.send({ metadata: args['metadata'] })\n    if (args && 'name' in args) req.send({ name: args['name'] })\n    if (args && 'policies' in args) req.send({ policies: args['policies'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityDeleteById<STATUS extends keyof EntityDeleteByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: EntityDeleteByIdRequestParameters): Keq<EntityDeleteByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<EntityDeleteByIdResponseBodies[STATUS]>('/identity/entity/id/{id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityMerge<STATUS extends keyof EntityMergeResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: EntityMergeRequestParameters): Keq<EntityMergeOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<EntityMergeResponseBodies[STATUS]>('/identity/entity/merge')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'conflicting_alias_ids_to_keep' in args) req.send({ conflicting_alias_ids_to_keep: args['conflicting_alias_ids_to_keep'] })\n    if (args && 'force' in args) req.send({ force: args['force'] })\n    if (args && 'from_entity_ids' in args) req.send({ from_entity_ids: args['from_entity_ids'] })\n    if (args && 'to_entity_id' in args) req.send({ to_entity_id: args['to_entity_id'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityListByName<STATUS extends keyof EntityListByNameResponseBodies, CONTENT_TYPE extends never = never>(args?: EntityListByNameRequestParameters): Keq<EntityListByNameOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<EntityListByNameResponseBodies[STATUS]>('/identity/entity/name')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityReadByName<STATUS extends keyof EntityReadByNameResponseBodies, CONTENT_TYPE extends never = never>(args?: EntityReadByNameRequestParameters): Keq<EntityReadByNameOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<EntityReadByNameResponseBodies[STATUS]>('/identity/entity/name/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityUpdateByName<STATUS extends keyof EntityUpdateByNameResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: EntityUpdateByNameRequestParameters): Keq<EntityUpdateByNameOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<EntityUpdateByNameResponseBodies[STATUS]>('/identity/entity/name/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'disabled' in args) req.send({ disabled: args['disabled'] })\n    if (args && 'id' in args) req.send({ id: args['id'] })\n    if (args && 'metadata' in args) req.send({ metadata: args['metadata'] })\n    if (args && 'policies' in args) req.send({ policies: args['policies'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityDeleteByName<STATUS extends keyof EntityDeleteByNameResponseBodies, CONTENT_TYPE extends never = never>(args?: EntityDeleteByNameRequestParameters): Keq<EntityDeleteByNameOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<EntityDeleteByNameResponseBodies[STATUS]>('/identity/entity/name/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  groupCreate<STATUS extends keyof GroupCreateResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: GroupCreateRequestParameters): Keq<GroupCreateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<GroupCreateResponseBodies[STATUS]>('/identity/group')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'id' in args) req.send({ id: args['id'] })\n    if (args && 'member_entity_ids' in args) req.send({ member_entity_ids: args['member_entity_ids'] })\n    if (args && 'member_group_ids' in args) req.send({ member_group_ids: args['member_group_ids'] })\n    if (args && 'metadata' in args) req.send({ metadata: args['metadata'] })\n    if (args && 'name' in args) req.send({ name: args['name'] })\n    if (args && 'policies' in args) req.send({ policies: args['policies'] })\n    if (args && 'type' in args) req.send({ type: args['type'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  groupCreateAlias<STATUS extends keyof GroupCreateAliasResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: GroupCreateAliasRequestParameters): Keq<GroupCreateAliasOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<GroupCreateAliasResponseBodies[STATUS]>('/identity/group-alias')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'canonical_id' in args) req.send({ canonical_id: args['canonical_id'] })\n    if (args && 'id' in args) req.send({ id: args['id'] })\n    if (args && 'mount_accessor' in args) req.send({ mount_accessor: args['mount_accessor'] })\n    if (args && 'name' in args) req.send({ name: args['name'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  groupListAliasesById<STATUS extends keyof GroupListAliasesByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: GroupListAliasesByIdRequestParameters): Keq<GroupListAliasesByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<GroupListAliasesByIdResponseBodies[STATUS]>('/identity/group-alias/id')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  groupReadAliasById<STATUS extends keyof GroupReadAliasByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: GroupReadAliasByIdRequestParameters): Keq<GroupReadAliasByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<GroupReadAliasByIdResponseBodies[STATUS]>('/identity/group-alias/id/{id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  groupUpdateAliasById<STATUS extends keyof GroupUpdateAliasByIdResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: GroupUpdateAliasByIdRequestParameters): Keq<GroupUpdateAliasByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<GroupUpdateAliasByIdResponseBodies[STATUS]>('/identity/group-alias/id/{id}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'canonical_id' in args) req.send({ canonical_id: args['canonical_id'] })\n    if (args && 'mount_accessor' in args) req.send({ mount_accessor: args['mount_accessor'] })\n    if (args && 'name' in args) req.send({ name: args['name'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  groupDeleteAliasById<STATUS extends keyof GroupDeleteAliasByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: GroupDeleteAliasByIdRequestParameters): Keq<GroupDeleteAliasByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<GroupDeleteAliasByIdResponseBodies[STATUS]>('/identity/group-alias/id/{id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  groupListById<STATUS extends keyof GroupListByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: GroupListByIdRequestParameters): Keq<GroupListByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<GroupListByIdResponseBodies[STATUS]>('/identity/group/id')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  groupReadById<STATUS extends keyof GroupReadByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: GroupReadByIdRequestParameters): Keq<GroupReadByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<GroupReadByIdResponseBodies[STATUS]>('/identity/group/id/{id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  groupUpdateById<STATUS extends keyof GroupUpdateByIdResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: GroupUpdateByIdRequestParameters): Keq<GroupUpdateByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<GroupUpdateByIdResponseBodies[STATUS]>('/identity/group/id/{id}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'member_entity_ids' in args) req.send({ member_entity_ids: args['member_entity_ids'] })\n    if (args && 'member_group_ids' in args) req.send({ member_group_ids: args['member_group_ids'] })\n    if (args && 'metadata' in args) req.send({ metadata: args['metadata'] })\n    if (args && 'name' in args) req.send({ name: args['name'] })\n    if (args && 'policies' in args) req.send({ policies: args['policies'] })\n    if (args && 'type' in args) req.send({ type: args['type'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  groupDeleteById<STATUS extends keyof GroupDeleteByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: GroupDeleteByIdRequestParameters): Keq<GroupDeleteByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<GroupDeleteByIdResponseBodies[STATUS]>('/identity/group/id/{id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  groupListByName<STATUS extends keyof GroupListByNameResponseBodies, CONTENT_TYPE extends never = never>(args?: GroupListByNameRequestParameters): Keq<GroupListByNameOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<GroupListByNameResponseBodies[STATUS]>('/identity/group/name')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  groupReadByName<STATUS extends keyof GroupReadByNameResponseBodies, CONTENT_TYPE extends never = never>(args?: GroupReadByNameRequestParameters): Keq<GroupReadByNameOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<GroupReadByNameResponseBodies[STATUS]>('/identity/group/name/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  groupUpdateByName<STATUS extends keyof GroupUpdateByNameResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: GroupUpdateByNameRequestParameters): Keq<GroupUpdateByNameOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<GroupUpdateByNameResponseBodies[STATUS]>('/identity/group/name/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'id' in args) req.send({ id: args['id'] })\n    if (args && 'member_entity_ids' in args) req.send({ member_entity_ids: args['member_entity_ids'] })\n    if (args && 'member_group_ids' in args) req.send({ member_group_ids: args['member_group_ids'] })\n    if (args && 'metadata' in args) req.send({ metadata: args['metadata'] })\n    if (args && 'policies' in args) req.send({ policies: args['policies'] })\n    if (args && 'type' in args) req.send({ type: args['type'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  groupDeleteByName<STATUS extends keyof GroupDeleteByNameResponseBodies, CONTENT_TYPE extends never = never>(args?: GroupDeleteByNameRequestParameters): Keq<GroupDeleteByNameOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<GroupDeleteByNameResponseBodies[STATUS]>('/identity/group/name/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  entityLookUp<STATUS extends keyof EntityLookUpResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: EntityLookUpRequestParameters): Keq<EntityLookUpOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<EntityLookUpResponseBodies[STATUS]>('/identity/lookup/entity')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'alias_id' in args) req.send({ alias_id: args['alias_id'] })\n    if (args && 'alias_mount_accessor' in args) req.send({ alias_mount_accessor: args['alias_mount_accessor'] })\n    if (args && 'alias_name' in args) req.send({ alias_name: args['alias_name'] })\n    if (args && 'id' in args) req.send({ id: args['id'] })\n    if (args && 'name' in args) req.send({ name: args['name'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  groupLookUp<STATUS extends keyof GroupLookUpResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: GroupLookUpRequestParameters): Keq<GroupLookUpOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<GroupLookUpResponseBodies[STATUS]>('/identity/lookup/group')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'alias_id' in args) req.send({ alias_id: args['alias_id'] })\n    if (args && 'alias_mount_accessor' in args) req.send({ alias_mount_accessor: args['alias_mount_accessor'] })\n    if (args && 'alias_name' in args) req.send({ alias_name: args['alias_name'] })\n    if (args && 'id' in args) req.send({ id: args['id'] })\n    if (args && 'name' in args) req.send({ name: args['name'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * List login enforcements\n   *\n   */\n  mfaListLoginEnforcements<STATUS extends keyof MfaListLoginEnforcementsResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaListLoginEnforcementsRequestParameters): Keq<MfaListLoginEnforcementsOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MfaListLoginEnforcementsResponseBodies[STATUS]>('/identity/mfa/login-enforcement')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Read the current login enforcement\n   *\n   */\n  mfaReadLoginEnforcement<STATUS extends keyof MfaReadLoginEnforcementResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaReadLoginEnforcementRequestParameters): Keq<MfaReadLoginEnforcementOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MfaReadLoginEnforcementResponseBodies[STATUS]>('/identity/mfa/login-enforcement/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Create or update a login enforcement\n   *\n   */\n  mfaWriteLoginEnforcement<STATUS extends keyof MfaWriteLoginEnforcementResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: MfaWriteLoginEnforcementRequestParameters): Keq<MfaWriteLoginEnforcementOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<MfaWriteLoginEnforcementResponseBodies[STATUS]>('/identity/mfa/login-enforcement/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'auth_method_accessors' in args) req.send({ auth_method_accessors: args['auth_method_accessors'] })\n    if (args && 'auth_method_types' in args) req.send({ auth_method_types: args['auth_method_types'] })\n    if (args && 'identity_entity_ids' in args) req.send({ identity_entity_ids: args['identity_entity_ids'] })\n    if (args && 'identity_group_ids' in args) req.send({ identity_group_ids: args['identity_group_ids'] })\n    if (args && 'mfa_method_ids' in args) req.send({ mfa_method_ids: args['mfa_method_ids'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Delete a login enforcement\n   *\n   */\n  mfaDeleteLoginEnforcement<STATUS extends keyof MfaDeleteLoginEnforcementResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaDeleteLoginEnforcementRequestParameters): Keq<MfaDeleteLoginEnforcementOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<MfaDeleteLoginEnforcementResponseBodies[STATUS]>('/identity/mfa/login-enforcement/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * List MFA method configurations for all MFA methods\n   *\n   */\n  mfaListMethods<STATUS extends keyof MfaListMethodsResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaListMethodsRequestParameters): Keq<MfaListMethodsOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MfaListMethodsResponseBodies[STATUS]>('/identity/mfa/method')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * List MFA method configurations for the given MFA method\n   *\n   */\n  mfaListDuoMethods<STATUS extends keyof MfaListDuoMethodsResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaListDuoMethodsRequestParameters): Keq<MfaListDuoMethodsOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MfaListDuoMethodsResponseBodies[STATUS]>('/identity/mfa/method/duo')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Read the current configuration for the given MFA method\n   *\n   */\n  mfaReadDuoMethodConfiguration<STATUS extends keyof MfaReadDuoMethodConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaReadDuoMethodConfigurationRequestParameters): Keq<MfaReadDuoMethodConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MfaReadDuoMethodConfigurationResponseBodies[STATUS]>('/identity/mfa/method/duo/{method_id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Update or create a configuration for the given MFA method\n   *\n   */\n  mfaConfigureDuoMethod<STATUS extends keyof MfaConfigureDuoMethodResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: MfaConfigureDuoMethodRequestParameters): Keq<MfaConfigureDuoMethodOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<MfaConfigureDuoMethodResponseBodies[STATUS]>('/identity/mfa/method/duo/{method_id}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'api_hostname' in args) req.send({ api_hostname: args['api_hostname'] })\n    if (args && 'integration_key' in args) req.send({ integration_key: args['integration_key'] })\n    if (args && 'method_name' in args) req.send({ method_name: args['method_name'] })\n    if (args && 'push_info' in args) req.send({ push_info: args['push_info'] })\n    if (args && 'secret_key' in args) req.send({ secret_key: args['secret_key'] })\n    if (args && 'use_passcode' in args) req.send({ use_passcode: args['use_passcode'] })\n    if (args && 'username_format' in args) req.send({ username_format: args['username_format'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Delete a configuration for the given MFA method\n   *\n   */\n  mfaDeleteDuoMethod<STATUS extends keyof MfaDeleteDuoMethodResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaDeleteDuoMethodRequestParameters): Keq<MfaDeleteDuoMethodOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<MfaDeleteDuoMethodResponseBodies[STATUS]>('/identity/mfa/method/duo/{method_id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * List MFA method configurations for the given MFA method\n   *\n   */\n  mfaListOktaMethods<STATUS extends keyof MfaListOktaMethodsResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaListOktaMethodsRequestParameters): Keq<MfaListOktaMethodsOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MfaListOktaMethodsResponseBodies[STATUS]>('/identity/mfa/method/okta')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Read the current configuration for the given MFA method\n   *\n   */\n  mfaReadOktaMethodConfiguration<STATUS extends keyof MfaReadOktaMethodConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaReadOktaMethodConfigurationRequestParameters): Keq<MfaReadOktaMethodConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MfaReadOktaMethodConfigurationResponseBodies[STATUS]>('/identity/mfa/method/okta/{method_id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Update or create a configuration for the given MFA method\n   *\n   */\n  mfaConfigureOktaMethod<STATUS extends keyof MfaConfigureOktaMethodResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: MfaConfigureOktaMethodRequestParameters): Keq<MfaConfigureOktaMethodOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<MfaConfigureOktaMethodResponseBodies[STATUS]>('/identity/mfa/method/okta/{method_id}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'api_token' in args) req.send({ api_token: args['api_token'] })\n    if (args && 'base_url' in args) req.send({ base_url: args['base_url'] })\n    if (args && 'method_name' in args) req.send({ method_name: args['method_name'] })\n    if (args && 'org_name' in args) req.send({ org_name: args['org_name'] })\n    if (args && 'primary_email' in args) req.send({ primary_email: args['primary_email'] })\n    if (args && 'production' in args) req.send({ production: args['production'] })\n    if (args && 'username_format' in args) req.send({ username_format: args['username_format'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Delete a configuration for the given MFA method\n   *\n   */\n  mfaDeleteOktaMethod<STATUS extends keyof MfaDeleteOktaMethodResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaDeleteOktaMethodRequestParameters): Keq<MfaDeleteOktaMethodOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<MfaDeleteOktaMethodResponseBodies[STATUS]>('/identity/mfa/method/okta/{method_id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * List MFA method configurations for the given MFA method\n   *\n   */\n  mfaListPingIdMethods<STATUS extends keyof MfaListPingIdMethodsResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaListPingIdMethodsRequestParameters): Keq<MfaListPingIdMethodsOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MfaListPingIdMethodsResponseBodies[STATUS]>('/identity/mfa/method/pingid')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Read the current configuration for the given MFA method\n   *\n   */\n  mfaReadPingIdMethodConfiguration<STATUS extends keyof MfaReadPingIdMethodConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaReadPingIdMethodConfigurationRequestParameters): Keq<MfaReadPingIdMethodConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MfaReadPingIdMethodConfigurationResponseBodies[STATUS]>('/identity/mfa/method/pingid/{method_id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Update or create a configuration for the given MFA method\n   *\n   */\n  mfaConfigurePingIdMethod<STATUS extends keyof MfaConfigurePingIdMethodResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: MfaConfigurePingIdMethodRequestParameters): Keq<MfaConfigurePingIdMethodOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<MfaConfigurePingIdMethodResponseBodies[STATUS]>('/identity/mfa/method/pingid/{method_id}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'method_name' in args) req.send({ method_name: args['method_name'] })\n    if (args && 'settings_file_base64' in args) req.send({ settings_file_base64: args['settings_file_base64'] })\n    if (args && 'username_format' in args) req.send({ username_format: args['username_format'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Delete a configuration for the given MFA method\n   *\n   */\n  mfaDeletePingIdMethod<STATUS extends keyof MfaDeletePingIdMethodResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaDeletePingIdMethodRequestParameters): Keq<MfaDeletePingIdMethodOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<MfaDeletePingIdMethodResponseBodies[STATUS]>('/identity/mfa/method/pingid/{method_id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * List MFA method configurations for the given MFA method\n   *\n   */\n  mfaListTotpMethods<STATUS extends keyof MfaListTotpMethodsResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaListTotpMethodsRequestParameters): Keq<MfaListTotpMethodsOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MfaListTotpMethodsResponseBodies[STATUS]>('/identity/mfa/method/totp')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Destroys a TOTP secret for the given MFA method ID on the given entity\n   *\n   */\n  mfaAdminDestroyTotpSecret<STATUS extends keyof MfaAdminDestroyTotpSecretResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: MfaAdminDestroyTotpSecretRequestParameters): Keq<MfaAdminDestroyTotpSecretOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<MfaAdminDestroyTotpSecretResponseBodies[STATUS]>('/identity/mfa/method/totp/admin-destroy')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'entity_id' in args) req.send({ entity_id: args['entity_id'] })\n    if (args && 'method_id' in args) req.send({ method_id: args['method_id'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Update or create TOTP secret for the given method ID on the given entity.\n   *\n   */\n  mfaAdminGenerateTotpSecret<STATUS extends keyof MfaAdminGenerateTotpSecretResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: MfaAdminGenerateTotpSecretRequestParameters): Keq<MfaAdminGenerateTotpSecretOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<MfaAdminGenerateTotpSecretResponseBodies[STATUS]>('/identity/mfa/method/totp/admin-generate')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'entity_id' in args) req.send({ entity_id: args['entity_id'] })\n    if (args && 'method_id' in args) req.send({ method_id: args['method_id'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Update or create TOTP secret for the given method ID on the given entity.\n   *\n   */\n  mfaGenerateTotpSecret<STATUS extends keyof MfaGenerateTotpSecretResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: MfaGenerateTotpSecretRequestParameters): Keq<MfaGenerateTotpSecretOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<MfaGenerateTotpSecretResponseBodies[STATUS]>('/identity/mfa/method/totp/generate')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'method_id' in args) req.send({ method_id: args['method_id'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Read the current configuration for the given MFA method\n   *\n   */\n  mfaReadTotpMethodConfiguration<STATUS extends keyof MfaReadTotpMethodConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaReadTotpMethodConfigurationRequestParameters): Keq<MfaReadTotpMethodConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MfaReadTotpMethodConfigurationResponseBodies[STATUS]>('/identity/mfa/method/totp/{method_id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Update or create a configuration for the given MFA method\n   *\n   */\n  mfaConfigureTotpMethod<STATUS extends keyof MfaConfigureTotpMethodResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: MfaConfigureTotpMethodRequestParameters): Keq<MfaConfigureTotpMethodOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<MfaConfigureTotpMethodResponseBodies[STATUS]>('/identity/mfa/method/totp/{method_id}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'algorithm' in args) req.send({ algorithm: args['algorithm'] })\n    if (args && 'digits' in args) req.send({ digits: args['digits'] })\n    if (args && 'issuer' in args) req.send({ issuer: args['issuer'] })\n    if (args && 'key_size' in args) req.send({ key_size: args['key_size'] })\n    if (args && 'max_validation_attempts' in args) req.send({ max_validation_attempts: args['max_validation_attempts'] })\n    if (args && 'method_name' in args) req.send({ method_name: args['method_name'] })\n    if (args && 'period' in args) req.send({ period: args['period'] })\n    if (args && 'qr_size' in args) req.send({ qr_size: args['qr_size'] })\n    if (args && 'skew' in args) req.send({ skew: args['skew'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Delete a configuration for the given MFA method\n   *\n   */\n  mfaDeleteTotpMethod<STATUS extends keyof MfaDeleteTotpMethodResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaDeleteTotpMethodRequestParameters): Keq<MfaDeleteTotpMethodOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<MfaDeleteTotpMethodResponseBodies[STATUS]>('/identity/mfa/method/totp/{method_id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Read the current configuration for the given ID regardless of the MFA method type\n   *\n   */\n  mfaReadMethodConfiguration<STATUS extends keyof MfaReadMethodConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: MfaReadMethodConfigurationRequestParameters): Keq<MfaReadMethodConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MfaReadMethodConfigurationResponseBodies[STATUS]>('/identity/mfa/method/{method_id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcReadPublicKeys<STATUS extends keyof OidcReadPublicKeysResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcReadPublicKeysRequestParameters): Keq<OidcReadPublicKeysOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcReadPublicKeysResponseBodies[STATUS]>('/identity/oidc/.well-known/keys')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcReadOpenIdConfiguration<STATUS extends keyof OidcReadOpenIdConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcReadOpenIdConfigurationRequestParameters): Keq<OidcReadOpenIdConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcReadOpenIdConfigurationResponseBodies[STATUS]>('/identity/oidc/.well-known/openid-configuration')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcListAssignments<STATUS extends keyof OidcListAssignmentsResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcListAssignmentsRequestParameters): Keq<OidcListAssignmentsOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcListAssignmentsResponseBodies[STATUS]>('/identity/oidc/assignment')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcReadAssignment<STATUS extends keyof OidcReadAssignmentResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcReadAssignmentRequestParameters): Keq<OidcReadAssignmentOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcReadAssignmentResponseBodies[STATUS]>('/identity/oidc/assignment/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcWriteAssignment<STATUS extends keyof OidcWriteAssignmentResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: OidcWriteAssignmentRequestParameters): Keq<OidcWriteAssignmentOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<OidcWriteAssignmentResponseBodies[STATUS]>('/identity/oidc/assignment/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'entity_ids' in args) req.send({ entity_ids: args['entity_ids'] })\n    if (args && 'group_ids' in args) req.send({ group_ids: args['group_ids'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcDeleteAssignment<STATUS extends keyof OidcDeleteAssignmentResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcDeleteAssignmentRequestParameters): Keq<OidcDeleteAssignmentOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<OidcDeleteAssignmentResponseBodies[STATUS]>('/identity/oidc/assignment/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcListClients<STATUS extends keyof OidcListClientsResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcListClientsRequestParameters): Keq<OidcListClientsOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcListClientsResponseBodies[STATUS]>('/identity/oidc/client')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcReadClient<STATUS extends keyof OidcReadClientResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcReadClientRequestParameters): Keq<OidcReadClientOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcReadClientResponseBodies[STATUS]>('/identity/oidc/client/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcWriteClient<STATUS extends keyof OidcWriteClientResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: OidcWriteClientRequestParameters): Keq<OidcWriteClientOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<OidcWriteClientResponseBodies[STATUS]>('/identity/oidc/client/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'access_token_ttl' in args) req.send({ access_token_ttl: args['access_token_ttl'] })\n    if (args && 'assignments' in args) req.send({ assignments: args['assignments'] })\n    if (args && 'authorization_code' in args) req.send({ authorization_code: args['authorization_code'] })\n    if (args && 'client_credentials' in args) req.send({ client_credentials: args['client_credentials'] })\n    if (args && 'client_type' in args) req.send({ client_type: args['client_type'] })\n    if (args && 'id_token_ttl' in args) req.send({ id_token_ttl: args['id_token_ttl'] })\n    if (args && 'key' in args) req.send({ key: args['key'] })\n    if (args && 'redirect_uris' in args) req.send({ redirect_uris: args['redirect_uris'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcDeleteClient<STATUS extends keyof OidcDeleteClientResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcDeleteClientRequestParameters): Keq<OidcDeleteClientOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<OidcDeleteClientResponseBodies[STATUS]>('/identity/oidc/client/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcReadConfiguration<STATUS extends keyof OidcReadConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcReadConfigurationRequestParameters): Keq<OidcReadConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcReadConfigurationResponseBodies[STATUS]>('/identity/oidc/config')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcConfigure<STATUS extends keyof OidcConfigureResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: OidcConfigureRequestParameters): Keq<OidcConfigureOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<OidcConfigureResponseBodies[STATUS]>('/identity/oidc/config')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'issuer' in args) req.send({ issuer: args['issuer'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcIntrospect<STATUS extends keyof OidcIntrospectResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: OidcIntrospectRequestParameters): Keq<OidcIntrospectOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<OidcIntrospectResponseBodies[STATUS]>('/identity/oidc/introspect')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'client_id' in args) req.send({ client_id: args['client_id'] })\n    if (args && 'token' in args) req.send({ token: args['token'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcListKeys<STATUS extends keyof OidcListKeysResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcListKeysRequestParameters): Keq<OidcListKeysOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcListKeysResponseBodies[STATUS]>('/identity/oidc/key')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcReadKey<STATUS extends keyof OidcReadKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcReadKeyRequestParameters): Keq<OidcReadKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcReadKeyResponseBodies[STATUS]>('/identity/oidc/key/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcWriteKey<STATUS extends keyof OidcWriteKeyResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: OidcWriteKeyRequestParameters): Keq<OidcWriteKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<OidcWriteKeyResponseBodies[STATUS]>('/identity/oidc/key/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'algorithm' in args) req.send({ algorithm: args['algorithm'] })\n    if (args && 'allowed_client_ids' in args) req.send({ allowed_client_ids: args['allowed_client_ids'] })\n    if (args && 'rotation_period' in args) req.send({ rotation_period: args['rotation_period'] })\n    if (args && 'verification_ttl' in args) req.send({ verification_ttl: args['verification_ttl'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcDeleteKey<STATUS extends keyof OidcDeleteKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcDeleteKeyRequestParameters): Keq<OidcDeleteKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<OidcDeleteKeyResponseBodies[STATUS]>('/identity/oidc/key/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcRotateKey<STATUS extends keyof OidcRotateKeyResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: OidcRotateKeyRequestParameters): Keq<OidcRotateKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<OidcRotateKeyResponseBodies[STATUS]>('/identity/oidc/key/{name}/rotate')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'verification_ttl' in args) req.send({ verification_ttl: args['verification_ttl'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcListProviders<STATUS extends keyof OidcListProvidersResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcListProvidersRequestParameters): Keq<OidcListProvidersOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcListProvidersResponseBodies[STATUS]>('/identity/oidc/provider')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcReadProvider<STATUS extends keyof OidcReadProviderResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcReadProviderRequestParameters): Keq<OidcReadProviderOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcReadProviderResponseBodies[STATUS]>('/identity/oidc/provider/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcWriteProvider<STATUS extends keyof OidcWriteProviderResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: OidcWriteProviderRequestParameters): Keq<OidcWriteProviderOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<OidcWriteProviderResponseBodies[STATUS]>('/identity/oidc/provider/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'allowed_client_ids' in args) req.send({ allowed_client_ids: args['allowed_client_ids'] })\n    if (args && 'issuer' in args) req.send({ issuer: args['issuer'] })\n    if (args && 'scopes_supported' in args) req.send({ scopes_supported: args['scopes_supported'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcDeleteProvider<STATUS extends keyof OidcDeleteProviderResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcDeleteProviderRequestParameters): Keq<OidcDeleteProviderOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<OidcDeleteProviderResponseBodies[STATUS]>('/identity/oidc/provider/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcReadProviderPublicKeys<STATUS extends keyof OidcReadProviderPublicKeysResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcReadProviderPublicKeysRequestParameters): Keq<OidcReadProviderPublicKeysOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcReadProviderPublicKeysResponseBodies[STATUS]>('/identity/oidc/provider/{name}/.well-known/keys')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcReadProviderOpenIdConfiguration<STATUS extends keyof OidcReadProviderOpenIdConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcReadProviderOpenIdConfigurationRequestParameters): Keq<OidcReadProviderOpenIdConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcReadProviderOpenIdConfigurationResponseBodies[STATUS]>('/identity/oidc/provider/{name}/.well-known/openid-configuration')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcProviderAuthorize<STATUS extends keyof OidcProviderAuthorizeResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcProviderAuthorizeRequestParameters): Keq<OidcProviderAuthorizeOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcProviderAuthorizeResponseBodies[STATUS]>('/identity/oidc/provider/{name}/authorize')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcProviderAuthorizeWithParameters<STATUS extends keyof OidcProviderAuthorizeWithParametersResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: OidcProviderAuthorizeWithParametersRequestParameters): Keq<OidcProviderAuthorizeWithParametersOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<OidcProviderAuthorizeWithParametersResponseBodies[STATUS]>('/identity/oidc/provider/{name}/authorize')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'client_id' in args) req.send({ client_id: args['client_id'] })\n    if (args && 'code_challenge' in args) req.send({ code_challenge: args['code_challenge'] })\n    if (args && 'code_challenge_method' in args) req.send({ code_challenge_method: args['code_challenge_method'] })\n    if (args && 'max_age' in args) req.send({ max_age: args['max_age'] })\n    if (args && 'nonce' in args) req.send({ nonce: args['nonce'] })\n    if (args && 'redirect_uri' in args) req.send({ redirect_uri: args['redirect_uri'] })\n    if (args && 'response_type' in args) req.send({ response_type: args['response_type'] })\n    if (args && 'scope' in args) req.send({ scope: args['scope'] })\n    if (args && 'state' in args) req.send({ state: args['state'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcProviderToken<STATUS extends keyof OidcProviderTokenResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: OidcProviderTokenRequestParameters): Keq<OidcProviderTokenOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<OidcProviderTokenResponseBodies[STATUS]>('/identity/oidc/provider/{name}/token')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'client_id' in args) req.send({ client_id: args['client_id'] })\n    if (args && 'client_secret' in args) req.send({ client_secret: args['client_secret'] })\n    if (args && 'code' in args) req.send({ code: args['code'] })\n    if (args && 'code_verifier' in args) req.send({ code_verifier: args['code_verifier'] })\n    if (args && 'grant_type' in args) req.send({ grant_type: args['grant_type'] })\n    if (args && 'redirect_uri' in args) req.send({ redirect_uri: args['redirect_uri'] })\n    if (args && 'scope' in args) req.send({ scope: args['scope'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcProviderUserInfo<STATUS extends keyof OidcProviderUserInfoResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcProviderUserInfoRequestParameters): Keq<OidcProviderUserInfoOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcProviderUserInfoResponseBodies[STATUS]>('/identity/oidc/provider/{name}/userinfo')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcListRoles<STATUS extends keyof OidcListRolesResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcListRolesRequestParameters): Keq<OidcListRolesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcListRolesResponseBodies[STATUS]>('/identity/oidc/role')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcReadRole<STATUS extends keyof OidcReadRoleResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcReadRoleRequestParameters): Keq<OidcReadRoleOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcReadRoleResponseBodies[STATUS]>('/identity/oidc/role/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcWriteRole<STATUS extends keyof OidcWriteRoleResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: OidcWriteRoleRequestParameters): Keq<OidcWriteRoleOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<OidcWriteRoleResponseBodies[STATUS]>('/identity/oidc/role/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'client_id' in args) req.send({ client_id: args['client_id'] })\n    if (args && 'key' in args) req.send({ key: args['key'] })\n    if (args && 'template' in args) req.send({ template: args['template'] })\n    if (args && 'ttl' in args) req.send({ ttl: args['ttl'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcDeleteRole<STATUS extends keyof OidcDeleteRoleResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcDeleteRoleRequestParameters): Keq<OidcDeleteRoleOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<OidcDeleteRoleResponseBodies[STATUS]>('/identity/oidc/role/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcListScopes<STATUS extends keyof OidcListScopesResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcListScopesRequestParameters): Keq<OidcListScopesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcListScopesResponseBodies[STATUS]>('/identity/oidc/scope')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcReadScope<STATUS extends keyof OidcReadScopeResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcReadScopeRequestParameters): Keq<OidcReadScopeOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcReadScopeResponseBodies[STATUS]>('/identity/oidc/scope/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcWriteScope<STATUS extends keyof OidcWriteScopeResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: OidcWriteScopeRequestParameters): Keq<OidcWriteScopeOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<OidcWriteScopeResponseBodies[STATUS]>('/identity/oidc/scope/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'description' in args) req.send({ description: args['description'] })\n    if (args && 'template' in args) req.send({ template: args['template'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcDeleteScope<STATUS extends keyof OidcDeleteScopeResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcDeleteScopeRequestParameters): Keq<OidcDeleteScopeOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<OidcDeleteScopeResponseBodies[STATUS]>('/identity/oidc/scope/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  oidcGenerateToken<STATUS extends keyof OidcGenerateTokenResponseBodies, CONTENT_TYPE extends never = never>(args?: OidcGenerateTokenRequestParameters): Keq<OidcGenerateTokenOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<OidcGenerateTokenResponseBodies[STATUS]>('/identity/oidc/token/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  personaCreate<STATUS extends keyof PersonaCreateResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: PersonaCreateRequestParameters): Keq<PersonaCreateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<PersonaCreateResponseBodies[STATUS]>('/identity/persona')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'entity_id' in args) req.send({ entity_id: args['entity_id'] })\n    if (args && 'id' in args) req.send({ id: args['id'] })\n    if (args && 'metadata' in args) req.send({ metadata: args['metadata'] })\n    if (args && 'mount_accessor' in args) req.send({ mount_accessor: args['mount_accessor'] })\n    if (args && 'name' in args) req.send({ name: args['name'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  personaListById<STATUS extends keyof PersonaListByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: PersonaListByIdRequestParameters): Keq<PersonaListByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<PersonaListByIdResponseBodies[STATUS]>('/identity/persona/id')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  personaReadById<STATUS extends keyof PersonaReadByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: PersonaReadByIdRequestParameters): Keq<PersonaReadByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<PersonaReadByIdResponseBodies[STATUS]>('/identity/persona/id/{id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  personaUpdateById<STATUS extends keyof PersonaUpdateByIdResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: PersonaUpdateByIdRequestParameters): Keq<PersonaUpdateByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<PersonaUpdateByIdResponseBodies[STATUS]>('/identity/persona/id/{id}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'entity_id' in args) req.send({ entity_id: args['entity_id'] })\n    if (args && 'metadata' in args) req.send({ metadata: args['metadata'] })\n    if (args && 'mount_accessor' in args) req.send({ mount_accessor: args['mount_accessor'] })\n    if (args && 'name' in args) req.send({ name: args['name'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  personaDeleteById<STATUS extends keyof PersonaDeleteByIdResponseBodies, CONTENT_TYPE extends never = never>(args?: PersonaDeleteByIdRequestParameters): Keq<PersonaDeleteByIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<PersonaDeleteByIdResponseBodies[STATUS]>('/identity/persona/id/{id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Read the backend level settings.\n   *\n   */\n  kvReadConfig<STATUS extends keyof KvReadConfigResponseBodies, CONTENT_TYPE extends never = never>(args?: KvReadConfigRequestParameters): Keq<KvReadConfigOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<KvReadConfigResponseBodies[STATUS]>('/kv/config')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Configure backend level settings that are applied to every key in the key-value store.\n   *\n   */\n  kvWriteConfig<STATUS extends keyof KvWriteConfigResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: KvWriteConfigRequestParameters): Keq<KvWriteConfigOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<KvWriteConfigResponseBodies[STATUS]>('/kv/config')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'cas_required' in args) req.send({ cas_required: args['cas_required'] })\n    if (args && 'delete_version_after' in args) req.send({ delete_version_after: args['delete_version_after'] })\n    if (args && 'max_versions' in args) req.send({ max_versions: args['max_versions'] })\n    if (args && 'metadata_cas_required' in args) req.send({ metadata_cas_required: args['metadata_cas_required'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kvReadDataPath<STATUS extends keyof KvReadDataPathResponseBodies, CONTENT_TYPE extends never = never>(args?: KvReadDataPathRequestParameters): Keq<KvReadDataPathOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<KvReadDataPathResponseBodies[STATUS]>('/kv/data/{path}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kvWriteDataPath<STATUS extends keyof KvWriteDataPathResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: KvWriteDataPathRequestParameters): Keq<KvWriteDataPathOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<KvWriteDataPathResponseBodies[STATUS]>('/kv/data/{path}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'data' in args) req.send({ data: args['data'] })\n    if (args && 'options' in args) req.send({ options: args['options'] })\n    if (args && 'version' in args) req.send({ version: args['version'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kvDeleteDataPath<STATUS extends keyof KvDeleteDataPathResponseBodies, CONTENT_TYPE extends never = never>(args?: KvDeleteDataPathRequestParameters): Keq<KvDeleteDataPathOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<KvDeleteDataPathResponseBodies[STATUS]>('/kv/data/{path}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kvWriteDeletePath<STATUS extends keyof KvWriteDeletePathResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: KvWriteDeletePathRequestParameters): Keq<KvWriteDeletePathOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<KvWriteDeletePathResponseBodies[STATUS]>('/kv/delete/{path}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'versions' in args) req.send({ versions: args['versions'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kvWriteDestroyPath<STATUS extends keyof KvWriteDestroyPathResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: KvWriteDestroyPathRequestParameters): Keq<KvWriteDestroyPathOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<KvWriteDestroyPathResponseBodies[STATUS]>('/kv/destroy/{path}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'versions' in args) req.send({ versions: args['versions'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kvListDetailedMetadataPath<STATUS extends keyof KvListDetailedMetadataPathResponseBodies, CONTENT_TYPE extends never = never>(args?: KvListDetailedMetadataPathRequestParameters): Keq<KvListDetailedMetadataPathOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<KvListDetailedMetadataPathResponseBodies[STATUS]>('/kv/detailed-metadata/{path}')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kvReadMetadataPath<STATUS extends keyof KvReadMetadataPathResponseBodies, CONTENT_TYPE extends never = never>(args?: KvReadMetadataPathRequestParameters): Keq<KvReadMetadataPathOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<KvReadMetadataPathResponseBodies[STATUS]>('/kv/metadata/{path}')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kvWriteMetadataPath<STATUS extends keyof KvWriteMetadataPathResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: KvWriteMetadataPathRequestParameters): Keq<KvWriteMetadataPathOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<KvWriteMetadataPathResponseBodies[STATUS]>('/kv/metadata/{path}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'after' in args) req.send({ after: args['after'] })\n    if (args && 'cas_required' in args) req.send({ cas_required: args['cas_required'] })\n    if (args && 'custom_metadata' in args) req.send({ custom_metadata: args['custom_metadata'] })\n    if (args && 'delete_version_after' in args) req.send({ delete_version_after: args['delete_version_after'] })\n    if (args && 'limit' in args) req.send({ limit: args['limit'] })\n    if (args && 'max_versions' in args) req.send({ max_versions: args['max_versions'] })\n    if (args && 'metadata_cas' in args) req.send({ metadata_cas: args['metadata_cas'] })\n    if (args && 'metadata_cas_required' in args) req.send({ metadata_cas_required: args['metadata_cas_required'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kvDeleteMetadataPath<STATUS extends keyof KvDeleteMetadataPathResponseBodies, CONTENT_TYPE extends never = never>(args?: KvDeleteMetadataPathRequestParameters): Keq<KvDeleteMetadataPathOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<KvDeleteMetadataPathResponseBodies[STATUS]>('/kv/metadata/{path}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kvReadSubkeysPath<STATUS extends keyof KvReadSubkeysPathResponseBodies, CONTENT_TYPE extends never = never>(args?: KvReadSubkeysPathRequestParameters): Keq<KvReadSubkeysPathOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<KvReadSubkeysPathResponseBodies[STATUS]>('/kv/subkeys/{path}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  kvWriteUndeletePath<STATUS extends keyof KvWriteUndeletePathResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: KvWriteUndeletePathRequestParameters): Keq<KvWriteUndeletePathOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<KvWriteUndeletePathResponseBodies[STATUS]>('/kv/undelete/{path}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'versions' in args) req.send({ versions: args['versions'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * List the enabled audit devices.\n   *\n   */\n  auditingListEnabledDevices<STATUS extends keyof AuditingListEnabledDevicesResponseBodies, CONTENT_TYPE extends never = never>(args?: AuditingListEnabledDevicesRequestParameters): Keq<AuditingListEnabledDevicesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<AuditingListEnabledDevicesResponseBodies[STATUS]>('/sys/audit')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  auditingCalculateHash<STATUS extends keyof AuditingCalculateHashResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: AuditingCalculateHashRequestParameters): Keq<AuditingCalculateHashOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<AuditingCalculateHashResponseBodies[STATUS]>('/sys/audit-hash/{path}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'input' in args) req.send({ input: args['input'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Enable a new audit device at the supplied path.\n   *\n   */\n  auditingEnableDevice<STATUS extends keyof AuditingEnableDeviceResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: AuditingEnableDeviceRequestParameters): Keq<AuditingEnableDeviceOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<AuditingEnableDeviceResponseBodies[STATUS]>('/sys/audit/{path}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'description' in args) req.send({ description: args['description'] })\n    if (args && 'local' in args) req.send({ local: args['local'] })\n    if (args && 'options' in args) req.send({ options: args['options'] })\n    if (args && 'type' in args) req.send({ type: args['type'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Disable the audit device at the given path.\n   *\n   */\n  auditingDisableDevice<STATUS extends keyof AuditingDisableDeviceResponseBodies, CONTENT_TYPE extends never = never>(args?: AuditingDisableDeviceRequestParameters): Keq<AuditingDisableDeviceOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<AuditingDisableDeviceResponseBodies[STATUS]>('/sys/audit/{path}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  authListEnabledMethods<STATUS extends keyof AuthListEnabledMethodsResponseBodies, CONTENT_TYPE extends never = never>(args?: AuthListEnabledMethodsRequestParameters): Keq<AuthListEnabledMethodsOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<AuthListEnabledMethodsResponseBodies[STATUS]>('/sys/auth')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Read the configuration of the auth engine at the given path.\n   *\n   */\n  authReadConfiguration<STATUS extends keyof AuthReadConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: AuthReadConfigurationRequestParameters): Keq<AuthReadConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<AuthReadConfigurationResponseBodies[STATUS]>('/sys/auth/{path}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Enables a new auth method.\n   *\n   * @description After enabling, the auth method can be accessed and configured via the auth path specified as part of the URL. This auth path will be nested under the auth prefix.\n   *\n   * For example, enable the \"foo\" auth method will make it accessible at /auth/foo.\n   */\n  authEnableMethod<STATUS extends keyof AuthEnableMethodResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: AuthEnableMethodRequestParameters): Keq<AuthEnableMethodOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<AuthEnableMethodResponseBodies[STATUS]>('/sys/auth/{path}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'config' in args) req.send({ config: args['config'] })\n    if (args && 'description' in args) req.send({ description: args['description'] })\n    if (args && 'external_entropy_access' in args) req.send({ external_entropy_access: args['external_entropy_access'] })\n    if (args && 'local' in args) req.send({ local: args['local'] })\n    if (args && 'options' in args) req.send({ options: args['options'] })\n    if (args && 'plugin_name' in args) req.send({ plugin_name: args['plugin_name'] })\n    if (args && 'plugin_version' in args) req.send({ plugin_version: args['plugin_version'] })\n    if (args && 'seal_wrap' in args) req.send({ seal_wrap: args['seal_wrap'] })\n    if (args && 'type' in args) req.send({ type: args['type'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Disable the auth method at the given auth path\n   *\n   */\n  authDisableMethod<STATUS extends keyof AuthDisableMethodResponseBodies, CONTENT_TYPE extends never = never>(args?: AuthDisableMethodRequestParameters): Keq<AuthDisableMethodOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<AuthDisableMethodResponseBodies[STATUS]>('/sys/auth/{path}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Reads the given auth path's configuration.\n   *\n   * @description This endpoint requires sudo capability on the final path, but the same functionality can be achieved without sudo via `sys/mounts/auth/[auth-path]/tune`.\n   */\n  authReadTuningInformation<STATUS extends keyof AuthReadTuningInformationResponseBodies, CONTENT_TYPE extends never = never>(args?: AuthReadTuningInformationRequestParameters): Keq<AuthReadTuningInformationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<AuthReadTuningInformationResponseBodies[STATUS]>('/sys/auth/{path}/tune')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Tune configuration parameters for a given auth path.\n   *\n   * @description This endpoint requires sudo capability on the final path, but the same functionality can be achieved without sudo via `sys/mounts/auth/[auth-path]/tune`.\n   */\n  authTuneConfigurationParameters<STATUS extends keyof AuthTuneConfigurationParametersResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: AuthTuneConfigurationParametersRequestParameters): Keq<AuthTuneConfigurationParametersOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<AuthTuneConfigurationParametersResponseBodies[STATUS]>('/sys/auth/{path}/tune')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'allowed_response_headers' in args) req.send({ allowed_response_headers: args['allowed_response_headers'] })\n    if (args && 'audit_non_hmac_request_keys' in args) req.send({ audit_non_hmac_request_keys: args['audit_non_hmac_request_keys'] })\n    if (args && 'audit_non_hmac_response_keys' in args) req.send({ audit_non_hmac_response_keys: args['audit_non_hmac_response_keys'] })\n    if (args && 'default_lease_ttl' in args) req.send({ default_lease_ttl: args['default_lease_ttl'] })\n    if (args && 'description' in args) req.send({ description: args['description'] })\n    if (args && 'listing_visibility' in args) req.send({ listing_visibility: args['listing_visibility'] })\n    if (args && 'max_lease_ttl' in args) req.send({ max_lease_ttl: args['max_lease_ttl'] })\n    if (args && 'options' in args) req.send({ options: args['options'] })\n    if (args && 'passthrough_request_headers' in args) req.send({ passthrough_request_headers: args['passthrough_request_headers'] })\n    if (args && 'plugin_version' in args) req.send({ plugin_version: args['plugin_version'] })\n    if (args && 'token_type' in args) req.send({ token_type: args['token_type'] })\n    if (args && 'user_lockout_config' in args) req.send({ user_lockout_config: args['user_lockout_config'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  queryTokenCapabilities<STATUS extends keyof QueryTokenCapabilitiesResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: QueryTokenCapabilitiesRequestParameters): Keq<QueryTokenCapabilitiesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<QueryTokenCapabilitiesResponseBodies[STATUS]>('/sys/capabilities')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'path' in args) req.send({ path: args['path'] })\n    if (args && 'paths' in args) req.send({ paths: args['paths'] })\n    if (args && 'token' in args) req.send({ token: args['token'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  queryTokenAccessorCapabilities<STATUS extends keyof QueryTokenAccessorCapabilitiesResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: QueryTokenAccessorCapabilitiesRequestParameters): Keq<QueryTokenAccessorCapabilitiesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<QueryTokenAccessorCapabilitiesResponseBodies[STATUS]>('/sys/capabilities-accessor')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'accessor' in args) req.send({ accessor: args['accessor'] })\n    if (args && 'path' in args) req.send({ path: args['path'] })\n    if (args && 'paths' in args) req.send({ paths: args['paths'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  queryTokenSelfCapabilities<STATUS extends keyof QueryTokenSelfCapabilitiesResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: QueryTokenSelfCapabilitiesRequestParameters): Keq<QueryTokenSelfCapabilitiesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<QueryTokenSelfCapabilitiesResponseBodies[STATUS]>('/sys/capabilities-self')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'path' in args) req.send({ path: args['path'] })\n    if (args && 'paths' in args) req.send({ paths: args['paths'] })\n    if (args && 'token' in args) req.send({ token: args['token'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * List the request headers that are configured to be audited.\n   *\n   */\n  auditingListRequestHeaders<STATUS extends keyof AuditingListRequestHeadersResponseBodies, CONTENT_TYPE extends never = never>(args?: AuditingListRequestHeadersRequestParameters): Keq<AuditingListRequestHeadersOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<AuditingListRequestHeadersResponseBodies[STATUS]>('/sys/config/auditing/request-headers')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * List the information for the given request header.\n   *\n   */\n  auditingReadRequestHeaderInformation<STATUS extends keyof AuditingReadRequestHeaderInformationResponseBodies, CONTENT_TYPE extends never = never>(args?: AuditingReadRequestHeaderInformationRequestParameters): Keq<AuditingReadRequestHeaderInformationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<AuditingReadRequestHeaderInformationResponseBodies[STATUS]>('/sys/config/auditing/request-headers/{header}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Enable auditing of a header.\n   *\n   */\n  auditingEnableRequestHeader<STATUS extends keyof AuditingEnableRequestHeaderResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: AuditingEnableRequestHeaderRequestParameters): Keq<AuditingEnableRequestHeaderOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<AuditingEnableRequestHeaderResponseBodies[STATUS]>('/sys/config/auditing/request-headers/{header}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'hmac' in args) req.send({ hmac: args['hmac'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Disable auditing of the given request header.\n   *\n   */\n  auditingDisableRequestHeader<STATUS extends keyof AuditingDisableRequestHeaderResponseBodies, CONTENT_TYPE extends never = never>(args?: AuditingDisableRequestHeaderRequestParameters): Keq<AuditingDisableRequestHeaderOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<AuditingDisableRequestHeaderResponseBodies[STATUS]>('/sys/config/auditing/request-headers/{header}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Return the current CORS settings.\n   *\n   */\n  corsReadConfiguration<STATUS extends keyof CorsReadConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: CorsReadConfigurationRequestParameters): Keq<CorsReadConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<CorsReadConfigurationResponseBodies[STATUS]>('/sys/config/cors')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Configure the CORS settings.\n   *\n   */\n  corsConfigure<STATUS extends keyof CorsConfigureResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: CorsConfigureRequestParameters): Keq<CorsConfigureOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<CorsConfigureResponseBodies[STATUS]>('/sys/config/cors')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'allowed_headers' in args) req.send({ allowed_headers: args['allowed_headers'] })\n    if (args && 'allowed_origins' in args) req.send({ allowed_origins: args['allowed_origins'] })\n    if (args && 'enable' in args) req.send({ enable: args['enable'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Remove any CORS settings.\n   *\n   */\n  corsDeleteConfiguration<STATUS extends keyof CorsDeleteConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: CorsDeleteConfigurationRequestParameters): Keq<CorsDeleteConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<CorsDeleteConfigurationResponseBodies[STATUS]>('/sys/config/cors')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Reload the given subsystem\n   *\n   */\n  reloadSubsystem<STATUS extends keyof ReloadSubsystemResponseBodies, CONTENT_TYPE extends never = never>(args?: ReloadSubsystemRequestParameters): Keq<ReloadSubsystemOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<ReloadSubsystemResponseBodies[STATUS]>('/sys/config/reload/{subsystem}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Return a sanitized version of the OpenBao server configuration.\n   *\n   * @description The sanitized output strips configuration values in the storage, HA storage, and seals stanzas, which may contain sensitive values such as API tokens. It also removes any token or secret fields in other stanzas, such as the circonus_api_token from telemetry.\n   */\n  readSanitizedConfigurationState<STATUS extends keyof ReadSanitizedConfigurationStateResponseBodies, CONTENT_TYPE extends never = never>(args?: ReadSanitizedConfigurationStateRequestParameters): Keq<ReadSanitizedConfigurationStateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<ReadSanitizedConfigurationStateResponseBodies[STATUS]>('/sys/config/state/sanitized')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Return a list of configured UI headers.\n   *\n   */\n  uiHeadersList<STATUS extends keyof UiHeadersListResponseBodies, CONTENT_TYPE extends never = never>(args?: UiHeadersListRequestParameters): Keq<UiHeadersListOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<UiHeadersListResponseBodies[STATUS]>('/sys/config/ui/headers')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Return the given UI header's configuration\n   *\n   */\n  uiHeadersReadConfiguration<STATUS extends keyof UiHeadersReadConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: UiHeadersReadConfigurationRequestParameters): Keq<UiHeadersReadConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<UiHeadersReadConfigurationResponseBodies[STATUS]>('/sys/config/ui/headers/{header}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Configure the values to be returned for the UI header.\n   *\n   */\n  uiHeadersConfigure<STATUS extends keyof UiHeadersConfigureResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: UiHeadersConfigureRequestParameters): Keq<UiHeadersConfigureOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<UiHeadersConfigureResponseBodies[STATUS]>('/sys/config/ui/headers/{header}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'multivalue' in args) req.send({ multivalue: args['multivalue'] })\n    if (args && 'values' in args) req.send({ values: args['values'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Remove a UI header.\n   *\n   */\n  uiHeadersDeleteConfiguration<STATUS extends keyof UiHeadersDeleteConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: UiHeadersDeleteConfigurationRequestParameters): Keq<UiHeadersDeleteConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<UiHeadersDeleteConfigurationResponseBodies[STATUS]>('/sys/config/ui/headers/{header}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Decodes the encoded token with the otp.\n   *\n   */\n  decode<STATUS extends keyof DecodeResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: DecodeRequestParameters): Keq<DecodeOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<DecodeResponseBodies[STATUS]>('/sys/decode-token')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'encoded_token' in args) req.send({ encoded_token: args['encoded_token'] })\n    if (args && 'otp' in args) req.send({ otp: args['otp'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Read the configuration and progress of the current root generation attempt.\n   *\n   */\n  rootTokenGenerationReadProgress2<STATUS extends keyof RootTokenGenerationReadProgress2ResponseBodies, CONTENT_TYPE extends never = never>(args?: RootTokenGenerationReadProgress2RequestParameters): Keq<RootTokenGenerationReadProgress2Operation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<RootTokenGenerationReadProgress2ResponseBodies[STATUS]>('/sys/generate-root')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Read the configuration and progress of the current root generation attempt.\n   *\n   */\n  rootTokenGenerationReadProgress<STATUS extends keyof RootTokenGenerationReadProgressResponseBodies, CONTENT_TYPE extends never = never>(args?: RootTokenGenerationReadProgressRequestParameters): Keq<RootTokenGenerationReadProgressOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<RootTokenGenerationReadProgressResponseBodies[STATUS]>('/sys/generate-root/attempt')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Initializes a new root generation attempt.\n   *\n   * @description Only a single root generation attempt can take place at a time. One (and only one) of otp or pgp_key are required.\n   */\n  rootTokenGenerationInitialize<STATUS extends keyof RootTokenGenerationInitializeResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: RootTokenGenerationInitializeRequestParameters): Keq<RootTokenGenerationInitializeOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<RootTokenGenerationInitializeResponseBodies[STATUS]>('/sys/generate-root/attempt')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'pgp_key' in args) req.send({ pgp_key: args['pgp_key'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Cancels any in-progress root generation attempt.\n   *\n   */\n  rootTokenGenerationCancel<STATUS extends keyof RootTokenGenerationCancelResponseBodies, CONTENT_TYPE extends never = never>(args?: RootTokenGenerationCancelRequestParameters): Keq<RootTokenGenerationCancelOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<RootTokenGenerationCancelResponseBodies[STATUS]>('/sys/generate-root/attempt')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Enter a single unseal key share to progress the root generation attempt.\n   *\n   * @description If the threshold number of unseal key shares is reached, OpenBao will complete the root generation and issue the new token. Otherwise, this API must be called multiple times until that threshold is met. The attempt nonce must be provided with each call.\n   */\n  rootTokenGenerationUpdate<STATUS extends keyof RootTokenGenerationUpdateResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: RootTokenGenerationUpdateRequestParameters): Keq<RootTokenGenerationUpdateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<RootTokenGenerationUpdateResponseBodies[STATUS]>('/sys/generate-root/update')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'key' in args) req.send({ key: args['key'] })\n    if (args && 'nonce' in args) req.send({ nonce: args['nonce'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Check the HA status of an OpenBao cluster\n   *\n   */\n  haStatus<STATUS extends keyof HaStatusResponseBodies, CONTENT_TYPE extends never = never>(args?: HaStatusRequestParameters): Keq<HaStatusOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<HaStatusResponseBodies[STATUS]>('/sys/ha-status')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Returns the health status of OpenBao.\n   *\n   */\n  readHealthStatus<STATUS extends keyof ReadHealthStatusResponseBodies, CONTENT_TYPE extends never = never>(args?: ReadHealthStatusRequestParameters): Keq<ReadHealthStatusOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<ReadHealthStatusResponseBodies[STATUS]>('/sys/health')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Information about the host instance that this OpenBao server is running on.\n   *\n   * @description Information about the host instance that this OpenBao server is running on.\n   *     The information that gets collected includes host hardware information, and CPU,\n   *     disk, and memory utilization\n   */\n  collectHostInformation<STATUS extends keyof CollectHostInformationResponseBodies, CONTENT_TYPE extends never = never>(args?: CollectHostInformationRequestParameters): Keq<CollectHostInformationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<CollectHostInformationResponseBodies[STATUS]>('/sys/host-info')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * reports in-flight requests\n   *\n   * @description This path responds to the following HTTP methods.\n   *     GET /\n   *       Returns a map of in-flight requests.\n   */\n  collectInFlightRequestInformation<STATUS extends keyof CollectInFlightRequestInformationResponseBodies, CONTENT_TYPE extends never = never>(args?: CollectInFlightRequestInformationRequestParameters): Keq<CollectInFlightRequestInformationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<CollectInFlightRequestInformationResponseBodies[STATUS]>('/sys/in-flight-req')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Returns the initialization status of OpenBao.\n   *\n   */\n  readInitializationStatus<STATUS extends keyof ReadInitializationStatusResponseBodies, CONTENT_TYPE extends never = never>(args?: ReadInitializationStatusRequestParameters): Keq<ReadInitializationStatusOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<ReadInitializationStatusResponseBodies[STATUS]>('/sys/init')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Initialize a new OpenBao instance.\n   *\n   * @description The OpenBao instance must not have been previously initialized. The recovery options, as well as the stored shares option, are only available when using OpenBao HSM.\n   */\n  initializeSystem<STATUS extends keyof InitializeSystemResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: InitializeSystemRequestParameters): Keq<InitializeSystemOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<InitializeSystemResponseBodies[STATUS]>('/sys/init')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'pgp_keys' in args) req.send({ pgp_keys: args['pgp_keys'] })\n    if (args && 'recovery_pgp_keys' in args) req.send({ recovery_pgp_keys: args['recovery_pgp_keys'] })\n    if (args && 'recovery_shares' in args) req.send({ recovery_shares: args['recovery_shares'] })\n    if (args && 'recovery_threshold' in args) req.send({ recovery_threshold: args['recovery_threshold'] })\n    if (args && 'root_token_pgp_key' in args) req.send({ root_token_pgp_key: args['root_token_pgp_key'] })\n    if (args && 'secret_shares' in args) req.send({ secret_shares: args['secret_shares'] })\n    if (args && 'secret_threshold' in args) req.send({ secret_threshold: args['secret_threshold'] })\n    if (args && 'stored_shares' in args) req.send({ stored_shares: args['stored_shares'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  encryptionKeyStatus<STATUS extends keyof EncryptionKeyStatusResponseBodies, CONTENT_TYPE extends never = never>(args?: EncryptionKeyStatusRequestParameters): Keq<EncryptionKeyStatusOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<EncryptionKeyStatusResponseBodies[STATUS]>('/sys/key-status')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Returns the high availability status and current leader instance of OpenBao.\n   *\n   */\n  leaderStatus<STATUS extends keyof LeaderStatusResponseBodies, CONTENT_TYPE extends never = never>(args?: LeaderStatusRequestParameters): Keq<LeaderStatusOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<LeaderStatusResponseBodies[STATUS]>('/sys/leader')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  leasesList<STATUS extends keyof LeasesListResponseBodies, CONTENT_TYPE extends never = never>(args?: LeasesListRequestParameters): Keq<LeasesListOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<LeasesListResponseBodies[STATUS]>('/sys/leases')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  leasesCount<STATUS extends keyof LeasesCountResponseBodies, CONTENT_TYPE extends never = never>(args?: LeasesCountRequestParameters): Keq<LeasesCountOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<LeasesCountResponseBodies[STATUS]>('/sys/leases/count')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  leasesReadLease<STATUS extends keyof LeasesReadLeaseResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: LeasesReadLeaseRequestParameters): Keq<LeasesReadLeaseOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<LeasesReadLeaseResponseBodies[STATUS]>('/sys/leases/lookup')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'lease_id' in args) req.send({ lease_id: args['lease_id'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  leasesLookUp<STATUS extends keyof LeasesLookUpResponseBodies, CONTENT_TYPE extends never = never>(args?: LeasesLookUpRequestParameters): Keq<LeasesLookUpOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<LeasesLookUpResponseBodies[STATUS]>('/sys/leases/lookup/')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  leasesLookUpWithPrefix<STATUS extends keyof LeasesLookUpWithPrefixResponseBodies, CONTENT_TYPE extends never = never>(args?: LeasesLookUpWithPrefixRequestParameters): Keq<LeasesLookUpWithPrefixOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<LeasesLookUpWithPrefixResponseBodies[STATUS]>('/sys/leases/lookup/{prefix}')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Renews a lease, requesting to extend the lease.\n   *\n   */\n  leasesRenewLease<STATUS extends keyof LeasesRenewLeaseResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: LeasesRenewLeaseRequestParameters): Keq<LeasesRenewLeaseOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<LeasesRenewLeaseResponseBodies[STATUS]>('/sys/leases/renew')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'increment' in args) req.send({ increment: args['increment'] })\n    if (args && 'lease_id' in args) req.send({ lease_id: args['lease_id'] })\n    if (args && 'url_lease_id' in args) req.send({ url_lease_id: args['url_lease_id'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Renews a lease, requesting to extend the lease.\n   *\n   */\n  leasesRenewLeaseWithId<STATUS extends keyof LeasesRenewLeaseWithIdResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: LeasesRenewLeaseWithIdRequestParameters): Keq<LeasesRenewLeaseWithIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<LeasesRenewLeaseWithIdResponseBodies[STATUS]>('/sys/leases/renew/{url_lease_id}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'increment' in args) req.send({ increment: args['increment'] })\n    if (args && 'lease_id' in args) req.send({ lease_id: args['lease_id'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Revokes a lease immediately.\n   *\n   */\n  leasesRevokeLease<STATUS extends keyof LeasesRevokeLeaseResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: LeasesRevokeLeaseRequestParameters): Keq<LeasesRevokeLeaseOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<LeasesRevokeLeaseResponseBodies[STATUS]>('/sys/leases/revoke')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'lease_id' in args) req.send({ lease_id: args['lease_id'] })\n    if (args && 'sync' in args) req.send({ sync: args['sync'] })\n    if (args && 'url_lease_id' in args) req.send({ url_lease_id: args['url_lease_id'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Revokes all secrets or tokens generated under a given prefix immediately\n   *\n   * @description Unlike `/sys/leases/revoke-prefix`, this path ignores backend errors encountered during revocation. This is potentially very dangerous and should only be used in specific emergency situations where errors in the backend or the connected backend service prevent normal revocation.\n   *\n   * By ignoring these errors, OpenBao abdicates responsibility for ensuring that the issued credentials or secrets are properly revoked and/or cleaned up. Access to this endpoint should be tightly controlled.\n   */\n  leasesForceRevokeLeaseWithPrefix<STATUS extends keyof LeasesForceRevokeLeaseWithPrefixResponseBodies, CONTENT_TYPE extends never = never>(args?: LeasesForceRevokeLeaseWithPrefixRequestParameters): Keq<LeasesForceRevokeLeaseWithPrefixOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<LeasesForceRevokeLeaseWithPrefixResponseBodies[STATUS]>('/sys/leases/revoke-force/{prefix}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Revokes all secrets (via a lease ID prefix) or tokens (via the tokens' path property) generated under a given prefix immediately.\n   *\n   */\n  leasesRevokeLeaseWithPrefix<STATUS extends keyof LeasesRevokeLeaseWithPrefixResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: LeasesRevokeLeaseWithPrefixRequestParameters): Keq<LeasesRevokeLeaseWithPrefixOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<LeasesRevokeLeaseWithPrefixResponseBodies[STATUS]>('/sys/leases/revoke-prefix/{prefix}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'sync' in args) req.send({ sync: args['sync'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Revokes a lease immediately.\n   *\n   */\n  leasesRevokeLeaseWithId<STATUS extends keyof LeasesRevokeLeaseWithIdResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: LeasesRevokeLeaseWithIdRequestParameters): Keq<LeasesRevokeLeaseWithIdOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<LeasesRevokeLeaseWithIdResponseBodies[STATUS]>('/sys/leases/revoke/{url_lease_id}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'lease_id' in args) req.send({ lease_id: args['lease_id'] })\n    if (args && 'sync' in args) req.send({ sync: args['sync'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  leasesTidy<STATUS extends keyof LeasesTidyResponseBodies, CONTENT_TYPE extends never = never>(args?: LeasesTidyRequestParameters): Keq<LeasesTidyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<LeasesTidyResponseBodies[STATUS]>('/sys/leases/tidy')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Report the locked user count metrics, for this namespace and all child namespaces.\n   *\n   */\n  lockedUsersList<STATUS extends keyof LockedUsersListResponseBodies, CONTENT_TYPE extends never = never>(args?: LockedUsersListRequestParameters): Keq<LockedUsersListOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<LockedUsersListResponseBodies[STATUS]>('/sys/locked-users')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Unlocks the user with given mount_accessor and alias_identifier\n   *\n   */\n  lockedUsersUnlock<STATUS extends keyof LockedUsersUnlockResponseBodies, CONTENT_TYPE extends never = never>(args?: LockedUsersUnlockRequestParameters): Keq<LockedUsersUnlockOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<LockedUsersUnlockResponseBodies[STATUS]>('/sys/locked-users/{mount_accessor}/unlock/{alias_identifier}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Read the log level for all existing loggers.\n   *\n   */\n  loggersReadVerbosityLevel<STATUS extends keyof LoggersReadVerbosityLevelResponseBodies, CONTENT_TYPE extends never = never>(args?: LoggersReadVerbosityLevelRequestParameters): Keq<LoggersReadVerbosityLevelOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<LoggersReadVerbosityLevelResponseBodies[STATUS]>('/sys/loggers')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Modify the log level for all existing loggers.\n   *\n   */\n  loggersUpdateVerbosityLevel<STATUS extends keyof LoggersUpdateVerbosityLevelResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: LoggersUpdateVerbosityLevelRequestParameters): Keq<LoggersUpdateVerbosityLevelOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<LoggersUpdateVerbosityLevelResponseBodies[STATUS]>('/sys/loggers')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'level' in args) req.send({ level: args['level'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Revert the all loggers to use log level provided in config.\n   *\n   */\n  loggersRevertVerbosityLevel<STATUS extends keyof LoggersRevertVerbosityLevelResponseBodies, CONTENT_TYPE extends never = never>(args?: LoggersRevertVerbosityLevelRequestParameters): Keq<LoggersRevertVerbosityLevelOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<LoggersRevertVerbosityLevelResponseBodies[STATUS]>('/sys/loggers')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Read the log level for a single logger.\n   *\n   */\n  loggersReadVerbosityLevelFor<STATUS extends keyof LoggersReadVerbosityLevelForResponseBodies, CONTENT_TYPE extends never = never>(args?: LoggersReadVerbosityLevelForRequestParameters): Keq<LoggersReadVerbosityLevelForOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<LoggersReadVerbosityLevelForResponseBodies[STATUS]>('/sys/loggers/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Modify the log level of a single logger.\n   *\n   */\n  loggersUpdateVerbosityLevelFor<STATUS extends keyof LoggersUpdateVerbosityLevelForResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: LoggersUpdateVerbosityLevelForRequestParameters): Keq<LoggersUpdateVerbosityLevelForOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<LoggersUpdateVerbosityLevelForResponseBodies[STATUS]>('/sys/loggers/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'level' in args) req.send({ level: args['level'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Revert a single logger to use log level provided in config.\n   *\n   */\n  loggersRevertVerbosityLevelFor<STATUS extends keyof LoggersRevertVerbosityLevelForResponseBodies, CONTENT_TYPE extends never = never>(args?: LoggersRevertVerbosityLevelForRequestParameters): Keq<LoggersRevertVerbosityLevelForOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<LoggersRevertVerbosityLevelForResponseBodies[STATUS]>('/sys/loggers/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  metrics<STATUS extends keyof MetricsResponseBodies, CONTENT_TYPE extends never = never>(args?: MetricsRequestParameters): Keq<MetricsOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MetricsResponseBodies[STATUS]>('/sys/metrics')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Validates the login for the given MFA methods. Upon successful validation, it returns an auth response containing the client token\n   *\n   */\n  mfaValidate<STATUS extends keyof MfaValidateResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: MfaValidateRequestParameters): Keq<MfaValidateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<MfaValidateResponseBodies[STATUS]>('/sys/mfa/validate')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'mfa_payload' in args) req.send({ mfa_payload: args['mfa_payload'] })\n    if (args && 'mfa_request_id' in args) req.send({ mfa_request_id: args['mfa_request_id'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  monitor<STATUS extends keyof MonitorResponseBodies, CONTENT_TYPE extends never = never>(args?: MonitorRequestParameters): Keq<MonitorOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MonitorResponseBodies[STATUS]>('/sys/monitor')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  mountsListSecretsEngines<STATUS extends keyof MountsListSecretsEnginesResponseBodies, CONTENT_TYPE extends never = never>(args?: MountsListSecretsEnginesRequestParameters): Keq<MountsListSecretsEnginesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MountsListSecretsEnginesResponseBodies[STATUS]>('/sys/mounts')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Read the configuration of the secret engine at the given path.\n   *\n   */\n  mountsReadConfiguration<STATUS extends keyof MountsReadConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: MountsReadConfigurationRequestParameters): Keq<MountsReadConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MountsReadConfigurationResponseBodies[STATUS]>('/sys/mounts/{path}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Enable a new secrets engine at the given path.\n   *\n   */\n  mountsEnableSecretsEngine<STATUS extends keyof MountsEnableSecretsEngineResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: MountsEnableSecretsEngineRequestParameters): Keq<MountsEnableSecretsEngineOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<MountsEnableSecretsEngineResponseBodies[STATUS]>('/sys/mounts/{path}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'config' in args) req.send({ config: args['config'] })\n    if (args && 'description' in args) req.send({ description: args['description'] })\n    if (args && 'external_entropy_access' in args) req.send({ external_entropy_access: args['external_entropy_access'] })\n    if (args && 'local' in args) req.send({ local: args['local'] })\n    if (args && 'options' in args) req.send({ options: args['options'] })\n    if (args && 'plugin_name' in args) req.send({ plugin_name: args['plugin_name'] })\n    if (args && 'plugin_version' in args) req.send({ plugin_version: args['plugin_version'] })\n    if (args && 'seal_wrap' in args) req.send({ seal_wrap: args['seal_wrap'] })\n    if (args && 'type' in args) req.send({ type: args['type'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Disable the mount point specified at the given path.\n   *\n   */\n  mountsDisableSecretsEngine<STATUS extends keyof MountsDisableSecretsEngineResponseBodies, CONTENT_TYPE extends never = never>(args?: MountsDisableSecretsEngineRequestParameters): Keq<MountsDisableSecretsEngineOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<MountsDisableSecretsEngineResponseBodies[STATUS]>('/sys/mounts/{path}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  mountsReadTuningInformation<STATUS extends keyof MountsReadTuningInformationResponseBodies, CONTENT_TYPE extends never = never>(args?: MountsReadTuningInformationRequestParameters): Keq<MountsReadTuningInformationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<MountsReadTuningInformationResponseBodies[STATUS]>('/sys/mounts/{path}/tune')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  mountsTuneConfigurationParameters<STATUS extends keyof MountsTuneConfigurationParametersResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: MountsTuneConfigurationParametersRequestParameters): Keq<MountsTuneConfigurationParametersOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<MountsTuneConfigurationParametersResponseBodies[STATUS]>('/sys/mounts/{path}/tune')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'allowed_managed_keys' in args) req.send({ allowed_managed_keys: args['allowed_managed_keys'] })\n    if (args && 'allowed_response_headers' in args) req.send({ allowed_response_headers: args['allowed_response_headers'] })\n    if (args && 'audit_non_hmac_request_keys' in args) req.send({ audit_non_hmac_request_keys: args['audit_non_hmac_request_keys'] })\n    if (args && 'audit_non_hmac_response_keys' in args) req.send({ audit_non_hmac_response_keys: args['audit_non_hmac_response_keys'] })\n    if (args && 'default_lease_ttl' in args) req.send({ default_lease_ttl: args['default_lease_ttl'] })\n    if (args && 'description' in args) req.send({ description: args['description'] })\n    if (args && 'listing_visibility' in args) req.send({ listing_visibility: args['listing_visibility'] })\n    if (args && 'max_lease_ttl' in args) req.send({ max_lease_ttl: args['max_lease_ttl'] })\n    if (args && 'options' in args) req.send({ options: args['options'] })\n    if (args && 'passthrough_request_headers' in args) req.send({ passthrough_request_headers: args['passthrough_request_headers'] })\n    if (args && 'plugin_version' in args) req.send({ plugin_version: args['plugin_version'] })\n    if (args && 'token_type' in args) req.send({ token_type: args['token_type'] })\n    if (args && 'user_lockout_config' in args) req.send({ user_lockout_config: args['user_lockout_config'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * List namespaces.\n   *\n   */\n  namespacesListNamespaces<STATUS extends keyof NamespacesListNamespacesResponseBodies, CONTENT_TYPE extends never = never>(args?: NamespacesListNamespacesRequestParameters): Keq<NamespacesListNamespacesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<NamespacesListNamespacesResponseBodies[STATUS]>('/sys/namespaces')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Lock a namespace.\n   *\n   */\n  namespacesWriteNamespacesApiLockLock<STATUS extends keyof NamespacesWriteNamespacesApiLockLockResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: NamespacesWriteNamespacesApiLockLockRequestParameters): Keq<NamespacesWriteNamespacesApiLockLockOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<NamespacesWriteNamespacesApiLockLockResponseBodies[STATUS]>('/sys/namespaces/api-lock/lock')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'path' in args) req.send({ path: args['path'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Lock a namespace.\n   *\n   */\n  namespacesWriteNamespacesApiLockLockPath<STATUS extends keyof NamespacesWriteNamespacesApiLockLockPathResponseBodies, CONTENT_TYPE extends never = never>(args?: NamespacesWriteNamespacesApiLockLockPathRequestParameters): Keq<NamespacesWriteNamespacesApiLockLockPathOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<NamespacesWriteNamespacesApiLockLockPathResponseBodies[STATUS]>('/sys/namespaces/api-lock/lock/{path}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Unlock a namespace.\n   *\n   */\n  namespacesWriteNamespacesApiLockUnlock<STATUS extends keyof NamespacesWriteNamespacesApiLockUnlockResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: NamespacesWriteNamespacesApiLockUnlockRequestParameters): Keq<NamespacesWriteNamespacesApiLockUnlockOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<NamespacesWriteNamespacesApiLockUnlockResponseBodies[STATUS]>('/sys/namespaces/api-lock/unlock')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'path' in args) req.send({ path: args['path'] })\n    if (args && 'unlock_key' in args) req.send({ unlock_key: args['unlock_key'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Unlock a namespace.\n   *\n   */\n  namespacesWriteNamespacesApiLockUnlockPath<STATUS extends keyof NamespacesWriteNamespacesApiLockUnlockPathResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: NamespacesWriteNamespacesApiLockUnlockPathRequestParameters): Keq<NamespacesWriteNamespacesApiLockUnlockPathOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<NamespacesWriteNamespacesApiLockUnlockPathResponseBodies[STATUS]>('/sys/namespaces/api-lock/unlock/{path}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'unlock_key' in args) req.send({ unlock_key: args['unlock_key'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Retrieve a namespace.\n   *\n   */\n  namespacesReadNamespacesPath<STATUS extends keyof NamespacesReadNamespacesPathResponseBodies, CONTENT_TYPE extends never = never>(args?: NamespacesReadNamespacesPathRequestParameters): Keq<NamespacesReadNamespacesPathOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<NamespacesReadNamespacesPathResponseBodies[STATUS]>('/sys/namespaces/{path}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Create or update a namespace.\n   *\n   */\n  namespacesWriteNamespacesPath<STATUS extends keyof NamespacesWriteNamespacesPathResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: NamespacesWriteNamespacesPathRequestParameters): Keq<NamespacesWriteNamespacesPathOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<NamespacesWriteNamespacesPathResponseBodies[STATUS]>('/sys/namespaces/{path}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'custom_metadata' in args) req.send({ custom_metadata: args['custom_metadata'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Delete a namespace.\n   *\n   */\n  namespacesDeleteNamespacesPath<STATUS extends keyof NamespacesDeleteNamespacesPathResponseBodies, CONTENT_TYPE extends never = never>(args?: NamespacesDeleteNamespacesPathRequestParameters): Keq<NamespacesDeleteNamespacesPathOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<NamespacesDeleteNamespacesPathResponseBodies[STATUS]>('/sys/namespaces/{path}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  pluginsCatalogListPlugins<STATUS extends keyof PluginsCatalogListPluginsResponseBodies, CONTENT_TYPE extends never = never>(args?: PluginsCatalogListPluginsRequestParameters): Keq<PluginsCatalogListPluginsOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<PluginsCatalogListPluginsResponseBodies[STATUS]>('/sys/plugins/catalog')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Return the configuration data for the plugin with the given name.\n   *\n   */\n  pluginsCatalogReadPluginConfiguration<STATUS extends keyof PluginsCatalogReadPluginConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: PluginsCatalogReadPluginConfigurationRequestParameters): Keq<PluginsCatalogReadPluginConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<PluginsCatalogReadPluginConfigurationResponseBodies[STATUS]>('/sys/plugins/catalog/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Register a new plugin, or updates an existing one with the supplied name.\n   *\n   */\n  pluginsCatalogRegisterPlugin<STATUS extends keyof PluginsCatalogRegisterPluginResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: PluginsCatalogRegisterPluginRequestParameters): Keq<PluginsCatalogRegisterPluginOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<PluginsCatalogRegisterPluginResponseBodies[STATUS]>('/sys/plugins/catalog/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'args' in args) req.send({ args: args['args'] })\n    if (args && 'command' in args) req.send({ command: args['command'] })\n    if (args && 'env' in args) req.send({ env: args['env'] })\n    if (args && 'oci' in args) req.send({ oci: args['oci'] })\n    if (args && 'sha256' in args) req.send({ sha256: args['sha256'] })\n    if (args && 'type' in args) req.send({ type: args['type'] })\n    if (args && 'version' in args) req.send({ version: args['version'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Remove the plugin with the given name.\n   *\n   */\n  pluginsCatalogRemovePlugin<STATUS extends keyof PluginsCatalogRemovePluginResponseBodies, CONTENT_TYPE extends never = never>(args?: PluginsCatalogRemovePluginRequestParameters): Keq<PluginsCatalogRemovePluginOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<PluginsCatalogRemovePluginResponseBodies[STATUS]>('/sys/plugins/catalog/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * List the plugins in the catalog.\n   *\n   */\n  pluginsCatalogListPluginsWithType<STATUS extends keyof PluginsCatalogListPluginsWithTypeResponseBodies, CONTENT_TYPE extends never = never>(args?: PluginsCatalogListPluginsWithTypeRequestParameters): Keq<PluginsCatalogListPluginsWithTypeOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<PluginsCatalogListPluginsWithTypeResponseBodies[STATUS]>('/sys/plugins/catalog/{type}')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Return the configuration data for the plugin with the given name.\n   *\n   */\n  pluginsCatalogReadPluginConfigurationWithType<STATUS extends keyof PluginsCatalogReadPluginConfigurationWithTypeResponseBodies, CONTENT_TYPE extends never = never>(args?: PluginsCatalogReadPluginConfigurationWithTypeRequestParameters): Keq<PluginsCatalogReadPluginConfigurationWithTypeOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<PluginsCatalogReadPluginConfigurationWithTypeResponseBodies[STATUS]>('/sys/plugins/catalog/{type}/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Register a new plugin, or updates an existing one with the supplied name.\n   *\n   */\n  pluginsCatalogRegisterPluginWithType<STATUS extends keyof PluginsCatalogRegisterPluginWithTypeResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: PluginsCatalogRegisterPluginWithTypeRequestParameters): Keq<PluginsCatalogRegisterPluginWithTypeOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<PluginsCatalogRegisterPluginWithTypeResponseBodies[STATUS]>('/sys/plugins/catalog/{type}/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'args' in args) req.send({ args: args['args'] })\n    if (args && 'command' in args) req.send({ command: args['command'] })\n    if (args && 'env' in args) req.send({ env: args['env'] })\n    if (args && 'oci' in args) req.send({ oci: args['oci'] })\n    if (args && 'sha256' in args) req.send({ sha256: args['sha256'] })\n    if (args && 'version' in args) req.send({ version: args['version'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Remove the plugin with the given name.\n   *\n   */\n  pluginsCatalogRemovePluginWithType<STATUS extends keyof PluginsCatalogRemovePluginWithTypeResponseBodies, CONTENT_TYPE extends never = never>(args?: PluginsCatalogRemovePluginWithTypeRequestParameters): Keq<PluginsCatalogRemovePluginWithTypeOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<PluginsCatalogRemovePluginWithTypeResponseBodies[STATUS]>('/sys/plugins/catalog/{type}/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Reload mounted plugin backends.\n   *\n   * @description Either the plugin name (`plugin`) or the desired plugin backend mounts (`mounts`) must be provided, but not both. In the case that the plugin name is provided, all mounted paths that use that plugin backend will be reloaded.  If (`scope`) is provided and is (`global`), the plugin(s) are reloaded globally.\n   */\n  pluginsReloadBackends<STATUS extends keyof PluginsReloadBackendsResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: PluginsReloadBackendsRequestParameters): Keq<PluginsReloadBackendsOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<PluginsReloadBackendsResponseBodies[STATUS]>('/sys/plugins/reload/backend')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'mounts' in args) req.send({ mounts: args['mounts'] })\n    if (args && 'plugin' in args) req.send({ plugin: args['plugin'] })\n    if (args && 'scope' in args) req.send({ scope: args['scope'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  policiesListAclPolicies<STATUS extends keyof PoliciesListAclPoliciesResponseBodies, CONTENT_TYPE extends never = never>(args?: PoliciesListAclPoliciesRequestParameters): Keq<PoliciesListAclPoliciesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<PoliciesListAclPoliciesResponseBodies[STATUS]>('/sys/policies/acl')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Retrieve information about the named ACL policy.\n   *\n   */\n  policiesReadAclPolicy<STATUS extends keyof PoliciesReadAclPolicyResponseBodies, CONTENT_TYPE extends never = never>(args?: PoliciesReadAclPolicyRequestParameters): Keq<PoliciesReadAclPolicyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<PoliciesReadAclPolicyResponseBodies[STATUS]>('/sys/policies/acl/{name}')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Add a new or update an existing ACL policy.\n   *\n   */\n  policiesWriteAclPolicy<STATUS extends keyof PoliciesWriteAclPolicyResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: PoliciesWriteAclPolicyRequestParameters): Keq<PoliciesWriteAclPolicyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<PoliciesWriteAclPolicyResponseBodies[STATUS]>('/sys/policies/acl/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'cas' in args) req.send({ cas: args['cas'] })\n    if (args && 'cas_required' in args) req.send({ cas_required: args['cas_required'] })\n    if (args && 'expiration' in args) req.send({ expiration: args['expiration'] })\n    if (args && 'policy' in args) req.send({ policy: args['policy'] })\n    if (args && 'ttl' in args) req.send({ ttl: args['ttl'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Delete the ACL policy with the given name.\n   *\n   */\n  policiesDeleteAclPolicy<STATUS extends keyof PoliciesDeleteAclPolicyResponseBodies, CONTENT_TYPE extends never = never>(args?: PoliciesDeleteAclPolicyRequestParameters): Keq<PoliciesDeleteAclPolicyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<PoliciesDeleteAclPolicyResponseBodies[STATUS]>('/sys/policies/acl/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * List ACL policies with detailed information.\n   *\n   */\n  systemListPoliciesDetailedAcl<STATUS extends keyof SystemListPoliciesDetailedAclResponseBodies, CONTENT_TYPE extends never = never>(args?: SystemListPoliciesDetailedAclRequestParameters): Keq<SystemListPoliciesDetailedAclOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<SystemListPoliciesDetailedAclResponseBodies[STATUS]>('/sys/policies/detailed/acl')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * List ACL policies with detailed information.\n   *\n   */\n  systemListPoliciesDetailedAclName<STATUS extends keyof SystemListPoliciesDetailedAclNameResponseBodies, CONTENT_TYPE extends never = never>(args?: SystemListPoliciesDetailedAclNameRequestParameters): Keq<SystemListPoliciesDetailedAclNameOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<SystemListPoliciesDetailedAclNameResponseBodies[STATUS]>('/sys/policies/detailed/acl/{name}')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * List the existing password policies.\n   *\n   */\n  policiesListPasswordPolicies<STATUS extends keyof PoliciesListPasswordPoliciesResponseBodies, CONTENT_TYPE extends never = never>(args?: PoliciesListPasswordPoliciesRequestParameters): Keq<PoliciesListPasswordPoliciesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<PoliciesListPasswordPoliciesResponseBodies[STATUS]>('/sys/policies/password')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Retrieve an existing password policy.\n   *\n   */\n  policiesReadPasswordPolicy<STATUS extends keyof PoliciesReadPasswordPolicyResponseBodies, CONTENT_TYPE extends never = never>(args?: PoliciesReadPasswordPolicyRequestParameters): Keq<PoliciesReadPasswordPolicyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<PoliciesReadPasswordPolicyResponseBodies[STATUS]>('/sys/policies/password/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Add a new or update an existing password policy.\n   *\n   */\n  policiesWritePasswordPolicy<STATUS extends keyof PoliciesWritePasswordPolicyResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: PoliciesWritePasswordPolicyRequestParameters): Keq<PoliciesWritePasswordPolicyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<PoliciesWritePasswordPolicyResponseBodies[STATUS]>('/sys/policies/password/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'policy' in args) req.send({ policy: args['policy'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Delete a password policy.\n   *\n   */\n  policiesDeletePasswordPolicy<STATUS extends keyof PoliciesDeletePasswordPolicyResponseBodies, CONTENT_TYPE extends never = never>(args?: PoliciesDeletePasswordPolicyRequestParameters): Keq<PoliciesDeletePasswordPolicyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<PoliciesDeletePasswordPolicyResponseBodies[STATUS]>('/sys/policies/password/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Generate a password from an existing password policy.\n   *\n   */\n  policiesGeneratePasswordFromPasswordPolicy<STATUS extends keyof PoliciesGeneratePasswordFromPasswordPolicyResponseBodies, CONTENT_TYPE extends never = never>(args?: PoliciesGeneratePasswordFromPasswordPolicyRequestParameters): Keq<PoliciesGeneratePasswordFromPasswordPolicyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<PoliciesGeneratePasswordFromPasswordPolicyResponseBodies[STATUS]>('/sys/policies/password/{name}/generate')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  policiesList<STATUS extends keyof PoliciesListResponseBodies, CONTENT_TYPE extends never = never>(args?: PoliciesListRequestParameters): Keq<PoliciesListOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<PoliciesListResponseBodies[STATUS]>('/sys/policy')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  rateLimitQuotasReadConfiguration<STATUS extends keyof RateLimitQuotasReadConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: RateLimitQuotasReadConfigurationRequestParameters): Keq<RateLimitQuotasReadConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<RateLimitQuotasReadConfigurationResponseBodies[STATUS]>('/sys/quotas/config')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  rateLimitQuotasConfigure<STATUS extends keyof RateLimitQuotasConfigureResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: RateLimitQuotasConfigureRequestParameters): Keq<RateLimitQuotasConfigureOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<RateLimitQuotasConfigureResponseBodies[STATUS]>('/sys/quotas/config')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'enable_rate_limit_audit_logging' in args) req.send({ enable_rate_limit_audit_logging: args['enable_rate_limit_audit_logging'] })\n    if (args && 'enable_rate_limit_response_headers' in args) req.send({ enable_rate_limit_response_headers: args['enable_rate_limit_response_headers'] })\n    if (args && 'rate_limit_exempt_paths' in args) req.send({ rate_limit_exempt_paths: args['rate_limit_exempt_paths'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  rateLimitQuotasList<STATUS extends keyof RateLimitQuotasListResponseBodies, CONTENT_TYPE extends never = never>(args?: RateLimitQuotasListRequestParameters): Keq<RateLimitQuotasListOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<RateLimitQuotasListResponseBodies[STATUS]>('/sys/quotas/rate-limit')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  rateLimitQuotasRead<STATUS extends keyof RateLimitQuotasReadResponseBodies, CONTENT_TYPE extends never = never>(args?: RateLimitQuotasReadRequestParameters): Keq<RateLimitQuotasReadOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<RateLimitQuotasReadResponseBodies[STATUS]>('/sys/quotas/rate-limit/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  rateLimitQuotasWrite<STATUS extends keyof RateLimitQuotasWriteResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: RateLimitQuotasWriteRequestParameters): Keq<RateLimitQuotasWriteOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<RateLimitQuotasWriteResponseBodies[STATUS]>('/sys/quotas/rate-limit/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'block_interval' in args) req.send({ block_interval: args['block_interval'] })\n    if (args && 'inheritable' in args) req.send({ inheritable: args['inheritable'] })\n    if (args && 'interval' in args) req.send({ interval: args['interval'] })\n    if (args && 'path' in args) req.send({ path: args['path'] })\n    if (args && 'rate' in args) req.send({ rate: args['rate'] })\n    if (args && 'role' in args) req.send({ role: args['role'] })\n    if (args && 'type' in args) req.send({ type: args['type'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  rateLimitQuotasDelete<STATUS extends keyof RateLimitQuotasDeleteResponseBodies, CONTENT_TYPE extends never = never>(args?: RateLimitQuotasDeleteRequestParameters): Keq<RateLimitQuotasDeleteOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<RateLimitQuotasDeleteResponseBodies[STATUS]>('/sys/quotas/rate-limit/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Return the backup copy of PGP-encrypted unseal keys.\n   *\n   */\n  rekeyReadBackupKey<STATUS extends keyof RekeyReadBackupKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: RekeyReadBackupKeyRequestParameters): Keq<RekeyReadBackupKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<RekeyReadBackupKeyResponseBodies[STATUS]>('/sys/rekey/backup')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Delete the backup copy of PGP-encrypted unseal keys.\n   *\n   */\n  rekeyDeleteBackupKey<STATUS extends keyof RekeyDeleteBackupKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: RekeyDeleteBackupKeyRequestParameters): Keq<RekeyDeleteBackupKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<RekeyDeleteBackupKeyResponseBodies[STATUS]>('/sys/rekey/backup')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Reads the configuration and progress of the current rekey attempt.\n   *\n   */\n  rekeyAttemptReadProgress<STATUS extends keyof RekeyAttemptReadProgressResponseBodies, CONTENT_TYPE extends never = never>(args?: RekeyAttemptReadProgressRequestParameters): Keq<RekeyAttemptReadProgressOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<RekeyAttemptReadProgressResponseBodies[STATUS]>('/sys/rekey/init')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Initializes a new rekey attempt.\n   *\n   * @description Only a single rekey attempt can take place at a time, and changing the parameters of a rekey requires canceling and starting a new rekey, which will also provide a new nonce.\n   */\n  rekeyAttemptInitialize<STATUS extends keyof RekeyAttemptInitializeResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: RekeyAttemptInitializeRequestParameters): Keq<RekeyAttemptInitializeOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<RekeyAttemptInitializeResponseBodies[STATUS]>('/sys/rekey/init')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'backup' in args) req.send({ backup: args['backup'] })\n    if (args && 'pgp_keys' in args) req.send({ pgp_keys: args['pgp_keys'] })\n    if (args && 'require_verification' in args) req.send({ require_verification: args['require_verification'] })\n    if (args && 'secret_shares' in args) req.send({ secret_shares: args['secret_shares'] })\n    if (args && 'secret_threshold' in args) req.send({ secret_threshold: args['secret_threshold'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Cancels any in-progress rekey.\n   *\n   * @description This clears the rekey settings as well as any progress made. This must be called to change the parameters of the rekey. Note: verification is still a part of a rekey. If rekeying is canceled during the verification flow, the current unseal keys remain valid.\n   */\n  rekeyAttemptCancel<STATUS extends keyof RekeyAttemptCancelResponseBodies, CONTENT_TYPE extends never = never>(args?: RekeyAttemptCancelRequestParameters): Keq<RekeyAttemptCancelOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<RekeyAttemptCancelResponseBodies[STATUS]>('/sys/rekey/init')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  rekeyReadBackupRecoveryKey<STATUS extends keyof RekeyReadBackupRecoveryKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: RekeyReadBackupRecoveryKeyRequestParameters): Keq<RekeyReadBackupRecoveryKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<RekeyReadBackupRecoveryKeyResponseBodies[STATUS]>('/sys/rekey/recovery-key-backup')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  rekeyDeleteBackupRecoveryKey<STATUS extends keyof RekeyDeleteBackupRecoveryKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: RekeyDeleteBackupRecoveryKeyRequestParameters): Keq<RekeyDeleteBackupRecoveryKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<RekeyDeleteBackupRecoveryKeyResponseBodies[STATUS]>('/sys/rekey/recovery-key-backup')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Enter a single unseal key share to progress the rekey of the OpenBao.\n   *\n   */\n  rekeyAttemptUpdate<STATUS extends keyof RekeyAttemptUpdateResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: RekeyAttemptUpdateRequestParameters): Keq<RekeyAttemptUpdateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<RekeyAttemptUpdateResponseBodies[STATUS]>('/sys/rekey/update')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'key' in args) req.send({ key: args['key'] })\n    if (args && 'nonce' in args) req.send({ nonce: args['nonce'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Read the configuration and progress of the current rekey verification attempt.\n   *\n   */\n  rekeyVerificationReadProgress<STATUS extends keyof RekeyVerificationReadProgressResponseBodies, CONTENT_TYPE extends never = never>(args?: RekeyVerificationReadProgressRequestParameters): Keq<RekeyVerificationReadProgressOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<RekeyVerificationReadProgressResponseBodies[STATUS]>('/sys/rekey/verify')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Enter a single new key share to progress the rekey verification operation.\n   *\n   */\n  rekeyVerificationUpdate<STATUS extends keyof RekeyVerificationUpdateResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: RekeyVerificationUpdateRequestParameters): Keq<RekeyVerificationUpdateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<RekeyVerificationUpdateResponseBodies[STATUS]>('/sys/rekey/verify')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'key' in args) req.send({ key: args['key'] })\n    if (args && 'nonce' in args) req.send({ nonce: args['nonce'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Cancel any in-progress rekey verification operation.\n   *\n   * @description This clears any progress made and resets the nonce. Unlike a `DELETE` against `sys/rekey/init`, this only resets the current verification operation, not the entire rekey atttempt.\n   */\n  rekeyVerificationCancel<STATUS extends keyof RekeyVerificationCancelResponseBodies, CONTENT_TYPE extends never = never>(args?: RekeyVerificationCancelRequestParameters): Keq<RekeyVerificationCancelOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<RekeyVerificationCancelResponseBodies[STATUS]>('/sys/rekey/verify')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Initiate a mount migration\n   *\n   */\n  remount<STATUS extends keyof RemountResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: RemountRequestParameters): Keq<RemountOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<RemountResponseBodies[STATUS]>('/sys/remount')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'from' in args) req.send({ from: args['from'] })\n    if (args && 'to' in args) req.send({ to: args['to'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Check status of a mount migration\n   *\n   */\n  remountStatus<STATUS extends keyof RemountStatusResponseBodies, CONTENT_TYPE extends never = never>(args?: RemountStatusRequestParameters): Keq<RemountStatusOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<RemountStatusResponseBodies[STATUS]>('/sys/remount/status/{migration_id}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  encryptionKeyRotate<STATUS extends keyof EncryptionKeyRotateResponseBodies, CONTENT_TYPE extends never = never>(args?: EncryptionKeyRotateRequestParameters): Keq<EncryptionKeyRotateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<EncryptionKeyRotateResponseBodies[STATUS]>('/sys/rotate')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  encryptionKeyReadRotationConfiguration<STATUS extends keyof EncryptionKeyReadRotationConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: EncryptionKeyReadRotationConfigurationRequestParameters): Keq<EncryptionKeyReadRotationConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<EncryptionKeyReadRotationConfigurationResponseBodies[STATUS]>('/sys/rotate/config')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  encryptionKeyConfigureRotationConfiguration<STATUS extends keyof EncryptionKeyConfigureRotationConfigurationResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: EncryptionKeyConfigureRotationConfigurationRequestParameters): Keq<EncryptionKeyConfigureRotationConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<EncryptionKeyConfigureRotationConfigurationResponseBodies[STATUS]>('/sys/rotate/config')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'enabled' in args) req.send({ enabled: args['enabled'] })\n    if (args && 'interval' in args) req.send({ interval: args['interval'] })\n    if (args && 'max_operations' in args) req.send({ max_operations: args['max_operations'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  encryptionKeyRotateRotateKeyring<STATUS extends keyof EncryptionKeyRotateRotateKeyringResponseBodies, CONTENT_TYPE extends never = never>(args?: EncryptionKeyRotateRotateKeyringRequestParameters): Keq<EncryptionKeyRotateRotateKeyringOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<EncryptionKeyRotateRotateKeyringResponseBodies[STATUS]>('/sys/rotate/keyring')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  encryptionKeyReadRotateKeyringConfig<STATUS extends keyof EncryptionKeyReadRotateKeyringConfigResponseBodies, CONTENT_TYPE extends never = never>(args?: EncryptionKeyReadRotateKeyringConfigRequestParameters): Keq<EncryptionKeyReadRotateKeyringConfigOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<EncryptionKeyReadRotateKeyringConfigResponseBodies[STATUS]>('/sys/rotate/keyring/config')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  encryptionKeyConfigureRotateKeyringConfig<STATUS extends keyof EncryptionKeyConfigureRotateKeyringConfigResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: EncryptionKeyConfigureRotateKeyringConfigRequestParameters): Keq<EncryptionKeyConfigureRotateKeyringConfigOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<EncryptionKeyConfigureRotateKeyringConfigResponseBodies[STATUS]>('/sys/rotate/keyring/config')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'enabled' in args) req.send({ enabled: args['enabled'] })\n    if (args && 'interval' in args) req.send({ interval: args['interval'] })\n    if (args && 'max_operations' in args) req.send({ max_operations: args['max_operations'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Return the backup copy of PGP-encrypted unseal keys.\n   *\n   */\n  rotateReadRotateRecoveryBackup<STATUS extends keyof RotateReadRotateRecoveryBackupResponseBodies, CONTENT_TYPE extends never = never>(args?: RotateReadRotateRecoveryBackupRequestParameters): Keq<RotateReadRotateRecoveryBackupOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<RotateReadRotateRecoveryBackupResponseBodies[STATUS]>('/sys/rotate/recovery/backup')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Delete the backup copy of PGP-encrypted unseal keys.\n   *\n   */\n  rotateDeleteRotateRecoveryBackup<STATUS extends keyof RotateDeleteRotateRecoveryBackupResponseBodies, CONTENT_TYPE extends never = never>(args?: RotateDeleteRotateRecoveryBackupRequestParameters): Keq<RotateDeleteRotateRecoveryBackupOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<RotateDeleteRotateRecoveryBackupResponseBodies[STATUS]>('/sys/rotate/recovery/backup')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Reads the configuration and progress of the current root rotate attempt.\n   *\n   */\n  rotateAttemptReadRotateRecoveryInit<STATUS extends keyof RotateAttemptReadRotateRecoveryInitResponseBodies, CONTENT_TYPE extends never = never>(args?: RotateAttemptReadRotateRecoveryInitRequestParameters): Keq<RotateAttemptReadRotateRecoveryInitOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<RotateAttemptReadRotateRecoveryInitResponseBodies[STATUS]>('/sys/rotate/recovery/init')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Initializes a new root rotate attempt.\n   *\n   * @description Only a single rotate attempt can take place at a time, and changing the parameters of a rotate requires canceling and starting a new rotation, which will also provide a new nonce.\n   */\n  rotateAttemptInitializeRotateRecoveryInit<STATUS extends keyof RotateAttemptInitializeRotateRecoveryInitResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: RotateAttemptInitializeRotateRecoveryInitRequestParameters): Keq<RotateAttemptInitializeRotateRecoveryInitOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<RotateAttemptInitializeRotateRecoveryInitResponseBodies[STATUS]>('/sys/rotate/recovery/init')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'backup' in args) req.send({ backup: args['backup'] })\n    if (args && 'pgp_keys' in args) req.send({ pgp_keys: args['pgp_keys'] })\n    if (args && 'require_verification' in args) req.send({ require_verification: args['require_verification'] })\n    if (args && 'secret_shares' in args) req.send({ secret_shares: args['secret_shares'] })\n    if (args && 'secret_threshold' in args) req.send({ secret_threshold: args['secret_threshold'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Cancels any in-progress rotate root operation.\n   *\n   * @description This clears the rotate settings as well as any progress made. This must be called to change the parameters of the rotate. Note: verification is still a part of a rotate. If rotating is canceled during the verification flow, the current unseal keys remain valid.\n   */\n  rotateAttemptCancelRotateRecoveryInit<STATUS extends keyof RotateAttemptCancelRotateRecoveryInitResponseBodies, CONTENT_TYPE extends never = never>(args?: RotateAttemptCancelRotateRecoveryInitRequestParameters): Keq<RotateAttemptCancelRotateRecoveryInitOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<RotateAttemptCancelRotateRecoveryInitResponseBodies[STATUS]>('/sys/rotate/recovery/init')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Enter a single unseal key share to progress the rotation of the root key of OpenBao.\n   *\n   */\n  rotateAttemptUpdateRotateRecoveryUpdate<STATUS extends keyof RotateAttemptUpdateRotateRecoveryUpdateResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: RotateAttemptUpdateRotateRecoveryUpdateRequestParameters): Keq<RotateAttemptUpdateRotateRecoveryUpdateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<RotateAttemptUpdateRotateRecoveryUpdateResponseBodies[STATUS]>('/sys/rotate/recovery/update')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'key' in args) req.send({ key: args['key'] })\n    if (args && 'nonce' in args) req.send({ nonce: args['nonce'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Read the configuration and progress of the current rotate verification attempt.\n   *\n   */\n  rotateVerificationReadRotateRecoveryVerify<STATUS extends keyof RotateVerificationReadRotateRecoveryVerifyResponseBodies, CONTENT_TYPE extends never = never>(args?: RotateVerificationReadRotateRecoveryVerifyRequestParameters): Keq<RotateVerificationReadRotateRecoveryVerifyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<RotateVerificationReadRotateRecoveryVerifyResponseBodies[STATUS]>('/sys/rotate/recovery/verify')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Enter a single new key share to progress the rotation verification operation.\n   *\n   */\n  rotateVerificationUpdateRotateRecoveryVerify<STATUS extends keyof RotateVerificationUpdateRotateRecoveryVerifyResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: RotateVerificationUpdateRotateRecoveryVerifyRequestParameters): Keq<RotateVerificationUpdateRotateRecoveryVerifyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<RotateVerificationUpdateRotateRecoveryVerifyResponseBodies[STATUS]>('/sys/rotate/recovery/verify')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'key' in args) req.send({ key: args['key'] })\n    if (args && 'nonce' in args) req.send({ nonce: args['nonce'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Cancel any in-progress rotate verification operation.\n   *\n   * @description This clears any progress made and resets the nonce. Unlike a `DELETE` against `sys/rotate/(root/recovery)/init`, this only resets the current verification operation, not the entire rotate atttempt.\n   */\n  rotateVerificationCancelRotateRecoveryVerify<STATUS extends keyof RotateVerificationCancelRotateRecoveryVerifyResponseBodies, CONTENT_TYPE extends never = never>(args?: RotateVerificationCancelRotateRecoveryVerifyRequestParameters): Keq<RotateVerificationCancelRotateRecoveryVerifyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<RotateVerificationCancelRotateRecoveryVerifyResponseBodies[STATUS]>('/sys/rotate/recovery/verify')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  rootKeyRotate<STATUS extends keyof RootKeyRotateResponseBodies, CONTENT_TYPE extends never = never>(args?: RootKeyRotateRequestParameters): Keq<RootKeyRotateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<RootKeyRotateResponseBodies[STATUS]>('/sys/rotate/root')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Return the backup copy of PGP-encrypted unseal keys.\n   *\n   */\n  rotateReadBackupKey<STATUS extends keyof RotateReadBackupKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: RotateReadBackupKeyRequestParameters): Keq<RotateReadBackupKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<RotateReadBackupKeyResponseBodies[STATUS]>('/sys/rotate/root/backup')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Delete the backup copy of PGP-encrypted unseal keys.\n   *\n   */\n  rotateDeleteBackupKey<STATUS extends keyof RotateDeleteBackupKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: RotateDeleteBackupKeyRequestParameters): Keq<RotateDeleteBackupKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<RotateDeleteBackupKeyResponseBodies[STATUS]>('/sys/rotate/root/backup')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Reads the configuration and progress of the current root rotate attempt.\n   *\n   */\n  rotateAttemptReadProgress<STATUS extends keyof RotateAttemptReadProgressResponseBodies, CONTENT_TYPE extends never = never>(args?: RotateAttemptReadProgressRequestParameters): Keq<RotateAttemptReadProgressOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<RotateAttemptReadProgressResponseBodies[STATUS]>('/sys/rotate/root/init')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Initializes a new root rotate attempt.\n   *\n   * @description Only a single rotate attempt can take place at a time, and changing the parameters of a rotate requires canceling and starting a new rotation, which will also provide a new nonce.\n   */\n  rotateAttemptInitialize<STATUS extends keyof RotateAttemptInitializeResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: RotateAttemptInitializeRequestParameters): Keq<RotateAttemptInitializeOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<RotateAttemptInitializeResponseBodies[STATUS]>('/sys/rotate/root/init')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'backup' in args) req.send({ backup: args['backup'] })\n    if (args && 'pgp_keys' in args) req.send({ pgp_keys: args['pgp_keys'] })\n    if (args && 'require_verification' in args) req.send({ require_verification: args['require_verification'] })\n    if (args && 'secret_shares' in args) req.send({ secret_shares: args['secret_shares'] })\n    if (args && 'secret_threshold' in args) req.send({ secret_threshold: args['secret_threshold'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Cancels any in-progress rotate root operation.\n   *\n   * @description This clears the rotate settings as well as any progress made. This must be called to change the parameters of the rotate. Note: verification is still a part of a rotate. If rotating is canceled during the verification flow, the current unseal keys remain valid.\n   */\n  rotateAttemptCancel<STATUS extends keyof RotateAttemptCancelResponseBodies, CONTENT_TYPE extends never = never>(args?: RotateAttemptCancelRequestParameters): Keq<RotateAttemptCancelOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<RotateAttemptCancelResponseBodies[STATUS]>('/sys/rotate/root/init')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Enter a single unseal key share to progress the rotation of the root key of OpenBao.\n   *\n   */\n  rotateAttemptUpdate<STATUS extends keyof RotateAttemptUpdateResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: RotateAttemptUpdateRequestParameters): Keq<RotateAttemptUpdateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<RotateAttemptUpdateResponseBodies[STATUS]>('/sys/rotate/root/update')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'key' in args) req.send({ key: args['key'] })\n    if (args && 'nonce' in args) req.send({ nonce: args['nonce'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Read the configuration and progress of the current rotate verification attempt.\n   *\n   */\n  rotateVerificationReadProgress<STATUS extends keyof RotateVerificationReadProgressResponseBodies, CONTENT_TYPE extends never = never>(args?: RotateVerificationReadProgressRequestParameters): Keq<RotateVerificationReadProgressOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<RotateVerificationReadProgressResponseBodies[STATUS]>('/sys/rotate/root/verify')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Enter a single new key share to progress the rotation verification operation.\n   *\n   */\n  rotateVerificationUpdate<STATUS extends keyof RotateVerificationUpdateResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: RotateVerificationUpdateRequestParameters): Keq<RotateVerificationUpdateOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<RotateVerificationUpdateResponseBodies[STATUS]>('/sys/rotate/root/verify')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'key' in args) req.send({ key: args['key'] })\n    if (args && 'nonce' in args) req.send({ nonce: args['nonce'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Cancel any in-progress rotate verification operation.\n   *\n   * @description This clears any progress made and resets the nonce. Unlike a `DELETE` against `sys/rotate/(root/recovery)/init`, this only resets the current verification operation, not the entire rotate atttempt.\n   */\n  rotateVerificationCancel<STATUS extends keyof RotateVerificationCancelResponseBodies, CONTENT_TYPE extends never = never>(args?: RotateVerificationCancelRequestParameters): Keq<RotateVerificationCancelOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<RotateVerificationCancelResponseBodies[STATUS]>('/sys/rotate/root/verify')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Seal the OpenBao instance.\n   *\n   */\n  seal<STATUS extends keyof SealResponseBodies, CONTENT_TYPE extends never = never>(args?: SealRequestParameters): Keq<SealOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<SealResponseBodies[STATUS]>('/sys/seal')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Check the seal status of an OpenBao instance.\n   *\n   */\n  sealStatus<STATUS extends keyof SealStatusResponseBodies, CONTENT_TYPE extends never = never>(args?: SealStatusRequestParameters): Keq<SealStatusOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<SealStatusResponseBodies[STATUS]>('/sys/seal-status')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Cause the node to give up active status.\n   *\n   * @description This endpoint forces the node to give up active status. If the node does not have active status, this endpoint does nothing. Note that the node will sleep for ten seconds before attempting to grab the active lock again, but if no standby nodes grab the active lock in the interim, the same node may become the active node again.\n   */\n  stepDownLeader<STATUS extends keyof StepDownLeaderResponseBodies, CONTENT_TYPE extends never = never>(args?: StepDownLeaderRequestParameters): Keq<StepDownLeaderOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<StepDownLeaderResponseBodies[STATUS]>('/sys/step-down')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  generateHash<STATUS extends keyof GenerateHashResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: GenerateHashRequestParameters): Keq<GenerateHashOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<GenerateHashResponseBodies[STATUS]>('/sys/tools/hash')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'algorithm' in args) req.send({ algorithm: args['algorithm'] })\n    if (args && 'format' in args) req.send({ format: args['format'] })\n    if (args && 'input' in args) req.send({ input: args['input'] })\n    if (args && 'urlalgorithm' in args) req.send({ urlalgorithm: args['urlalgorithm'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  generateHashWithAlgorithm<STATUS extends keyof GenerateHashWithAlgorithmResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: GenerateHashWithAlgorithmRequestParameters): Keq<GenerateHashWithAlgorithmOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<GenerateHashWithAlgorithmResponseBodies[STATUS]>('/sys/tools/hash/{urlalgorithm}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'algorithm' in args) req.send({ algorithm: args['algorithm'] })\n    if (args && 'format' in args) req.send({ format: args['format'] })\n    if (args && 'input' in args) req.send({ input: args['input'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  generateRandom<STATUS extends keyof GenerateRandomResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: GenerateRandomRequestParameters): Keq<GenerateRandomOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<GenerateRandomResponseBodies[STATUS]>('/sys/tools/random')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'bytes' in args) req.send({ bytes: args['bytes'] })\n    if (args && 'format' in args) req.send({ format: args['format'] })\n    if (args && 'source' in args) req.send({ source: args['source'] })\n    if (args && 'urlbytes' in args) req.send({ urlbytes: args['urlbytes'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  generateRandomWithSource<STATUS extends keyof GenerateRandomWithSourceResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: GenerateRandomWithSourceRequestParameters): Keq<GenerateRandomWithSourceOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<GenerateRandomWithSourceResponseBodies[STATUS]>('/sys/tools/random/{source}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'bytes' in args) req.send({ bytes: args['bytes'] })\n    if (args && 'format' in args) req.send({ format: args['format'] })\n    if (args && 'urlbytes' in args) req.send({ urlbytes: args['urlbytes'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  generateRandomWithSourceAndBytes<STATUS extends keyof GenerateRandomWithSourceAndBytesResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: GenerateRandomWithSourceAndBytesRequestParameters): Keq<GenerateRandomWithSourceAndBytesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<GenerateRandomWithSourceAndBytesResponseBodies[STATUS]>('/sys/tools/random/{source}/{urlbytes}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'bytes' in args) req.send({ bytes: args['bytes'] })\n    if (args && 'format' in args) req.send({ format: args['format'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  generateRandomWithBytes<STATUS extends keyof GenerateRandomWithBytesResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: GenerateRandomWithBytesRequestParameters): Keq<GenerateRandomWithBytesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<GenerateRandomWithBytesResponseBodies[STATUS]>('/sys/tools/random/{urlbytes}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'bytes' in args) req.send({ bytes: args['bytes'] })\n    if (args && 'format' in args) req.send({ format: args['format'] })\n    if (args && 'source' in args) req.send({ source: args['source'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Unseal the OpenBao instance.\n   *\n   */\n  unseal<STATUS extends keyof UnsealResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: UnsealRequestParameters): Keq<UnsealOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<UnsealResponseBodies[STATUS]>('/sys/unseal')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'key' in args) req.send({ key: args['key'] })\n    if (args && 'reset' in args) req.send({ reset: args['reset'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Look up wrapping properties for the given token.\n   *\n   */\n  readWrappingProperties<STATUS extends keyof ReadWrappingPropertiesResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: ReadWrappingPropertiesRequestParameters): Keq<ReadWrappingPropertiesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<ReadWrappingPropertiesResponseBodies[STATUS]>('/sys/wrapping/lookup')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'token' in args) req.send({ token: args['token'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  rewrap<STATUS extends keyof RewrapResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: RewrapRequestParameters): Keq<RewrapOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<RewrapResponseBodies[STATUS]>('/sys/wrapping/rewrap')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'token' in args) req.send({ token: args['token'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  unwrap<STATUS extends keyof UnwrapResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: UnwrapRequestParameters): Keq<UnwrapOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<UnwrapResponseBodies[STATUS]>('/sys/wrapping/unwrap')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'token' in args) req.send({ token: args['token'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  wrap<STATUS extends keyof WrapResponseBodies, CONTENT_TYPE extends never = never>(args?: WrapRequestParameters): Keq<WrapOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<WrapResponseBodies[STATUS]>('/sys/wrapping/wrap')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitBackUpKey<STATUS extends keyof TransitBackUpKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: TransitBackUpKeyRequestParameters): Keq<TransitBackUpKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<TransitBackUpKeyResponseBodies[STATUS]>('/transit/backup/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitByokKey<STATUS extends keyof TransitByokKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: TransitByokKeyRequestParameters): Keq<TransitByokKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<TransitByokKeyResponseBodies[STATUS]>('/transit/byok-export/{destination}/{source}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitByokKeyVersion<STATUS extends keyof TransitByokKeyVersionResponseBodies, CONTENT_TYPE extends never = never>(args?: TransitByokKeyVersionRequestParameters): Keq<TransitByokKeyVersionOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<TransitByokKeyVersionResponseBodies[STATUS]>('/transit/byok-export/{destination}/{source}/{version}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Returns the size of the active cache\n   *\n   */\n  transitReadCacheConfiguration<STATUS extends keyof TransitReadCacheConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: TransitReadCacheConfigurationRequestParameters): Keq<TransitReadCacheConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<TransitReadCacheConfigurationResponseBodies[STATUS]>('/transit/cache-config')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n  /**\n   * Configures a new cache of the specified size\n   *\n   */\n  transitConfigureCache<STATUS extends keyof TransitConfigureCacheResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitConfigureCacheRequestParameters): Keq<TransitConfigureCacheOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitConfigureCacheResponseBodies[STATUS]>('/transit/cache-config')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'size' in args) req.send({ size: args['size'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitReadKeysConfiguration<STATUS extends keyof TransitReadKeysConfigurationResponseBodies, CONTENT_TYPE extends never = never>(args?: TransitReadKeysConfigurationRequestParameters): Keq<TransitReadKeysConfigurationOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<TransitReadKeysConfigurationResponseBodies[STATUS]>('/transit/config/keys')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitConfigureKeys<STATUS extends keyof TransitConfigureKeysResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitConfigureKeysRequestParameters): Keq<TransitConfigureKeysOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitConfigureKeysResponseBodies[STATUS]>('/transit/config/keys')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'disable_upsert' in args) req.send({ disable_upsert: args['disable_upsert'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitGenerateDataKey<STATUS extends keyof TransitGenerateDataKeyResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitGenerateDataKeyRequestParameters): Keq<TransitGenerateDataKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitGenerateDataKeyResponseBodies[STATUS]>('/transit/datakey/{plaintext}/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'associated_data' in args) req.send({ associated_data: args['associated_data'] })\n    if (args && 'bits' in args) req.send({ bits: args['bits'] })\n    if (args && 'context' in args) req.send({ context: args['context'] })\n    if (args && 'key_version' in args) req.send({ key_version: args['key_version'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitDecrypt<STATUS extends keyof TransitDecryptResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitDecryptRequestParameters): Keq<TransitDecryptOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitDecryptResponseBodies[STATUS]>('/transit/decrypt/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'associated_data' in args) req.send({ associated_data: args['associated_data'] })\n    if (args && 'batch_input' in args) req.send({ batch_input: args['batch_input'] })\n    if (args && 'ciphertext' in args) req.send({ ciphertext: args['ciphertext'] })\n    if (args && 'context' in args) req.send({ context: args['context'] })\n    if (args && 'partial_failure_response_code' in args) req.send({ partial_failure_response_code: args['partial_failure_response_code'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitDeriveKey<STATUS extends keyof TransitDeriveKeyResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitDeriveKeyRequestParameters): Keq<TransitDeriveKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitDeriveKeyResponseBodies[STATUS]>('/transit/derive-key/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'base_key_name' in args) req.send({ base_key_name: args['base_key_name'] })\n    if (args && 'base_key_version' in args) req.send({ base_key_version: args['base_key_version'] })\n    if (args && 'derived_key_type' in args) req.send({ derived_key_type: args['derived_key_type'] })\n    if (args && 'key_derivation_algorithm' in args) req.send({ key_derivation_algorithm: args['key_derivation_algorithm'] })\n    if (args && 'peer_public_key' in args) req.send({ peer_public_key: args['peer_public_key'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitEncrypt<STATUS extends keyof TransitEncryptResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitEncryptRequestParameters): Keq<TransitEncryptOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitEncryptResponseBodies[STATUS]>('/transit/encrypt/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'associated_data' in args) req.send({ associated_data: args['associated_data'] })\n    if (args && 'batch_input' in args) req.send({ batch_input: args['batch_input'] })\n    if (args && 'context' in args) req.send({ context: args['context'] })\n    if (args && 'convergent_encryption' in args) req.send({ convergent_encryption: args['convergent_encryption'] })\n    if (args && 'key_version' in args) req.send({ key_version: args['key_version'] })\n    if (args && 'partial_failure_response_code' in args) req.send({ partial_failure_response_code: args['partial_failure_response_code'] })\n    if (args && 'plaintext' in args) req.send({ plaintext: args['plaintext'] })\n    if (args && 'type' in args) req.send({ type: args['type'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitExportKey<STATUS extends keyof TransitExportKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: TransitExportKeyRequestParameters): Keq<TransitExportKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<TransitExportKeyResponseBodies[STATUS]>('/transit/export/{type}/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitExportKeyVersion<STATUS extends keyof TransitExportKeyVersionResponseBodies, CONTENT_TYPE extends never = never>(args?: TransitExportKeyVersionRequestParameters): Keq<TransitExportKeyVersionOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<TransitExportKeyVersionResponseBodies[STATUS]>('/transit/export/{type}/{name}/{version}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitHash<STATUS extends keyof TransitHashResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitHashRequestParameters): Keq<TransitHashOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitHashResponseBodies[STATUS]>('/transit/hash')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'algorithm' in args) req.send({ algorithm: args['algorithm'] })\n    if (args && 'format' in args) req.send({ format: args['format'] })\n    if (args && 'input' in args) req.send({ input: args['input'] })\n    if (args && 'urlalgorithm' in args) req.send({ urlalgorithm: args['urlalgorithm'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitHashWithAlgorithm<STATUS extends keyof TransitHashWithAlgorithmResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitHashWithAlgorithmRequestParameters): Keq<TransitHashWithAlgorithmOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitHashWithAlgorithmResponseBodies[STATUS]>('/transit/hash/{urlalgorithm}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'algorithm' in args) req.send({ algorithm: args['algorithm'] })\n    if (args && 'format' in args) req.send({ format: args['format'] })\n    if (args && 'input' in args) req.send({ input: args['input'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitGenerateHmac<STATUS extends keyof TransitGenerateHmacResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitGenerateHmacRequestParameters): Keq<TransitGenerateHmacOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitGenerateHmacResponseBodies[STATUS]>('/transit/hmac/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'algorithm' in args) req.send({ algorithm: args['algorithm'] })\n    if (args && 'batch_input' in args) req.send({ batch_input: args['batch_input'] })\n    if (args && 'input' in args) req.send({ input: args['input'] })\n    if (args && 'key_version' in args) req.send({ key_version: args['key_version'] })\n    if (args && 'urlalgorithm' in args) req.send({ urlalgorithm: args['urlalgorithm'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitGenerateHmacWithAlgorithm<STATUS extends keyof TransitGenerateHmacWithAlgorithmResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitGenerateHmacWithAlgorithmRequestParameters): Keq<TransitGenerateHmacWithAlgorithmOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitGenerateHmacWithAlgorithmResponseBodies[STATUS]>('/transit/hmac/{name}/{urlalgorithm}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'algorithm' in args) req.send({ algorithm: args['algorithm'] })\n    if (args && 'batch_input' in args) req.send({ batch_input: args['batch_input'] })\n    if (args && 'input' in args) req.send({ input: args['input'] })\n    if (args && 'key_version' in args) req.send({ key_version: args['key_version'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitListKeys<STATUS extends keyof TransitListKeysResponseBodies, CONTENT_TYPE extends never = never>(args?: TransitListKeysRequestParameters): Keq<TransitListKeysOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<TransitListKeysResponseBodies[STATUS]>('/transit/keys')\n\n\n    /* @anchor:query:start */\n    if (args && 'list' in args) req.query('list', args['list'], { arrayFormat: 'repeat' })\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitReadKey<STATUS extends keyof TransitReadKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: TransitReadKeyRequestParameters): Keq<TransitReadKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<TransitReadKeyResponseBodies[STATUS]>('/transit/keys/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitCreateKey<STATUS extends keyof TransitCreateKeyResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitCreateKeyRequestParameters): Keq<TransitCreateKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitCreateKeyResponseBodies[STATUS]>('/transit/keys/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'allow_plaintext_backup' in args) req.send({ allow_plaintext_backup: args['allow_plaintext_backup'] })\n    if (args && 'auto_rotate_period' in args) req.send({ auto_rotate_period: args['auto_rotate_period'] })\n    if (args && 'context' in args) req.send({ context: args['context'] })\n    if (args && 'convergent_encryption' in args) req.send({ convergent_encryption: args['convergent_encryption'] })\n    if (args && 'derived' in args) req.send({ derived: args['derived'] })\n    if (args && 'exportable' in args) req.send({ exportable: args['exportable'] })\n    if (args && 'key_size' in args) req.send({ key_size: args['key_size'] })\n    if (args && 'type' in args) req.send({ type: args['type'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitDeleteKey<STATUS extends keyof TransitDeleteKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: TransitDeleteKeyRequestParameters): Keq<TransitDeleteKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<TransitDeleteKeyResponseBodies[STATUS]>('/transit/keys/{name}')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitConfigureKey<STATUS extends keyof TransitConfigureKeyResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitConfigureKeyRequestParameters): Keq<TransitConfigureKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitConfigureKeyResponseBodies[STATUS]>('/transit/keys/{name}/config')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'allow_plaintext_backup' in args) req.send({ allow_plaintext_backup: args['allow_plaintext_backup'] })\n    if (args && 'auto_rotate_period' in args) req.send({ auto_rotate_period: args['auto_rotate_period'] })\n    if (args && 'deletion_allowed' in args) req.send({ deletion_allowed: args['deletion_allowed'] })\n    if (args && 'exportable' in args) req.send({ exportable: args['exportable'] })\n    if (args && 'min_decryption_version' in args) req.send({ min_decryption_version: args['min_decryption_version'] })\n    if (args && 'min_encryption_version' in args) req.send({ min_encryption_version: args['min_encryption_version'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  getCsr<STATUS extends keyof GetCsrResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: GetCsrRequestParameters): Keq<GetCsrOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<GetCsrResponseBodies[STATUS]>('/transit/keys/{name}/csr')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'csr' in args) req.send({ csr: args['csr'] })\n    if (args && 'version' in args) req.send({ version: args['version'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitImportKey<STATUS extends keyof TransitImportKeyResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitImportKeyRequestParameters): Keq<TransitImportKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitImportKeyResponseBodies[STATUS]>('/transit/keys/{name}/import')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'allow_plaintext_backup' in args) req.send({ allow_plaintext_backup: args['allow_plaintext_backup'] })\n    if (args && 'allow_rotation' in args) req.send({ allow_rotation: args['allow_rotation'] })\n    if (args && 'auto_rotate_period' in args) req.send({ auto_rotate_period: args['auto_rotate_period'] })\n    if (args && 'ciphertext' in args) req.send({ ciphertext: args['ciphertext'] })\n    if (args && 'context' in args) req.send({ context: args['context'] })\n    if (args && 'derived' in args) req.send({ derived: args['derived'] })\n    if (args && 'exportable' in args) req.send({ exportable: args['exportable'] })\n    if (args && 'hash_function' in args) req.send({ hash_function: args['hash_function'] })\n    if (args && 'public_key' in args) req.send({ public_key: args['public_key'] })\n    if (args && 'type' in args) req.send({ type: args['type'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitImportKeyVersion<STATUS extends keyof TransitImportKeyVersionResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitImportKeyVersionRequestParameters): Keq<TransitImportKeyVersionOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitImportKeyVersionResponseBodies[STATUS]>('/transit/keys/{name}/import_version')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'ciphertext' in args) req.send({ ciphertext: args['ciphertext'] })\n    if (args && 'hash_function' in args) req.send({ hash_function: args['hash_function'] })\n    if (args && 'public_key' in args) req.send({ public_key: args['public_key'] })\n    if (args && 'version' in args) req.send({ version: args['version'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitRotateKey<STATUS extends keyof TransitRotateKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: TransitRotateKeyRequestParameters): Keq<TransitRotateKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitRotateKeyResponseBodies[STATUS]>('/transit/keys/{name}/rotate')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  setChain<STATUS extends keyof SetChainResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: SetChainRequestParameters): Keq<SetChainOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<SetChainResponseBodies[STATUS]>('/transit/keys/{name}/set-certificate')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'certificate_chain' in args) req.send({ certificate_chain: args['certificate_chain'] })\n    if (args && 'version' in args) req.send({ version: args['version'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitSoftDeleteKey<STATUS extends keyof TransitSoftDeleteKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: TransitSoftDeleteKeyRequestParameters): Keq<TransitSoftDeleteKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.delete<TransitSoftDeleteKeyResponseBodies[STATUS]>('/transit/keys/{name}/soft-delete')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitSoftDeleteRestoreKey<STATUS extends keyof TransitSoftDeleteRestoreKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: TransitSoftDeleteRestoreKeyRequestParameters): Keq<TransitSoftDeleteRestoreKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitSoftDeleteRestoreKeyResponseBodies[STATUS]>('/transit/keys/{name}/soft-delete-restore')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitTrimKey<STATUS extends keyof TransitTrimKeyResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitTrimKeyRequestParameters): Keq<TransitTrimKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitTrimKeyResponseBodies[STATUS]>('/transit/keys/{name}/trim')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'min_available_version' in args) req.send({ min_available_version: args['min_available_version'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitGenerateRandom<STATUS extends keyof TransitGenerateRandomResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitGenerateRandomRequestParameters): Keq<TransitGenerateRandomOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitGenerateRandomResponseBodies[STATUS]>('/transit/random')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'bytes' in args) req.send({ bytes: args['bytes'] })\n    if (args && 'format' in args) req.send({ format: args['format'] })\n    if (args && 'source' in args) req.send({ source: args['source'] })\n    if (args && 'urlbytes' in args) req.send({ urlbytes: args['urlbytes'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitGenerateRandomWithSource<STATUS extends keyof TransitGenerateRandomWithSourceResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitGenerateRandomWithSourceRequestParameters): Keq<TransitGenerateRandomWithSourceOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitGenerateRandomWithSourceResponseBodies[STATUS]>('/transit/random/{source}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'bytes' in args) req.send({ bytes: args['bytes'] })\n    if (args && 'format' in args) req.send({ format: args['format'] })\n    if (args && 'urlbytes' in args) req.send({ urlbytes: args['urlbytes'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitGenerateRandomWithSourceAndBytes<STATUS extends keyof TransitGenerateRandomWithSourceAndBytesResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitGenerateRandomWithSourceAndBytesRequestParameters): Keq<TransitGenerateRandomWithSourceAndBytesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitGenerateRandomWithSourceAndBytesResponseBodies[STATUS]>('/transit/random/{source}/{urlbytes}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'bytes' in args) req.send({ bytes: args['bytes'] })\n    if (args && 'format' in args) req.send({ format: args['format'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitGenerateRandomWithBytes<STATUS extends keyof TransitGenerateRandomWithBytesResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitGenerateRandomWithBytesRequestParameters): Keq<TransitGenerateRandomWithBytesOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitGenerateRandomWithBytesResponseBodies[STATUS]>('/transit/random/{urlbytes}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'bytes' in args) req.send({ bytes: args['bytes'] })\n    if (args && 'format' in args) req.send({ format: args['format'] })\n    if (args && 'source' in args) req.send({ source: args['source'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitRestoreKey<STATUS extends keyof TransitRestoreKeyResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitRestoreKeyRequestParameters): Keq<TransitRestoreKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitRestoreKeyResponseBodies[STATUS]>('/transit/restore')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'backup' in args) req.send({ backup: args['backup'] })\n    if (args && 'force' in args) req.send({ force: args['force'] })\n    if (args && 'name' in args) req.send({ name: args['name'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitRestoreAndRenameKey<STATUS extends keyof TransitRestoreAndRenameKeyResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitRestoreAndRenameKeyRequestParameters): Keq<TransitRestoreAndRenameKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitRestoreAndRenameKeyResponseBodies[STATUS]>('/transit/restore/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'backup' in args) req.send({ backup: args['backup'] })\n    if (args && 'force' in args) req.send({ force: args['force'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitRewrap<STATUS extends keyof TransitRewrapResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitRewrapRequestParameters): Keq<TransitRewrapOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitRewrapResponseBodies[STATUS]>('/transit/rewrap/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'batch_input' in args) req.send({ batch_input: args['batch_input'] })\n    if (args && 'ciphertext' in args) req.send({ ciphertext: args['ciphertext'] })\n    if (args && 'context' in args) req.send({ context: args['context'] })\n    if (args && 'key_version' in args) req.send({ key_version: args['key_version'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitSign<STATUS extends keyof TransitSignResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitSignRequestParameters): Keq<TransitSignOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitSignResponseBodies[STATUS]>('/transit/sign/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'algorithm' in args) req.send({ algorithm: args['algorithm'] })\n    if (args && 'batch_input' in args) req.send({ batch_input: args['batch_input'] })\n    if (args && 'context' in args) req.send({ context: args['context'] })\n    if (args && 'hash_algorithm' in args) req.send({ hash_algorithm: args['hash_algorithm'] })\n    if (args && 'input' in args) req.send({ input: args['input'] })\n    if (args && 'key_version' in args) req.send({ key_version: args['key_version'] })\n    if (args && 'marshaling_algorithm' in args) req.send({ marshaling_algorithm: args['marshaling_algorithm'] })\n    if (args && 'prehashed' in args) req.send({ prehashed: args['prehashed'] })\n    if (args && 'salt_length' in args) req.send({ salt_length: args['salt_length'] })\n    if (args && 'signature_algorithm' in args) req.send({ signature_algorithm: args['signature_algorithm'] })\n    if (args && 'urlalgorithm' in args) req.send({ urlalgorithm: args['urlalgorithm'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitSignWithAlgorithm<STATUS extends keyof TransitSignWithAlgorithmResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitSignWithAlgorithmRequestParameters): Keq<TransitSignWithAlgorithmOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitSignWithAlgorithmResponseBodies[STATUS]>('/transit/sign/{name}/{urlalgorithm}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'algorithm' in args) req.send({ algorithm: args['algorithm'] })\n    if (args && 'batch_input' in args) req.send({ batch_input: args['batch_input'] })\n    if (args && 'context' in args) req.send({ context: args['context'] })\n    if (args && 'hash_algorithm' in args) req.send({ hash_algorithm: args['hash_algorithm'] })\n    if (args && 'input' in args) req.send({ input: args['input'] })\n    if (args && 'key_version' in args) req.send({ key_version: args['key_version'] })\n    if (args && 'marshaling_algorithm' in args) req.send({ marshaling_algorithm: args['marshaling_algorithm'] })\n    if (args && 'prehashed' in args) req.send({ prehashed: args['prehashed'] })\n    if (args && 'salt_length' in args) req.send({ salt_length: args['salt_length'] })\n    if (args && 'signature_algorithm' in args) req.send({ signature_algorithm: args['signature_algorithm'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitVerify<STATUS extends keyof TransitVerifyResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitVerifyRequestParameters): Keq<TransitVerifyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitVerifyResponseBodies[STATUS]>('/transit/verify/{name}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'algorithm' in args) req.send({ algorithm: args['algorithm'] })\n    if (args && 'batch_input' in args) req.send({ batch_input: args['batch_input'] })\n    if (args && 'context' in args) req.send({ context: args['context'] })\n    if (args && 'hash_algorithm' in args) req.send({ hash_algorithm: args['hash_algorithm'] })\n    if (args && 'hmac' in args) req.send({ hmac: args['hmac'] })\n    if (args && 'input' in args) req.send({ input: args['input'] })\n    if (args && 'marshaling_algorithm' in args) req.send({ marshaling_algorithm: args['marshaling_algorithm'] })\n    if (args && 'prehashed' in args) req.send({ prehashed: args['prehashed'] })\n    if (args && 'salt_length' in args) req.send({ salt_length: args['salt_length'] })\n    if (args && 'signature' in args) req.send({ signature: args['signature'] })\n    if (args && 'signature_algorithm' in args) req.send({ signature_algorithm: args['signature_algorithm'] })\n    if (args && 'urlalgorithm' in args) req.send({ urlalgorithm: args['urlalgorithm'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitVerifyWithAlgorithm<STATUS extends keyof TransitVerifyWithAlgorithmResponseBodies, CONTENT_TYPE extends 'application/json' = 'application/json'>(args?: TransitVerifyWithAlgorithmRequestParameters): Keq<TransitVerifyWithAlgorithmOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.post<TransitVerifyWithAlgorithmResponseBodies[STATUS]>('/transit/verify/{name}/{urlalgorithm}')\n\n    req.type('application/json')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    if (args && 'algorithm' in args) req.send({ algorithm: args['algorithm'] })\n    if (args && 'batch_input' in args) req.send({ batch_input: args['batch_input'] })\n    if (args && 'context' in args) req.send({ context: args['context'] })\n    if (args && 'hash_algorithm' in args) req.send({ hash_algorithm: args['hash_algorithm'] })\n    if (args && 'hmac' in args) req.send({ hmac: args['hmac'] })\n    if (args && 'input' in args) req.send({ input: args['input'] })\n    if (args && 'marshaling_algorithm' in args) req.send({ marshaling_algorithm: args['marshaling_algorithm'] })\n    if (args && 'prehashed' in args) req.send({ prehashed: args['prehashed'] })\n    if (args && 'salt_length' in args) req.send({ salt_length: args['salt_length'] })\n    if (args && 'signature' in args) req.send({ signature: args['signature'] })\n    if (args && 'signature_algorithm' in args) req.send({ signature_algorithm: args['signature_algorithm'] })\n    /* @anchor:body:end */\n\n    return req\n  }\n\n\n  transitReadWrappingKey<STATUS extends keyof TransitReadWrappingKeyResponseBodies, CONTENT_TYPE extends never = never>(args?: TransitReadWrappingKeyRequestParameters): Keq<TransitReadWrappingKeyOperation<STATUS, CONTENT_TYPE>> {\n    const req = this.request.get<TransitReadWrappingKeyResponseBodies[STATUS]>('/transit/wrapping_key')\n\n\n    /* @anchor:query:start */\n    /* @anchor:query:end */\n\n    /* @anchor:headers:start */\n    /* @anchor:headers:end */\n\n    /* @anchor:path-parameters:start */\n    /* @anchor:path-parameters:end */\n\n    /* @anchor:body:start */\n    /* @anchor:body:end */\n\n    return req\n  }\n}\n\n/* @anchor:file:end */\n","// Code generated by @keq-request/cli. DO NOT EDIT.\n// Code generated by @keq-request/cli. DO NOT EDIT.\n// Code generated by @keq-request/cli. DO NOT EDIT.\n\n/* @anchor:file:start */\nimport { Module, ConfigurableModuleBuilder, Provider } from '@nestjs/common'\nimport { KeqRequest } from 'keq'\nimport { KeqModule, type KeqModuleOptions, KeqConsumer } from '@keq-request/nestjs'\nimport { OpenBaoHttpClient } from './open-bao-http.client'\n\n\nexport interface OpenBaoHttpModuleOptions extends KeqModuleOptions {\n  /**\n   * Whether to register the module globally.\n   * @default false\n   */\n  isGlobal?: boolean\n}\n\nconst KEQ_REQUEST_TOKEN = Symbol('OpenBaoHttpKeqRequest')\nconst KEQ_CONSUMER_TOKEN = Symbol('OpenBaoHttpKeqConsumer')\n\nconst { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } = new ConfigurableModuleBuilder<OpenBaoHttpModuleOptions>()\n  .setExtras({ isGlobal: false }, (definition, extras) => ({\n    ...definition,\n    global: extras.isGlobal,\n  }))\n  .build()\n\nconst REQUEST_PROVIDER: Provider = {\n  provide: KEQ_REQUEST_TOKEN,\n  useFactory: (options: OpenBaoHttpModuleOptions, globalRequest?: KeqRequest) => {\n    if (!options.isolate && !globalRequest) {\n      console.warn('OpenBaoHttpModule: No global KeqRequest found, creating an isolated instance. Import KeqModule globally or set { isolate: true } to suppress this warning.')\n    }\n\n    const request = (!options.isolate && globalRequest)\n      ? globalRequest.fork()\n      : new KeqRequest()\n\n    if (options.middlewares) {\n      for (const middleware of options.middlewares) {\n        request.use(middleware)\n      }\n    }\n\n    return request\n  },\n  inject: [\n    MODULE_OPTIONS_TOKEN,\n    { token: KeqRequest, optional: true },\n  ],\n}\n\nconst CLIENT_PROVIDER: Provider = {\n  provide: OpenBaoHttpClient,\n  useFactory: (request: KeqRequest) => new OpenBaoHttpClient(request),\n  inject: [KEQ_REQUEST_TOKEN],\n}\n\nconst CONSUMER_PROVIDER: Provider = {\n  provide: KEQ_CONSUMER_TOKEN,\n  useFactory: (request: KeqRequest) => new KeqConsumer(request),\n  inject: [KEQ_REQUEST_TOKEN],\n}\n\n/**\n * NestJS module that provides the {@link OpenBaoHttpClient} for dependency injection.\n *\n * This module requires a `KeqRequest` instance, which can be provided in two ways:\n *\n * **Option 1: Use the global `KeqModule` (recommended)**\n *\n * Import `KeqModule` globally, then register this module.\n * The module will fork from the global KeqRequest and inherit its middlewares.\n *\n * ```typescript\n * // app.module.ts\n * import { KeqModule } from '@keq-request/nestjs'\n *\n * @Module({\n *   imports: [\n *     KeqModule,\n *     OpenBaoHttpModule.register({\n *       isGlobal: true, // optional, default false\n *       middlewares: [], // module-level middlewares\n *     }),\n *   ],\n * })\n * export class AppModule {}\n * ```\n *\n * **Option 2: Provide an isolated `KeqRequest` instance**\n *\n * ```typescript\n * @Module({\n *   imports: [\n *     OpenBaoHttpModule.register({\n *       isolate: true, // no inherited middlewares\n *     }),\n *   ],\n * })\n * export class SomeFeatureModule {}\n * ```\n *\n * Then inject `OpenBaoHttpClient` in your services:\n *\n * ```typescript\n * @Injectable()\n * export class SomeService {\n *   constructor(private readonly client: OpenBaoHttpClient) {}\n * }\n * ```\n */\n@Module({\n  imports: [KeqModule],\n  providers: [REQUEST_PROVIDER, CONSUMER_PROVIDER, CLIENT_PROVIDER],\n  exports: [OpenBaoHttpClient, KEQ_CONSUMER_TOKEN],\n})\nexport class OpenBaoHttpModule extends ConfigurableModuleClass {\n  static readonly KEQ_REQUEST = KEQ_REQUEST_TOKEN\n  static readonly KEQ_CONSUMER = KEQ_CONSUMER_TOKEN\n}\n\n/* @anchor:file:end */\n","import type { KeqMiddleware } from 'keq'\n\n/**\n * Paths that don't require authentication token.\n *\n * These endpoints can be called without X-Vault-Token header:\n * - `/auth/<mount>/login*` - Auth login endpoints (userpass, approle, kubernetes, etc.)\n * - `/sys/health` - Health check endpoint\n * - `/sys/init` - Initialization status and operation\n * - `/sys/seal-status` - Seal status check\n * - `/sys/unseal` - Unseal operation (uses unseal key)\n * - `/sys/leader` - Leader status\n * - `/sys/generate-root/*` - Root token generation (uses unseal key)\n * - `/sys/rekey/*` - Rekey operations (uses unseal key)\n */\nconst UNAUTHENTICATED_PATTERNS: RegExp[] = [\n  /^\\/auth\\/[^/]+\\/login/,\n  /^\\/sys\\/health$/,\n  /^\\/sys\\/init$/,\n  /^\\/sys\\/seal-status$/,\n  /^\\/sys\\/unseal$/,\n  /^\\/sys\\/leader$/,\n  /^\\/sys\\/generate-root(\\/|$)/,\n  /^\\/sys\\/rekey(\\/|$)/,\n]\n\n/**\n * Check if a pathname matches any unauthenticated pattern\n */\nfunction isUnauthenticatedPath(pathname: string): boolean {\n  return UNAUTHENTICATED_PATTERNS.some((pattern) => pattern.test(pathname))\n}\n\n/**\n * Create OpenBao Token middleware\n *\n * Automatically adds `X-Vault-Token` header to requests, excluding unauthenticated endpoints.\n *\n * @param getToken Callback function to get the current valid token\n * @returns keq middleware\n *\n * @example\n * ```ts\n * const request = new KeqRequest()\n * request.use(setOpenBaoToken(() => tokenManager.getToken()))\n * ```\n */\nexport function setOpenBaoToken(getToken: () => string): KeqMiddleware {\n  const middleware: KeqMiddleware = async (ctx, next) => {\n    const pathname = ctx.options.module?.pathname ?? ''\n\n    // Skip unauthenticated endpoints\n    if (!isUnauthenticatedPath(pathname)) {\n      ctx.request.headers.set('X-Vault-Token', getToken())\n    }\n\n    await next()\n  }\n\n  middleware.__keqMiddlewareName__ = 'setOpenBaoToken'\n  return middleware\n}\n","import { Logger } from '@nestjs/common'\nimport type { KeqMiddleware } from 'keq'\nimport { RequestException } from 'keq'\n\nconst logger = new Logger('ClarifyOpenbaoError')\n\n/**\n * 根据 HTTP 状态码生成中文操作建议\n */\nfunction getStatusCodeGuidance(statusCode: number): string {\n  if (statusCode === 400) {\n    return '请检查请求参数是否正确'\n  }\n  if (statusCode === 403) {\n    return '请检查 OpenBao 策略（Policy）是否为该 Token 授予了足够的权限'\n  }\n  if (statusCode === 404) {\n    return '请检查请求的路径或密钥是否存在'\n  }\n  if (statusCode >= 500) {\n    return '请检查 OpenBao 服务器日志以获取更多信息'\n  }\n  return ''\n}\n\n/**\n * OpenBao 请求错误格式化中间件\n *\n * 必须注册在 `validateStatusCode` 之后，作为中间件链的最外层，\n * 捕获 `RequestException` 并重写其错误消息，补充请求上下文和操作建议。\n *\n * 非 RequestException 错误（网络故障、超时等）记录日志后原样透传。\n */\nexport function clarifyOpenbaoError(): KeqMiddleware {\n  const middleware: KeqMiddleware = async (ctx, next) => {\n    try {\n      await next()\n    } catch (err: unknown) {\n      if (!(err instanceof RequestException)) {\n        const method = ctx.request.method.toUpperCase()\n        const url = ctx.request.url.toString()\n        logger.error(\n          `OpenBaoModule API 请求异常: ${method} ${url}`,\n          err instanceof Error ? err.stack : undefined,\n        )\n        throw err\n      }\n\n      const method = ctx.request.method.toUpperCase()\n      const url = ctx.request.url.toString()\n      const statusCode = err.statusCode\n      const statusText = err.response?.statusText ?? ''\n\n      let message = `OpenBaoModule API 请求失败: ${method} ${url}`\n      message += `\\n响应状态: ${String(statusCode)} ${statusText}`\n\n      if (err.response) {\n        try {\n          const bodyText = await err.response.clone().text()\n          if (bodyText) {\n            message += `\\n响应体: ${bodyText}`\n          }\n        } catch {\n          // 响应体读取失败（body 已被锁定等情况），跳过\n        }\n      }\n\n      const guidance = getStatusCodeGuidance(\n        typeof statusCode === 'number' ? statusCode : parseInt(String(statusCode), 10),\n      )\n      if (guidance) {\n        message += `\\n建议: ${guidance}`\n      }\n\n      err.message = message\n      throw err\n    }\n  }\n\n  middleware.__keqMiddlewareName__ = 'clarifyOpenbaoError'\n  return middleware\n}\n","import { Global, Module, Inject } from '@nestjs/common'\nimport { setBaseUrl } from '@keq-request/url'\nimport { clarifyFetchFailed, validateStatusCode } from '@keq-request/exception'\nimport {\n  KeqModule,\n  KeqConsumer,\n  InjectKeqConsumer,\n  KEQ_ROUTES,\n} from '@keq-request/nestjs'\nimport { OpenBaoHttpModule } from '../../apis/open-bao-http/open-bao-http.module'\nimport { OpenBaoTokenManager } from './open-bao-token.manager'\nimport { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } from './open-bao.module-definition'\nimport { setOpenBaoToken } from './set-open-bao-token.middleware'\nimport { clarifyOpenbaoError } from './request/format-error'\nimport type { OpenBaoModuleOptions } from './types'\n\n/**\n * OpenBao 核心模块\n *\n * 通过配置的身份认证方式（Token / Userpass / AppRole / Kubernetes）\n * 获取并维持 OpenBao Token，为 OpenBaoHttpClient 提供认证能力。\n *\n * 使用前需在根模块中导入 `KeqModule`：\n *\n * ```ts\n * import { KeqModule } from '@keq-request/nestjs'\n *\n * @Module({\n *   imports: [\n *     KeqModule,\n *     OpenBaoModule.register({\n *       address: 'http://localhost:8200',\n *       auth: { method: 'token', token: 's.xxxxx' },\n *     }),\n *   ],\n * })\n * export class AppModule {}\n * ```\n *\n * @example\n * ```ts\n * // Token 认证\n * OpenBaoModule.register({\n *   address: 'http://localhost:8200',\n *   auth: { method: 'token', token: 's.xxxxx' },\n * })\n *\n * // Userpass 认证\n * OpenBaoModule.register({\n *   address: 'http://localhost:8200',\n *   auth: { method: 'userpass', username: 'admin', password: 'secret' },\n * })\n *\n * // AppRole 认证\n * OpenBaoModule.register({\n *   address: 'http://localhost:8200',\n *   auth: { method: 'approle', roleId: 'xxx', secretId: 'yyy' },\n * })\n *\n * // Kubernetes 认证\n * OpenBaoModule.register({\n *   address: 'http://localhost:8200',\n *   auth: { method: 'kubernetes', role: 'my-role' },\n * })\n * ```\n */\n@Global()\n@Module({\n  imports: [\n    KeqModule,\n    OpenBaoHttpModule.register({ isGlobal: true }),\n  ],\n  providers: [OpenBaoTokenManager],\n  exports: [OpenBaoTokenManager, OpenBaoHttpModule],\n})\nexport class OpenBaoModule\n  extends ConfigurableModuleClass {\n  constructor(\n    @Inject(MODULE_OPTIONS_TOKEN) private readonly options: OpenBaoModuleOptions,\n    private readonly tokenManager: OpenBaoTokenManager,\n    @InjectKeqConsumer(OpenBaoHttpModule) consumer: KeqConsumer<typeof OpenBaoHttpModule>,\n  ) {\n    super()\n\n    consumer\n      .apply(\n        clarifyOpenbaoError(),\n        setBaseUrl(this.options.address + '/v1/'),\n        setOpenBaoToken(() => this.tokenManager.getToken()),\n        validateStatusCode(),\n        clarifyFetchFailed(),\n      )\n      .forRoutes(KEQ_ROUTES.ALL)\n  }\n}\n","import { IsIn, IsNumber, IsObject, IsOptional, IsString, IsUrl, Min, ValidateNested } from 'class-validator'\nimport { Type } from 'class-transformer'\nimport type { OpenBaoModuleOptions } from './types/open-bao-module-options'\nimport type {\n  OpenBaoAuthMethod,\n  OpenBaoTokenAuth,\n  OpenBaoUserpassAuth,\n  OpenBaoAppRoleAuth,\n  OpenBaoKubernetesAuth,\n} from './types/open-bao-auth.types'\n\n\nexport class OpenBaoTokenAuthConfig implements OpenBaoTokenAuth {\n  @IsIn(['token'])\n  method = <const>'token'\n\n  @IsString()\n  token!: string\n}\n\nexport class OpenBaoUserpassAuthConfig implements OpenBaoUserpassAuth {\n  @IsIn(['userpass'])\n  method = <const>'userpass'\n\n  @IsString()\n  username!: string\n\n  @IsString()\n  password!: string\n\n  @IsString()\n  @IsOptional()\n  mount?: string\n}\n\nexport class OpenBaoAppRoleAuthConfig implements OpenBaoAppRoleAuth {\n  @IsIn(['approle'])\n  method = <const>'approle'\n\n  @IsString()\n  roleId!: string\n\n  @IsString()\n  secretId!: string\n\n  @IsString()\n  @IsOptional()\n  mount?: string\n}\n\nexport class OpenBaoKubernetesAuthConfig implements OpenBaoKubernetesAuth {\n  @IsIn(['kubernetes'])\n  method = <const>'kubernetes'\n\n  @IsString()\n  role!: string\n\n  @IsString()\n  @IsOptional()\n  jwt?: string\n\n  @IsString()\n  @IsOptional()\n  tokenPath?: string\n\n  @IsString()\n  @IsOptional()\n  mount?: string\n}\n\n\nexport class OpenBaoModuleConfig implements OpenBaoModuleOptions {\n  /**\n   * OpenBao 服务器地址\n   */\n  @IsUrl({ require_tld: false })\n  address: string = 'http://localhost:8200'\n\n  /**\n   * 身份认证配置\n   */\n  @IsObject()\n  // TODO:\n  // @ValidateNested()\n  // @Type(() => Object, {\n  //   keepDiscriminatorProperty: true,\n  //   discriminator: {\n  //     property: 'method',\n  //     subTypes: [\n  //       { value: OpenBaoTokenAuthConfig, name: 'token' },\n  //       { value: OpenBaoUserpassAuthConfig, name: 'userpass' },\n  //       { value: OpenBaoAppRoleAuthConfig, name: 'approle' },\n  //       { value: OpenBaoKubernetesAuthConfig, name: 'kubernetes' },\n  //     ],\n  //   },\n  // })\n  auth!: OpenBaoAuthMethod\n\n  /**\n   * Transit 引擎挂载路径\n   */\n  @IsString()\n  @IsOptional()\n  transitMount?: string = 'transit'\n\n  /**\n   * Token 续期提前量（秒）\n   */\n  @IsNumber()\n  @Min(0)\n  @IsOptional()\n  renewBufferSeconds?: number = 30\n}\n","/**\n * 稳定的 JSON 序列化，确保键按字母顺序排列，忽略 null 和 undefined\n */\nexport function stableStringify(value: unknown): string {\n  if (value === null || value === undefined) {\n    return ''\n  }\n\n  if (typeof value === 'string') {\n    return JSON.stringify(value)\n  }\n\n  if (typeof value === 'number' || typeof value === 'boolean') {\n    return String(value)\n  }\n\n  if (Array.isArray(value)) {\n    const items = value\n      .filter((item) => item !== null && item !== undefined)\n      .map((item) => stableStringify(item))\n    return `[${items.join(',')}]`\n  }\n\n  if (typeof value === 'object') {\n    const sortedKeys = Object.keys(value).sort()\n    const pairs: string[] = []\n\n    for (const key of sortedKeys) {\n      const val = (value as Record<string, unknown>)[key]\n      if (val !== null && val !== undefined) {\n        const serializedValue = stableStringify(val)\n        if (serializedValue !== '') {\n          pairs.push(`${JSON.stringify(key)}:${serializedValue}`)\n        }\n      }\n    }\n\n    return `{${pairs.join(',')}}`\n  }\n\n  return ''\n}\n","import { Injectable } from '@nestjs/common'\nimport { createHash } from 'crypto'\nimport { BlindIndex } from './entities/blind-index.embeddable'\nimport { BlindIndexHasher } from './types/blind-index-hasher'\nimport { JsonValue } from 'type-fest'\nimport { stableStringify } from '~/utils/stable-stringify'\n\n\n/**\n * 盲索引 V1 实现\n *\n * 使用 SHA-256 对 JSON 稳定序列化后的字符串计算哈希\n */\n@Injectable()\nexport class BlindIndexV1Hasher implements BlindIndexHasher {\n  version = <const>1\n\n  async generate(data: JsonValue): Promise<BlindIndex> {\n    if (data === null || data === undefined) {\n      throw new TypeError('Cannot hash null or undefined data')\n    }\n\n    const jsonString = stableStringify(data)\n    const value = createHash('sha256').update(jsonString, 'utf8')\n      .digest('hex')\n\n    return {\n      value,\n      version: 1,\n    }\n  }\n}\n","import { Injectable, Logger } from '@nestjs/common'\nimport { BlindIndex } from './entities/blind-index.embeddable'\nimport { BlindIndexHasher } from './types/blind-index-hasher'\nimport { BlindIndexV1Hasher } from './blind-index-v1.hasher'\nimport { JsonValue } from 'type-fest'\n\n\n@Injectable()\nexport class BlindIndexService {\n  private readonly logger = new Logger(BlindIndexService.name)\n\n  private readonly hashers = new Map<number, BlindIndexHasher>()\n  private readonly defaultHasher: BlindIndexHasher\n\n  constructor(\n    private readonly hasherV1: BlindIndexV1Hasher,\n  ) {\n    this.hashers.set(this.hasherV1.version, this.hasherV1)\n    this.defaultHasher = this.hasherV1\n  }\n\n  /**\n   * 对数据生成盲索引\n   *\n   * @param data - 待哈希的 JSON 数据\n   * @returns 包含 value 和 version 的 {@link BlindIndex} 对象\n   */\n  async generate(data: JsonValue): Promise<BlindIndex> {\n    return this.defaultHasher.generate(data)\n  }\n}\n","import { Global, Module } from '@nestjs/common'\nimport { BlindIndexService } from './blind-index.service'\nimport { BlindIndexV1Hasher } from './blind-index-v1.hasher'\n\n\n/**\n * BlindIndexModule 提供盲索引(Blind Index)能力，用于对敏感数据生成不可逆的哈希值，\n * 以便在加密存储场景下仍可进行等值查询，而无需暴露原始明文。\n *\n * 该模块为全局模块，导入一次后即可在任意位置注入 `BlindIndexService`。\n * 内部通过版本化的 Hasher Provider 实现算法调度，`generate()` 始终使用最新版本算法。\n *\n * @example\n * // 1. 在 AppModule 中导入\n * import { BlindIndexModule } from '@buka/nestjs-kit'\n *\n * @Module({\n *   imports: [BlindIndexModule],\n * })\n * export class AppModule {}\n *\n * @example\n * // 2. 在 Service 中注入使用\n * import { BlindIndexService, BlindIndex } from '@buka/nestjs-kit'\n *\n * @Injectable()\n * export class UserService {\n *   constructor(private readonly blindIndexService: BlindIndexService) {}\n *\n *   async createUser(email: string) {\n *     // 生成盲索引，可存入数据库用于后续查询\n *     const blindIndex: BlindIndex = await this.blindIndexService.generate(email)\n *     // blindIndex.value   -> 哈希值\n *     // blindIndex.version -> 哈希算法版本号\n *   }\n * }\n *\n * @example\n * // 3. 在 MikroORM Entity 中使用 BlindIndex 嵌入类型\n * import { Entity, Embedded } from '@mikro-orm/core'\n * import { BlindIndex } from '@buka/nestjs-kit'\n *\n * @Entity()\n * export class User {\n *   @Embedded(() => BlindIndex)\n *   emailIndex!: BlindIndex\n * }\n */\n@Global()\n@Module({\n  providers: [\n    BlindIndexService,\n    BlindIndexV1Hasher,\n  ],\n  exports: [BlindIndexService],\n})\nexport class BlindIndexModule {}\n","import { Embeddable, Property } from '@mikro-orm/decorators/legacy'\nimport { ApiHideProperty } from '@nestjs/swagger'\n\n\n@Embeddable()\nexport class BlindIndex {\n  @Property({\n    type: 'char',\n    length: 64,\n    comment: '哈希值',\n    hidden: true,\n  })\n  @ApiHideProperty()\n  value!: string\n\n  @Property({\n    type: 'smallint',\n    comment: '哈希算法版本号',\n    hidden: true,\n  })\n  @ApiHideProperty()\n  version!: number\n}\n","import { Injectable } from '@nestjs/common'\nimport bcrypt from 'bcryptjs'\nimport { SaltedHash } from './entities/salted-hash.embeddable'\nimport { SaltedHashHasher } from './types/salted-hash-hasher'\n\n\nconst BCRYPT_ROUNDS = 10\n\n\n/**\n * 加盐哈希 V1 实现\n *\n * 使用 bcrypt 算法，cost factor 为 10\n */\n@Injectable()\nexport class SaltedHashV1Hasher implements SaltedHashHasher {\n  version = <const>1\n\n  async hash(plain: string): Promise<SaltedHash> {\n    const hash = await bcrypt.hash(plain, BCRYPT_ROUNDS)\n\n    return {\n      hash,\n      version: 1,\n    }\n  }\n\n  async verify(plain: string, saltedHash: SaltedHash): Promise<boolean> {\n    return bcrypt.compare(plain, saltedHash.hash)\n  }\n}\n","import { Injectable, Logger } from '@nestjs/common'\nimport { SaltedHash } from './entities/salted-hash.embeddable'\nimport { SaltedHashHasher } from './types/salted-hash-hasher'\nimport { SaltedHashV1Hasher } from './salted-hash-v1.hasher'\n\n\n@Injectable()\nexport class SaltedHashService {\n  private readonly logger = new Logger(SaltedHashService.name)\n\n  private readonly hashers = new Map<number, SaltedHashHasher>()\n  private readonly defaultHasher: SaltedHashHasher\n\n  constructor(\n    private readonly hasherV1: SaltedHashV1Hasher,\n  ) {\n    this.hashers.set(this.hasherV1.version, this.hasherV1)\n    this.defaultHasher = this.hasherV1\n  }\n\n  /**\n   * 对明文数据生成加盐哈希\n   *\n   * @param plain - 待哈希的明文字符串（如密码）\n   * @returns 包含 hash、version 的 {@link SaltedHash} 对象\n   */\n  async hash(plain: string): Promise<SaltedHash> {\n    return this.defaultHasher.hash(plain)\n  }\n\n  /**\n   * 验证明文是否与已有的加盐哈希匹配\n   *\n   * 会根据 `saltedHash.version` 自动选择对应版本的哈希算法进行验证，\n   * 因此即使默认版本已升级，历史数据仍可正确验证。\n   *\n   * @param plain - 待验证的明文字符串\n   * @param saltedHash - 之前生成的 {@link SaltedHash} 对象\n   * @returns 匹配返回 `true`，否则返回 `false`\n   */\n  async verify(plain: string, saltedHash: SaltedHash): Promise<boolean> {\n    const hasher = this.hashers.get(saltedHash.version)\n\n    if (!hasher) {\n      throw new TypeError(`Unsupported salted hash version: ${saltedHash.version}`)\n    }\n\n    return hasher.verify(plain, saltedHash)\n  }\n}\n","import { Global, Module } from '@nestjs/common'\nimport { SaltedHashService } from './salted-hash.service'\nimport { SaltedHashV1Hasher } from './salted-hash-v1.hasher'\n\n\n/**\n * SaltedHashModule 提供加盐哈希能力，适用于密码存储等需要不可逆且抗彩虹表攻击的场景。\n *\n * 该模块为全局模块，导入一次后即可在任意位置注入 `SaltedHashService`。\n * 内部通过版本化的 Hasher Provider 实现算法调度，`hash()` 始终使用最新版本算法，\n * `verify()` 根据 `saltedHash.version` 自动选择对应版本算法，确保历史数据可正确验证。\n *\n * @example\n * // 1. 在 AppModule 中导入\n * import { SaltedHashModule } from '@buka/nestjs-kit'\n *\n * @Module({\n *   imports: [SaltedHashModule],\n * })\n * export class AppModule {}\n *\n * @example\n * // 2. 注册用户时生成密码哈希\n * import { SaltedHashService, SaltedHash } from '@buka/nestjs-kit'\n *\n * @Injectable()\n * export class UserService {\n *   constructor(private readonly saltedHashService: SaltedHashService) {}\n *\n *   async register(password: string) {\n *     const saltedHash: SaltedHash = await this.saltedHashService.hash(password)\n *     // saltedHash.hash    -> 哈希字符串\n *     // saltedHash.version -> 哈希算法版本号\n *     // 将 saltedHash 存入数据库\n *   }\n *\n *   async login(password: string, savedHash: SaltedHash) {\n *     const isValid = await this.saltedHashService.verify(password, savedHash)\n *     if (!isValid) throw new UnauthorizedException()\n *   }\n * }\n *\n * @example\n * // 3. 在 MikroORM Entity 中使用 SaltedHash 嵌入类型\n * import { Entity, Embedded } from '@mikro-orm/core'\n * import { SaltedHash } from '@buka/nestjs-kit'\n *\n * @Entity()\n * export class User {\n *   @Embedded(() => SaltedHash)\n *   password!: SaltedHash\n * }\n */\n@Global()\n@Module({\n  providers: [\n    SaltedHashService,\n    SaltedHashV1Hasher,\n  ],\n  exports: [SaltedHashService],\n})\nexport class SaltedHashModule {}\n","import { Embeddable, Property } from '@mikro-orm/decorators/legacy'\nimport { Hidden } from '@mikro-orm/core'\nimport { ApiHideProperty } from '@nestjs/swagger'\n\n\n/**\n * SaltedHash 嵌入实体，用于在 MikroORM Entity 中存储加盐哈希结果。\n *\n * - `hash`: 哈希字符串\n * - `version`: 哈希算法版本号，便于后续升级算法时做兼容处理\n */\n@Embeddable()\nexport class SaltedHash {\n  @Property({\n    type: 'varchar',\n    length: 255,\n    comment: '哈希值',\n    hidden: true,\n  })\n  @ApiHideProperty()\n  hash!: string & Hidden\n\n  @Property({\n    type: 'smallint',\n    comment: '哈希算法版本号',\n    hidden: true,\n  })\n  @ApiHideProperty()\n  version!: number & Hidden\n}\n","import type { ErrorCategory } from '@buka/error-codes'\n\ninterface ExceptionMeta {\n  category: ErrorCategory\n  moduleId: number\n  sequenceId: number\n}\n\n/**\n * 错误码注册中心\n *\n * 负责:\n * 1. 管理 systemId (全局唯一，由业务系统配置一次)\n * 2. 校验 moduleId 唯一性 (每个 moduleId 只能被一个模块使用)\n * 3. 校验错误码唯一性 (category + moduleId + sequenceId)\n */\nexport class ErrorCodeRegistry {\n  private static instance: ErrorCodeRegistry\n  private systemId: number | null = null\n  private readonly codeKeys = new Map<string, string>()\n  private readonly descriptions = new Map<string, string>()\n  private readonly moduleIds = new Map<number, string>()\n\n  private constructor() {}\n\n  static getInstance(): ErrorCodeRegistry {\n    if (!ErrorCodeRegistry.instance) {\n      ErrorCodeRegistry.instance = new ErrorCodeRegistry()\n    }\n    return ErrorCodeRegistry.instance\n  }\n\n  /**\n   * 配置系统ID\n   * @param systemId 系统ID (0 - 1048575)\n   */\n  setSystemId(systemId: number): void {\n    if (this.systemId !== null && this.systemId !== systemId) {\n      throw new Error(\n        `System ID already set to ${this.systemId}, cannot change to ${systemId}`,\n      )\n    }\n    if (systemId < 0 || systemId >= 2 ** 20) {\n      throw new Error(`System ID must be between 0 and ${2 ** 20 - 1}, got ${systemId}`)\n    }\n    this.systemId = systemId\n  }\n\n  /**\n   * 获取系统ID\n   */\n  getSystemId(): number {\n    if (this.systemId === null) {\n      throw new Error(\n        'System ID not configured. Call ExceptionModule.register({ systemId }) first.',\n      )\n    }\n    return this.systemId\n  }\n\n  /**\n   * 检查系统ID是否已配置\n   */\n  hasSystemId(): boolean {\n    return this.systemId !== null\n  }\n\n  /**\n   * 注册模块ID\n   * @param moduleId 模块ID\n   * @param moduleName 模块名称 (用于错误提示)\n   */\n  registerModule(moduleId: number, moduleName: string): void {\n    const existing = this.moduleIds.get(moduleId)\n    if (existing && existing !== moduleName) {\n      throw new Error(\n        `Duplicate module ID [${moduleId}]:\\n`\n        + `  Existing: ${existing}\\n`\n        + `  New: ${moduleName}\\n`\n        + 'Each module must have a unique moduleId.',\n      )\n    }\n    this.moduleIds.set(moduleId, moduleName)\n  }\n\n  /**\n   * 获取模块名称\n   * @param moduleId 模块ID\n   */\n  getModuleName(moduleId: number): string | undefined {\n    return this.moduleIds.get(moduleId)\n  }\n\n  /**\n   * 获取所有已注册的模块\n   */\n  getAllRegisteredModules(): Map<number, string> {\n    return new Map(this.moduleIds)\n  }\n\n  /**\n   * 注册错误码\n   * @param meta 错误码元信息\n   * @param className 异常类名 (用于错误提示)\n   * @param description 错误描述 (用于错误码查询接口)\n   */\n  register(meta: ExceptionMeta, className: string, description?: string): void {\n    // 校验 moduleId 是否已注册\n    const moduleName = this.moduleIds.get(meta.moduleId)\n    if (!moduleName) {\n      throw new Error(\n        `Module ID [${meta.moduleId}] not registered.\\n`\n        + `Please call ErrorCodeRegistry.getInstance().registerModule(${meta.moduleId}, 'YourModuleName') first.\\n`\n        + 'Or use createExceptionModule() to create module-scoped exception factories.',\n      )\n    }\n\n    const key = `${meta.category}-${meta.moduleId}-${meta.sequenceId}`\n\n    const existing = this.codeKeys.get(key)\n    if (existing) {\n      throw new Error(\n        `Duplicate error code [${key}]:\\n`\n        + `  Existing: ${existing}\\n`\n        + `  New: ${className}\\n`\n        + 'Each error code (category + moduleId + sequenceId) must be unique.',\n      )\n    }\n\n    this.codeKeys.set(key, className)\n    if (description !== undefined) {\n      this.descriptions.set(key, description)\n    }\n  }\n\n  /**\n   * 获取错误码描述\n   * @param key 错误码 key (category-moduleId-sequenceId)\n   */\n  getDescription(key: string): string | undefined {\n    return this.descriptions.get(key)\n  }\n\n  /**\n   * 获取所有已注册的错误码\n   */\n  getAllRegisteredCodes(): Map<string, string> {\n    return new Map(this.codeKeys)\n  }\n\n  /**\n   * 清空注册 (仅用于测试)\n   */\n  clear(): void {\n    this.systemId = null\n    this.codeKeys.clear()\n    this.descriptions.clear()\n    this.moduleIds.clear()\n  }\n}\n","import { ErrorCategory } from '@buka/error-codes'\nimport { Enum, Model, Property } from '~/modules/core/decorators/model'\n\n\n@Model()\nexport class ErrorCodePartsDto {\n  @Enum({\n    type: () => ErrorCategory,\n    enumName: 'ErrorCategory',\n    schema: { description: '错误分类' },\n  })\n  category!: ErrorCategory\n\n  @Property({\n    schema: {\n      type: 'number',\n      description: '系统 ID',\n    },\n  })\n  system!: number\n\n  @Property({\n    schema: {\n      type: 'number',\n      description: '模块 ID',\n    },\n  })\n  module!: number\n\n  @Property({\n    schema: {\n      type: 'number',\n      description: '序列号',\n    },\n  })\n  sequence!: number\n}\n","import { IsOptional, IsString } from 'class-validator'\nimport { Model, Property } from '~/modules/core/decorators/model'\n\n\n@Model()\nexport class ErrorCodeMetadataDto {\n  @IsString()\n  @Property({\n    schema: {\n      type: 'string',\n      description: '模块名称',\n    },\n  })\n  moduleName!: string\n\n  @IsString()\n  @Property({\n    schema: {\n      type: 'string',\n      description: '错误短语',\n    },\n  })\n  phrase!: string\n\n  @IsOptional()\n  @IsString()\n  @Property({\n    schema: {\n      type: 'string',\n      description: '错误描述，包含详细信息和解决方案',\n    },\n  })\n  description?: string\n}\n","import { Composite, Model, Property } from '~/modules/core/decorators/model'\nimport { ErrorCodePartsDto } from './error-code-parts.dto'\nimport { ErrorCodeMetadataDto } from './error-code-metadata.dto'\nimport { IsString } from 'class-validator'\n\n\n@Model()\nexport class ErrorCodeDefinitionDto {\n  @IsString()\n  @Property({\n    schema: {\n      type: 'string',\n      description: '错误码（Base32 编码）',\n    },\n  })\n  code!: string\n\n  @IsString()\n  @Property({\n    schema: {\n      type: 'string',\n      description: '错误码原始值',\n    },\n  })\n  raw!: string\n\n  @Composite({\n    type: () => ErrorCodePartsDto,\n    schema: {\n      description: '错误码组成部分',\n    },\n  })\n  parts!: ErrorCodePartsDto\n\n  @Composite({\n    type: () => ErrorCodeMetadataDto,\n    schema: {\n      description: '错误码元数据',\n    },\n  })\n  metadata!: ErrorCodeMetadataDto\n}\n","import { ListResponseBodyType } from '~/modules/core/converters/list-response-body-type/list-response-body-type'\nimport { ErrorCodeDefinitionDto } from './error-code-definition.dto'\n\n\nexport class ListErrorCodesResponseDto extends ListResponseBodyType(ErrorCodeDefinitionDto) {}\n","import { Controller, Get, Version, VERSION_NEUTRAL } from '@nestjs/common'\nimport { ApiOkResponse, ApiOperation, ApiTags } from '@nestjs/swagger'\nimport { ErrorCode, ErrorCategory } from '@buka/error-codes'\nimport { Slice } from '~/modules/core/models'\nimport { ErrorCodeRegistry } from './error-code.registry.js'\nimport { ErrorCodeDefinitionDto } from './dto/error-code-definition.dto.js'\nimport { ListErrorCodesResponseDto } from './dto/list-error-codes-response.dto'\n\n\n@ApiTags('ErrorCodes')\n@Controller('error-codes')\nexport class ErrorCodeController {\n  @Get()\n  @ApiOperation({ summary: '获取所有已注册的错误码列表' })\n  @ApiOkResponse({ type: ListErrorCodesResponseDto })\n  @Version(VERSION_NEUTRAL)\n  list(): ListErrorCodesResponseDto {\n    const registry = ErrorCodeRegistry.getInstance()\n    const systemId = registry.getSystemId()\n    const codes = registry.getAllRegisteredCodes()\n\n    const errors = Array.from(codes.entries()).map(([key, className]) => {\n      const [categoryStr, moduleIdStr, sequenceIdStr] = key.split('-')\n      const category = Number(categoryStr) as ErrorCategory\n      const moduleId = Number(moduleIdStr)\n      const sequenceId = Number(sequenceIdStr)\n\n      const errorCode = new ErrorCode({ category, systemId, moduleId, sequenceId })\n\n      const [moduleName, phrase] = className.split('.')\n\n      const item = new ErrorCodeDefinitionDto()\n      item.code = errorCode.toString()\n      item.raw = errorCode.toBigInt().toString()\n      item.parts = {\n        category,\n        system: systemId,\n        module: moduleId,\n        sequence: sequenceId,\n      }\n      const description = registry.getDescription(key)\n      item.metadata = {\n        moduleName: moduleName ?? className,\n        phrase: phrase ?? '',\n        description,\n      }\n\n      return item\n    })\n\n    const slice = Slice.fromOffset(errors, errors.length, { limit: errors.length, offset: 0 })\n    return ListErrorCodesResponseDto.fromSlice(slice)\n  }\n}\n","import { HttpStatus } from '@nestjs/common'\nimport { Exception, type ExceptionOptions } from '@buka/exception'\n\nexport interface HttpExceptionOptions extends ExceptionOptions {\n  /** HTTP 状态码 */\n  httpStatus: HttpStatus\n}\n\n/**\n * NestJS 业务异常基类\n *\n * 继承自 @buka/exception 的 Exception，添加了 HTTP 状态码支持\n *\n * @example\n * ```typescript\n * class UserNotFoundException extends BukaException {\n *   constructor(userId: string) {\n *     super({\n *       message: `User ${userId} not found`,\n *       category: ErrorCategory.BUSINESS,\n *       moduleId: 10,\n *       sequenceId: 1,\n *       httpStatus: HttpStatus.NOT_FOUND,\n *     })\n *   }\n * }\n * ```\n */\nexport class HttpException extends Exception {\n  /** HTTP 状态码 */\n  readonly httpStatus: HttpStatus\n\n  constructor(options: HttpExceptionOptions) {\n    super(options)\n    this.httpStatus = options.httpStatus\n  }\n}\n","import { HttpStatus } from '@nestjs/common'\nimport { type ExceptionDetail } from '@buka/exception'\nimport { ErrorCategory } from '@buka/error-codes'\nimport { HttpException } from './http-exception.js'\nimport { ErrorCodeRegistry } from './error-code.registry.js'\n\n/**\n * 异常选项 - 使用固定消息\n */\nexport interface ExceptionOptionsWithMessage {\n  /** 序列号 (0-32767) */\n  sequenceId: number\n  /** 默认错误消息 */\n  message: string\n  /** HTTP状态码 (可选，使用默认值) */\n  httpStatus?: HttpStatus\n  /** 错误描述，用于错误码查询接口展示详细信息和解决方案 */\n  description?: string\n}\n\n/**\n * 异常选项 - 使用消息工厂函数\n *\n * @example\n * ```typescript\n * static readonly NotFound = BusinessException({\n *   sequenceId: 1,\n *   messageFactory: (userId: string) => `User ${userId} not found`,\n * })\n *\n * throw new UserExceptions.NotFound('123')\n * ```\n */\nexport interface ExceptionOptionsWithFactory<TArgs extends unknown[]> {\n  /** 序列号 (0-32767) */\n  sequenceId: number\n  /** 消息工厂函数，用于生成错误消息 */\n  messageFactory: (...args: TArgs) => string\n  /** HTTP状态码 (可选，使用默认值) */\n  httpStatus?: HttpStatus\n  /** 错误描述，用于错误码查询接口展示详细信息和解决方案 */\n  description?: string\n}\n\nexport type ExceptionOptions<TArgs extends unknown[] = []>\n  = | ExceptionOptionsWithMessage\n    | ExceptionOptionsWithFactory<TArgs>\n\n/**\n * 基础异常构造器类型 - 使用固定消息\n */\nexport type ExceptionConstructor = new (\n  message?: string,\n  details?: ExceptionDetail | ExceptionDetail[]\n) => HttpException\n\n/**\n * 自定义参数异常构造器类型 - 使用消息工厂\n */\nexport type ExceptionConstructorWithArgs<TArgs extends unknown[]> = new (\n  ...args: [...TArgs, details?: ExceptionDetail | ExceptionDetail[]]\n) => HttpException\n\n/**\n * 待绑定的异常类\n *\n * 如果用户忘记添加 @ModuleExceptions 装饰器直接使用，会抛出友好的错误提示\n */\nexport class PendingException extends HttpException {\n  /** 标记为待绑定 */\n  static readonly __pending = true\n\n  /** 异常类别 */\n  static category: ErrorCategory\n  /** 序列号 */\n  static sequenceId: number\n  /** 默认消息 (固定消息模式) */\n  static defaultMessage?: string\n  /** 消息工厂函数 (工厂模式) */\n  static messageFactory?: (...args: unknown[]) => string\n  /** HTTP状态码 */\n  static defaultHttpStatus: HttpStatus\n  /** 错误描述 */\n  static defaultDescription?: string\n\n  constructor() {\n    const ctor = new.target\n    const messageExample = ctor.messageFactory\n      ? 'messageFactory: (id: string) => `Resource ${id} not found`,'\n      : `message: '${ctor.defaultMessage ?? 'Error message'}',`\n\n    const errorMessage = 'Cannot instantiate PendingException directly.\\n'\n      + 'You must use @ModuleExceptions decorator on the class containing this exception.\\n'\n      + '\\n'\n      + 'Example:\\n'\n      + '  @ModuleExceptions({ moduleId: 1 })\\n'\n      + '  export class YourExceptions {\\n'\n      + `    static readonly YourError = ${getCategoryFactoryName(ctor.category)}({\\n`\n      + `      sequenceId: ${ctor.sequenceId},\\n`\n      + `      ${messageExample}\\n`\n      + '    })\\n'\n      + '  }'\n\n    // 调用 super 但立即抛出错误\n    super({\n      message: errorMessage,\n      category: ErrorCategory.SYSTEM,\n      moduleId: 0,\n      sequenceId: 0,\n      httpStatus: HttpStatus.INTERNAL_SERVER_ERROR,\n    })\n\n    throw new Error(errorMessage)\n  }\n}\n\nfunction getCategoryFactoryName(category: ErrorCategory): string {\n  const map: Record<ErrorCategory, string> = {\n    [ErrorCategory.SYSTEM]: 'SystemException',\n    [ErrorCategory.BUSINESS]: 'BusinessException',\n    [ErrorCategory.VALIDATION]: 'ValidationException',\n    [ErrorCategory.THIRD_PARTY]: 'ThirdPartyException',\n    [ErrorCategory.AUTH]: 'AuthException',\n    [ErrorCategory.RATE_LIMIT]: 'RateLimitException',\n    [ErrorCategory.DEGRADE]: 'DegradeException',\n    [ErrorCategory.CONFLICT]: 'ConflictException',\n    [ErrorCategory.FEATURE]: 'FeatureException',\n  }\n  return map[category] || 'Exception'\n}\n\nconst CATEGORY_HTTP_STATUS_MAP: Record<ErrorCategory, HttpStatus> = {\n  [ErrorCategory.SYSTEM]: HttpStatus.INTERNAL_SERVER_ERROR,\n  [ErrorCategory.BUSINESS]: HttpStatus.BAD_REQUEST,\n  [ErrorCategory.VALIDATION]: HttpStatus.BAD_REQUEST,\n  [ErrorCategory.THIRD_PARTY]: HttpStatus.BAD_GATEWAY,\n  [ErrorCategory.AUTH]: HttpStatus.UNAUTHORIZED,\n  [ErrorCategory.RATE_LIMIT]: HttpStatus.TOO_MANY_REQUESTS,\n  [ErrorCategory.DEGRADE]: HttpStatus.SERVICE_UNAVAILABLE,\n  [ErrorCategory.CONFLICT]: HttpStatus.CONFLICT,\n  [ErrorCategory.FEATURE]: HttpStatus.FORBIDDEN,\n}\n\n/**\n * 检查是否为待绑定的异常类\n */\nexport function isPendingException(value: unknown): value is typeof PendingException {\n  return (\n    typeof value === 'function'\n    && '__pending' in value\n    && (value as typeof PendingException).__pending === true\n  )\n}\n\n/**\n * 创建真正的异常类\n */\nexport function createExceptionClass(\n  moduleId: number,\n  moduleName: string,\n  propertyName: string,\n  pendingClass: typeof PendingException,\n): ExceptionConstructor {\n  const { category, sequenceId, defaultMessage, messageFactory, defaultHttpStatus, defaultDescription } = pendingClass\n\n  // 根据是否有 messageFactory 创建不同的异常类\n  if (messageFactory) {\n    const factory = messageFactory\n    // 使用消息工厂模式\n    class GeneratedException extends HttpException {\n      constructor(...args: unknown[]) {\n        // 最后一个参数可能是 details\n        let details: ExceptionDetail | ExceptionDetail[] | undefined\n        let factoryArgs = args\n\n        if (args.length > 0) {\n          const lastArg = args[args.length - 1]\n          if (typeof lastArg === 'object' && lastArg !== null && !Array.isArray(lastArg)) {\n            // 检查是否是 ExceptionDetail\n            if ('field' in lastArg || 'reason' in lastArg || 'code' in lastArg) {\n              details = lastArg as unknown as ExceptionDetail\n              factoryArgs = args.slice(0, -1)\n            }\n          } else if (Array.isArray(lastArg) && lastArg.length > 0 && typeof lastArg[0] === 'object') {\n            details = lastArg as ExceptionDetail[]\n            factoryArgs = args.slice(0, -1)\n          }\n        }\n\n        const message = factory(...factoryArgs)\n        super({\n          message,\n          category,\n          moduleId,\n          sequenceId,\n          httpStatus: defaultHttpStatus,\n          details,\n        })\n      }\n    }\n\n    Object.defineProperty(GeneratedException, 'name', {\n      value: `${moduleName}.${propertyName}`,\n      writable: false,\n    })\n\n    const registry = ErrorCodeRegistry.getInstance()\n    registry.register(\n      { category, moduleId, sequenceId },\n      `${moduleName}.${propertyName}`,\n      defaultDescription,\n    )\n\n    return GeneratedException as unknown as ExceptionConstructor\n  }\n\n  // 使用固定消息模式\n  class GeneratedException extends HttpException {\n    constructor(message?: string, details?: ExceptionDetail | ExceptionDetail[]) {\n      super({\n        message: message ?? defaultMessage ?? 'Unknown error',\n        category,\n        moduleId,\n        sequenceId,\n        httpStatus: defaultHttpStatus,\n        details,\n      })\n    }\n  }\n\n  // 设置类名便于调试\n  Object.defineProperty(GeneratedException, 'name', {\n    value: `${moduleName}.${propertyName}`,\n    writable: false,\n  })\n\n  // 注册并校验唯一性\n  const registry = ErrorCodeRegistry.getInstance()\n  registry.register(\n    { category, moduleId, sequenceId },\n    `${moduleName}.${propertyName}`,\n    defaultDescription,\n  )\n\n  return GeneratedException as ExceptionConstructor\n}\n\n/**\n * 检查选项是否使用消息工厂\n */\nfunction hasMessageFactory<TArgs extends unknown[]>(\n  options: ExceptionOptions<TArgs>,\n): options is ExceptionOptionsWithFactory<TArgs> {\n  return 'messageFactory' in options\n}\n\n/**\n * 创建异常工厂\n *\n * 支持两种模式:\n * 1. 固定消息模式: 使用 `message` 选项\n * 2. 工厂模式: 使用 `messageFactory` 选项，支持自定义构造参数\n */\nfunction createPendingExceptionFactory(\n  category: ErrorCategory,\n  defaultHttpStatus: HttpStatus,\n): {\n  <TArgs extends unknown[]>(options: ExceptionOptionsWithFactory<TArgs>): ExceptionConstructorWithArgs<TArgs>\n  (options: ExceptionOptionsWithMessage): ExceptionConstructor\n} {\n  return function <TArgs extends unknown[]>(options: ExceptionOptions<TArgs>): ExceptionConstructor {\n    const { sequenceId, httpStatus = defaultHttpStatus } = options\n\n    // 校验参数范围\n    if (sequenceId < 0 || sequenceId >= 2 ** 15) {\n      throw new Error(`Invalid sequence ID: ${sequenceId}, must be between 0 and ${2 ** 15 - 1}`)\n    }\n\n    if (hasMessageFactory(options)) {\n      // 工厂模式\n      const factoryOptions = options\n      class PendingExceptionImpl extends PendingException {\n        static override readonly __pending = true as const\n        static override readonly category = category\n        static override readonly sequenceId = sequenceId\n        static override readonly messageFactory = factoryOptions.messageFactory as (...args: unknown[]) => string\n        static override readonly defaultHttpStatus = httpStatus\n        static override readonly defaultDescription = factoryOptions.description\n      }\n      return PendingExceptionImpl as unknown as ExceptionConstructor\n    }\n\n    // 固定消息模式\n    const messageOptions = options\n    class PendingExceptionImpl extends PendingException {\n      static override readonly __pending = true as const\n      static override readonly category = category\n      static override readonly sequenceId = sequenceId\n      static override readonly defaultMessage = messageOptions.message\n      static override readonly defaultHttpStatus = httpStatus\n      static override readonly defaultDescription = messageOptions.description ?? messageOptions.message\n    }\n\n    return PendingExceptionImpl as unknown as ExceptionConstructor\n  }\n}\n\n/**\n * 系统异常\n *\n * 用于系统级错误，如数据库连接失败、内部服务错误等\n *\n * @example\n * ```typescript\n * @ModuleExceptions({ moduleId: 1 })\n * export class UserExceptions {\n *   static readonly DatabaseError = SystemException({\n *     sequenceId: 1,\n *     message: 'Database connection failed',\n *   })\n * }\n * ```\n */\nexport const SystemException = createPendingExceptionFactory(\n  ErrorCategory.SYSTEM,\n  CATEGORY_HTTP_STATUS_MAP[ErrorCategory.SYSTEM],\n)\n\n/**\n * 业务异常\n *\n * 用于业务逻辑错误，如资源不存在、余额不足等\n *\n * @example\n * ```typescript\n * @ModuleExceptions({ moduleId: 1 })\n * export class UserExceptions {\n *   // 固定消息模式\n *   static readonly NotFound = BusinessException({\n *     sequenceId: 1,\n *     message: 'User not found',\n *   })\n *\n *   // 工厂模式 - 自定义构造参数\n *   static readonly NotFoundById = BusinessException({\n *     sequenceId: 2,\n *     messageFactory: (userId: string) => `User ${userId} not found`,\n *   })\n * }\n *\n * // 使用默认消息\n * throw new UserExceptions.NotFound()\n *\n * // 覆盖默认消息\n * throw new UserExceptions.NotFound('Custom message')\n *\n * // 使用工厂模式\n * throw new UserExceptions.NotFoundById('123')\n * ```\n */\nexport const BusinessException = createPendingExceptionFactory(\n  ErrorCategory.BUSINESS,\n  CATEGORY_HTTP_STATUS_MAP[ErrorCategory.BUSINESS],\n)\n\n/**\n * 验证异常\n *\n * 用于参数校验错误\n */\nexport const ValidationException = createPendingExceptionFactory(\n  ErrorCategory.VALIDATION,\n  CATEGORY_HTTP_STATUS_MAP[ErrorCategory.VALIDATION],\n)\n\n/**\n * 第三方服务异常\n *\n * 用于第三方服务调用失败\n */\nexport const ThirdPartyException = createPendingExceptionFactory(\n  ErrorCategory.THIRD_PARTY,\n  CATEGORY_HTTP_STATUS_MAP[ErrorCategory.THIRD_PARTY],\n)\n\n/**\n * 认证异常\n *\n * 用于认证/授权相关错误\n */\nexport const AuthException = createPendingExceptionFactory(\n  ErrorCategory.AUTH,\n  CATEGORY_HTTP_STATUS_MAP[ErrorCategory.AUTH],\n)\n\n/**\n * 限流异常\n *\n * 用于请求被限流\n */\nexport const RateLimitException = createPendingExceptionFactory(\n  ErrorCategory.RATE_LIMIT,\n  CATEGORY_HTTP_STATUS_MAP[ErrorCategory.RATE_LIMIT],\n)\n\n/**\n * 降级异常\n *\n * 用于服务降级场景\n */\nexport const DegradeException = createPendingExceptionFactory(\n  ErrorCategory.DEGRADE,\n  CATEGORY_HTTP_STATUS_MAP[ErrorCategory.DEGRADE],\n)\n\n/**\n * 冲突异常\n *\n * 用于资源状态冲突\n */\nexport const ConflictException = createPendingExceptionFactory(\n  ErrorCategory.CONFLICT,\n  CATEGORY_HTTP_STATUS_MAP[ErrorCategory.CONFLICT],\n)\n\n/**\n * 功能不可用异常\n *\n * 用于功能未开放或权限不足\n */\nexport const FeatureException = createPendingExceptionFactory(\n  ErrorCategory.FEATURE,\n  CATEGORY_HTTP_STATUS_MAP[ErrorCategory.FEATURE],\n)\n","import { Base32 } from '@buka/error-codes'\nimport { ErrorCodeRegistry } from '../error-code.registry.js'\nimport {\n  isPendingException,\n  createExceptionClass,\n  type ExceptionConstructor,\n} from '../pending-exception.factory.js'\n\nexport interface ExceptionModuleOptions {\n  /**\n   * 模块ID (0 - 1048575)\n   * 每个模块唯一，用于区分不同业务模块的错误码\n   * 支持十进制数字或 Crockford Base32 字符串\n   */\n  moduleId: number | string\n}\n\n/**\n * 异常模块装饰器\n *\n * 用于定义一组异常类，自动绑定 moduleId 并注册到 ErrorCodeRegistry\n *\n * @example\n * ```typescript\n * import { ModuleExceptions, BusinessException, ValidationException } from '@buka/nestjs-kit'\n *\n * @ModuleExceptions({ moduleId: '1000' })\n * export class UserExceptions {\n *   static readonly NotFound = BusinessException({\n *     sequenceId: 1,\n *     message: 'User not found',\n *   })\n *   static readonly AlreadyExists = BusinessException({\n *     sequenceId: 2,\n *     message: 'User already exists',\n *   })\n *   static readonly InvalidEmail = ValidationException({\n *     sequenceId: 1,\n *     message: 'Invalid email format',\n *   })\n * }\n *\n * // 使用默认消息\n * throw new UserExceptions.NotFound()\n *\n * // 覆盖默认消息\n * throw new UserExceptions.NotFound('Custom message')\n * ```\n */\nexport function ModuleExceptions(\n  options: ExceptionModuleOptions,\n): ClassDecorator {\n  const moduleId = typeof options.moduleId === 'string'\n    ? Base32.decode(options.moduleId)\n    : options.moduleId\n\n  // 校验 moduleId 范围\n  if (moduleId < 0 || moduleId >= 2 ** 20) {\n    throw new Error(\n      `Invalid module ID: ${moduleId}, must be between 0 and ${2 ** 20 - 1}`,\n    )\n  }\n\n  return function <TFunction extends Function>(target: TFunction): TFunction {\n    const moduleName = target.name\n\n    // 注册模块ID\n    const registry = ErrorCodeRegistry.getInstance()\n    registry.registerModule(moduleId, moduleName)\n\n    // 遍历静态属性，将待绑定的配置转换为真正的异常类\n    const staticProps = Object.getOwnPropertyNames(target)\n    for (const propName of staticProps) {\n      // 跳过内置属性\n      if (['length', 'name', 'prototype'].includes(propName)) {\n        continue\n      }\n\n      const descriptor = Object.getOwnPropertyDescriptor(target, propName)\n      if (!descriptor || typeof descriptor.get === 'function') {\n        continue\n      }\n\n      const value = (target as Record<string, unknown>)[propName]\n\n      if (isPendingException(value)) {\n        // 创建真正的异常类并替换\n        const ExceptionClass = createExceptionClass(\n          moduleId,\n          moduleName,\n          propName,\n          value,\n        )\n\n        Object.defineProperty(target, propName, {\n          value: ExceptionClass,\n          writable: false,\n          enumerable: true,\n          configurable: false,\n        })\n      }\n    }\n\n    // 在类上存储 moduleId 元数据\n    Reflect.defineMetadata('exception:moduleId', moduleId, target)\n\n    return target\n  }\n}\n\n/**\n * 获取异常模块的 moduleId\n * @param target 目标类\n */\nexport function getExceptionModuleId(target: Function): number | undefined {\n  return Reflect.getMetadata('exception:moduleId', target) as number | undefined\n}\n\n/**\n * 类型辅助：将 PendingExceptionConfig 转换为 ExceptionConstructor\n *\n * 用于让 TypeScript 正确推断装饰后的类型\n */\nexport type ResolveExceptions<T> = {\n  [K in keyof T]: T[K] extends { __pending: true } ? ExceptionConstructor : T[K]\n}\n","import {\n  ExceptionFilter,\n  Catch,\n  ArgumentsHost,\n  HttpException,\n  HttpStatus,\n} from '@nestjs/common'\nimport { Exception } from '@buka/exception'\nimport { ErrorCode, ErrorCategory } from '@buka/error-codes'\nimport { ErrorCodeRegistry } from '../error-code.registry.js'\nimport { HttpException as BukaHttpException } from '../http-exception.js'\n\ninterface HttpResponse {\n  status(code: number): this\n  send(body: unknown): void\n}\n\n// 映射 HTTP 状态码到预留错误码 (moduleId=0 为系统保留)\nconst HTTP_STATUS_ERROR_MAPPING: Record<number, { category: ErrorCategory; sequenceId: number | string }> = {\n  400: { category: ErrorCategory.VALIDATION, sequenceId: '400' },\n  401: { category: ErrorCategory.AUTH, sequenceId: '401' },\n  403: { category: ErrorCategory.AUTH, sequenceId: '403' },\n  404: { category: ErrorCategory.BUSINESS, sequenceId: '404' },\n  409: { category: ErrorCategory.CONFLICT, sequenceId: '409' },\n  415: { category: ErrorCategory.VALIDATION, sequenceId: '415' },\n  429: { category: ErrorCategory.RATE_LIMIT, sequenceId: '429' },\n  500: { category: ErrorCategory.SYSTEM, sequenceId: '500' },\n  502: { category: ErrorCategory.THIRD_PARTY, sequenceId: '502' },\n  503: { category: ErrorCategory.DEGRADE, sequenceId: '503' },\n  504: { category: ErrorCategory.THIRD_PARTY, sequenceId: '504' },\n}\n\n/**\n * 全局异常过滤器\n *\n * 统一处理所有异常，转换为标准错误码格式响应\n */\n@Catch()\nexport class ErrorCodeExceptionFilter implements ExceptionFilter {\n  catch(exception: unknown, host: ArgumentsHost): void {\n    const ctx = host.switchToHttp()\n    const response = ctx.getResponse<HttpResponse>()\n\n    let status: number\n    let body: Record<string, unknown>\n\n    if (exception instanceof BukaHttpException) {\n      // 处理自定义业务异常 (NestJS 扩展)\n      status = exception.httpStatus\n      body = this.handleException(exception)\n    } else if (exception instanceof Exception) {\n      // 处理 @buka/exception 基础异常\n      status = HttpStatus.INTERNAL_SERVER_ERROR\n      body = this.handleException(exception)\n    } else if (exception instanceof HttpException) {\n      // 处理 NestJS 内置 HTTP 异常\n      status = exception.getStatus()\n      body = this.handleHttpException(exception)\n    } else {\n      // 处理未知异常\n      status = HttpStatus.INTERNAL_SERVER_ERROR\n      body = this.handleUnknownException(exception)\n    }\n\n    response.status(status).send(body)\n  }\n\n  private handleException(exception: Exception): Record<string, unknown> {\n    const registry = ErrorCodeRegistry.getInstance()\n    const errorCode = new ErrorCode({\n      category: exception.category,\n      systemId: registry.getSystemId(),\n      moduleId: exception.moduleId,\n      sequenceId: exception.sequenceId,\n    })\n\n    return {\n      error: {\n        code: errorCode.toString(),\n        message: exception.message,\n        details: exception.details,\n      },\n    }\n  }\n\n  private handleHttpException(exception: HttpException): Record<string, unknown> {\n    const status = exception.getStatus()\n    const registry = ErrorCodeRegistry.getInstance()\n    const systemId = registry.getSystemId()\n\n    const config = HTTP_STATUS_ERROR_MAPPING[status] ?? { category: ErrorCategory.SYSTEM, sequenceId: status }\n    const errorCode = new ErrorCode({\n      category: config.category,\n      systemId,\n      moduleId: 0,\n      sequenceId: config.sequenceId,\n    })\n\n    const exceptionResponse = exception.getResponse()\n    const message\n      = typeof exceptionResponse === 'string'\n        ? exceptionResponse\n        : (exceptionResponse as Record<string, unknown>).message\n\n    return {\n      error: {\n        code: errorCode.toString(),\n        message,\n        details: [],\n      },\n    }\n  }\n\n  private handleUnknownException(exception: unknown): Record<string, unknown> {\n    const registry = ErrorCodeRegistry.getInstance()\n    const errorCode = new ErrorCode({\n      category: ErrorCategory.SYSTEM,\n      systemId: registry.getSystemId(),\n      moduleId: 0,\n      sequenceId: 500,\n    })\n\n    // 记录未知异常\n    console.error('Unhandled exception:', exception)\n\n    return {\n      error: {\n        code: errorCode.toString(),\n        message: 'Internal Server Error',\n        details: [],\n      },\n    }\n  }\n}\n","import { ConfigurableModuleBuilder } from '@nestjs/common'\n\nexport interface ExceptionModuleOptions {\n  /**\n   * 系统ID (0 - 1048575)\n   * 全公司唯一，用于区分不同业务系统\n   */\n  systemId: number | string\n}\n\nexport const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } = new ConfigurableModuleBuilder<ExceptionModuleOptions>()\n  .build()\n","import { Global, Inject, Module, type OnModuleInit } from '@nestjs/common'\nimport { APP_FILTER } from '@nestjs/core'\nimport { Base32 } from '@buka/error-codes'\nimport { ErrorCodeController } from './error-code.controller.js'\nimport { ErrorCodeRegistry } from './error-code.registry.js'\nimport { ErrorCodeExceptionFilter } from './filters/exception.filter.js'\nimport { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN, type ExceptionModuleOptions } from './exception.module-definition.js'\n\n\n/**\n * 错误码模块\n *\n * @example\n * ```typescript\n * import { Module } from '@nestjs/common';\n * import { ExceptionModule } from '@buka/nestjs-kit';\n *\n * @Module({\n *   imports: [\n *     ExceptionModule.register({\n *       systemId: '1001', // 你的系统ID，支持 Base32 字符串或十进制数字\n *     }),\n *   ],\n * })\n * export class AppModule {}\n * ```\n */\n@Global()\n@Module({\n  controllers: [ErrorCodeController],\n  providers: [\n    {\n      provide: APP_FILTER,\n      useClass: ErrorCodeExceptionFilter,\n    },\n  ],\n})\nexport class ExceptionModule extends ConfigurableModuleClass implements OnModuleInit {\n  @Inject(MODULE_OPTIONS_TOKEN)\n  private readonly options!: ExceptionModuleOptions\n\n  onModuleInit(): void {\n    const systemId = typeof this.options.systemId === 'string'\n      ? Base32.decode(this.options.systemId)\n      : this.options.systemId\n    ErrorCodeRegistry.getInstance().setSystemId(systemId)\n  }\n}\n","import { ModuleExceptions } from './decorators/exception-module.decorator.js'\nimport {\n  AuthException,\n  BusinessException,\n  ConflictException,\n  DegradeException,\n  RateLimitException,\n  SystemException,\n  ThirdPartyException,\n  ValidationException,\n} from './pending-exception.factory.js'\n\n/**\n * 内置异常定义（moduleId: 0）\n *\n * 与 ErrorCodeExceptionFilter 中 HTTP 状态码映射表一一对应。\n * 用户可以直接 `throw new BukaExceptions.BadRequest()` 来使用这些内置错误码，\n * 而不必依赖 NestJS 内置 HttpException 被 filter 隐式映射。\n */\n@ModuleExceptions({ moduleId: 0 })\nexport class BukaExceptions {\n  // VALIDATION 类\n  static readonly BadRequest = ValidationException({ sequenceId: 400, message: 'Bad Request' })\n  static readonly UnsupportedMediaType = ValidationException({ sequenceId: 415, message: 'Unsupported Media Type' })\n\n  // AUTH 类\n  static readonly Unauthorized = AuthException({ sequenceId: 401, message: 'Unauthorized' })\n  static readonly Forbidden = AuthException({ sequenceId: 403, message: 'Forbidden' })\n\n  // BUSINESS 类\n  static readonly NotFound = BusinessException({ sequenceId: 404, message: 'Not Found' })\n\n  // CONFLICT 类\n  static readonly Conflict = ConflictException({ sequenceId: 409, message: 'Conflict' })\n\n  // RATE_LIMIT 类\n  static readonly TooManyRequests = RateLimitException({ sequenceId: 429, message: 'Too Many Requests' })\n\n  // SYSTEM 类\n  static readonly InternalServerError = SystemException({ sequenceId: 500, message: 'Internal Server Error' })\n\n  // THIRD_PARTY 类\n  static readonly BadGateway = ThirdPartyException({ sequenceId: 502, message: 'Bad Gateway' })\n  static readonly GatewayTimeout = ThirdPartyException({ sequenceId: 504, message: 'Gateway Timeout' })\n\n  // DEGRADE 类\n  static readonly ServiceUnavailable = DegradeException({ sequenceId: 503, message: 'Service Unavailable' })\n}\n","import { Embeddable, Property } from '@mikro-orm/decorators/legacy'\nimport { Hidden, HiddenProps } from '@mikro-orm/core'\nimport { ApiHideProperty } from '@nestjs/swagger'\n\n/**\n * 密钥信封的嵌入式实体\n *\n * 包含密钥相关的元数据：kekId、KEK 版本号和加密的数据密钥（DEK）\n *\n * @example\n * ```typescript\n * @Entity()\n * export class UserSecret extends DiscreteEntity {\n *   @Column.Embedded(() => KeyEnvelope, { object: false })\n *   envelope!: KeyEnvelope\n *\n *   @Column.Embedded(() => EncryptedPayload)\n *   payload!: EncryptedPayload\n * }\n * ```\n */\n@Embeddable()\nexport class KeyEnvelope {\n  [HiddenProps]?: 'dek';\n\n  /**\n   * 加密数据的唯一标识符，用于 AAD 绑定\n   */\n  @Property({\n    type: 'varchar',\n    length: 64,\n    comment: '加密数据的唯一标识符，用于 AAD 绑定',\n    hidden: true,\n  })\n  @ApiHideProperty()\n  kekId!: string & Hidden\n\n  /**\n   * KEK 版本号，用于密钥轮换追踪\n   */\n  @Property({\n    type: 'smallint',\n    comment: 'KEK 版本号',\n    hidden: true,\n  })\n  @ApiHideProperty()\n  kekVersion!: number & Hidden\n\n  /**\n   * 加密的数据密钥（由 KEK 加密，二进制格式）\n   */\n  @Property({\n    type: 'bytea',\n    comment: '加密的数据密钥（由 KEK 加密）',\n    hidden: true,\n  })\n  @ApiHideProperty()\n  dek!: Buffer\n}\n","import { Embeddable, Property } from '@mikro-orm/decorators/legacy'\nimport { Hidden, HiddenProps } from '@mikro-orm/core'\nimport { ApiHideProperty } from '@nestjs/swagger'\n\n/**\n * 加密数据的嵌入式实体\n *\n * 包含加密后的数据和解密所需的参数：密文、IV、认证标签和算法版本\n *\n * @example\n * ```typescript\n * @Entity()\n * export class UserSecret extends DiscreteEntity {\n *   @Column.Embedded(() => KeyEnvelope, { object: false })\n *   envelope!: KeyEnvelope\n *\n *   @Column.Embedded(() => EncryptedPayload)\n *   payload!: EncryptedPayload\n * }\n * ```\n */\n@Embeddable()\nexport class EncryptedPayload {\n  [HiddenProps]?: 'ciphertext' | 'cipherIv' | 'cipherTag';\n\n  /**\n   * 加密后的数据（二进制）\n   */\n  @Property({\n    type: 'bytea',\n    comment: '加密后的数据',\n    hidden: true,\n  })\n  @ApiHideProperty()\n  ciphertext!: Buffer\n\n  /**\n   * 初始化向量（二进制）\n   */\n  @Property({\n    type: 'bytea',\n    comment: '初始化向量',\n    hidden: true,\n  })\n  @ApiHideProperty()\n  cipherIv!: Buffer\n\n  /**\n   * 认证标签（二进制，用于 GCM 模式验证数据完整性）\n   */\n  @Property({\n    type: 'bytea',\n    comment: '认证标签',\n    hidden: true,\n  })\n  @ApiHideProperty()\n  cipherTag!: Buffer\n\n  /**\n   * 加密算法版本号\n   */\n  @Property({\n    type: 'smallint',\n    comment: '加密算法版本号',\n    default: 1,\n    hidden: true,\n  })\n  @ApiHideProperty()\n  cipherVersion: number & Hidden = 1\n}\n","import { ConfigurableModuleBuilder } from '@nestjs/common'\nimport { EnvelopeEncryptionModuleOptions } from './types/envelope-encryption-module-options'\n\nexport const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } = new ConfigurableModuleBuilder<EnvelopeEncryptionModuleOptions>()\n  .build()\n","import { Inject, Injectable, Logger, OnApplicationBootstrap, OnModuleDestroy } from '@nestjs/common'\nimport { OpenBaoHttpClient } from '../../apis/open-bao-http/open-bao-http.client'\nimport { MODULE_OPTIONS_TOKEN } from './envelope-encryption.module-definition'\nimport type { EnvelopeEncryptionModuleOptions } from './types/envelope-encryption-module-options'\nimport { RequestException } from 'keq'\n\n\ninterface KekMetadata {\n  kekPath: string\n  // kekActiveVersion: number\n}\n\ninterface GeneratedDek {\n  dek: Buffer\n  encryptedDek: Buffer\n  kekVersion: number\n}\n\ninterface DekCacheEntry {\n  dek: Buffer\n  expireAt: number\n}\n\n\n@Injectable()\nexport class KmsProvider implements OnApplicationBootstrap, OnModuleDestroy {\n  private readonly logger = new Logger(KmsProvider.name)\n\n  // ----- KEK 元数据缓存 -----\n  // KEK 元数据（如 Transit key 路径）在首次使用时从 OpenBao 拉取一次，并在进程生命周期内永久保留。\n  // KEK 元数据在运行时是不可变的：key 名称不会变更，key 版本由 OpenBao 内部管理，\n  // 因此无需设置过期或主动淘汰。\n  // `loadingPromises` 用于对同一 KEK 的并发请求去重，确保同一时刻只有一个 OpenBao 请求正在等待响应。\n  private kekMetadataMap: Map<string, KekMetadata> = new Map()\n  private loadingPromises: Map<string, Promise<KekMetadata>> = new Map()\n\n  // ----- DEK 明文缓存 -----\n  // 每次调用 `decryptDek()` 都需要向 OpenBao Transit API 发起一次网络请求。\n  // 当同一条加密 DEK 在短时间内被频繁访问时（例如解密同一条记录的多个字段），\n  // 这些重复请求会显著增加延迟并加重 OpenBao 的负载。\n  //\n  // 为此，解密后的 DEK 明文会在内存中短暂缓存，TTL 由 `options.dekCacheTtl` 配置（默认 0 = 禁用）。\n  // 缓存 key 为 base64 编码的加密 DEK，具有幂等性：同一密文必然解出同一明文。\n  //\n  // 安全提示：明文 DEK 保留在内存中会扩大其暴露窗口（例如堆转储时可被读取），\n  // TTL 应设置为刚好能覆盖突发访问的时间范围，通常建议 30～120 秒。\n  //\n  // `dekDecryptingPromises` 用于对同一加密 DEK 的并发解密请求去重，确保同一时刻只有一个 OpenBao 请求正在等待响应。\n  private dekCache: Map<string, DekCacheEntry> = new Map()\n  private dekDecryptingPromises: Map<string, Promise<Buffer>> = new Map()\n  private dekCacheCleanupTimer: ReturnType<typeof setInterval> | null = null\n\n  constructor(\n    private readonly openbao: OpenBaoHttpClient,\n    @Inject(MODULE_OPTIONS_TOKEN) private readonly options: EnvelopeEncryptionModuleOptions,\n  ) {}\n\n  async onApplicationBootstrap(): Promise<void> {\n    const keks = this.options.keks ?? []\n    await Promise.all(keks.map((kekId) => this.getOrLoadKekMetadata(kekId)))\n\n    const ttl = this.options.dekCacheTtl ?? 0\n    if (ttl < 0) {\n      this.logger.warn(`dekCacheTtl 配置值 ${ttl}s 无效（不能为负数），已忽略缓存配置`)\n    } else if (ttl > 0 && ttl < 30) {\n      this.logger.warn(`dekCacheTtl 配置值 ${ttl}s 过短（建议 30～120s），缓存效果有限`)\n    } else if (ttl > 120) {\n      this.logger.warn(`dekCacheTtl 配置值 ${ttl}s 过长（建议 30～120s），明文 DEK 将在内存中长时间驻留，存在安全风险`)\n    }\n\n    if (ttl > 0) {\n      this.dekCacheCleanupTimer = setInterval(() => this.evictExpiredDekEntries(), ttl * 1000)\n    }\n  }\n\n  onModuleDestroy(): void {\n    if (this.dekCacheCleanupTimer !== null) {\n      clearInterval(this.dekCacheCleanupTimer)\n      this.dekCacheCleanupTimer = null\n    }\n  }\n\n  private getOrLoadKekMetadata(kekId: string): Promise<KekMetadata> {\n    const cached = this.kekMetadataMap.get(kekId)\n    if (cached) return Promise.resolve(cached)\n\n    const loading = this.loadingPromises.get(kekId)\n    if (loading) return loading\n\n    const isPreloaded = (this.options.keks ?? []).includes(kekId)\n    if (!isPreloaded) {\n      this.logger.warn(`KEK \"${kekId}\" 未在 options.keks 中预加载，将在首次使用时动态加载。建议将高频使用的 KEK 加入预加载列表以避免启动时的冷启动延迟。`)\n    }\n\n    const promise = (async () => {\n      try {\n        await this.openbao.transitReadKey().params({ name: kekId })\n        const metadata: KekMetadata = { kekPath: kekId }\n        this.kekMetadataMap.set(kekId, metadata)\n        return metadata\n      } finally {\n        this.loadingPromises.delete(kekId)\n      }\n    })()\n\n    this.loadingPromises.set(kekId, promise)\n    return promise\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  async generateDek(kekId: string, _type: 'aes128-gcm96' | 'aes256-gcm96' | 'chacha20-poly1305'): Promise<GeneratedDek> {\n    const { kekPath } = await this.getOrLoadKekMetadata(kekId)\n    const dekResponse: any = await this.openbao\n      .transitGenerateDataKey({ key_version: undefined })\n      .params({ name: kekPath, plaintext: 'plaintext' })\n\n    return {\n      dek: Buffer.from(dekResponse.data.plaintext, 'base64'),\n      encryptedDek: Buffer.from(dekResponse.data.ciphertext),\n      kekVersion: dekResponse.data.key_version,\n    }\n  }\n\n  async decryptDek(kekId: string, kekVersion: number, encryptedDek: Buffer): Promise<Buffer> {\n    const { kekPath } = await this.getOrLoadKekMetadata(kekId)\n    return this.getOrDecryptDek(kekPath, kekId, kekVersion, encryptedDek)\n  }\n\n  private getOrDecryptDek(kekPath: string, kekId: string, kekVersion: number, encryptedDek: Buffer): Promise<Buffer> {\n    const ttl = this.options.dekCacheTtl ?? 0\n    const cacheKey = encryptedDek.toString('base64')\n\n    if (ttl > 0) {\n      const cached = this.dekCache.get(cacheKey)\n      if (cached && cached.expireAt > Date.now()) {\n        return Promise.resolve(Buffer.from(cached.dek))\n      }\n\n      const inflight = this.dekDecryptingPromises.get(cacheKey)\n      if (inflight) return inflight\n    }\n\n    const promise = (async () => {\n      try {\n        const dekResponse: any = await this.openbao\n          .transitDecrypt({ ciphertext: encryptedDek.toString() })\n          .params({ name: kekPath })\n          .catch(async (err) => {\n            let message = `使用 KEK 解密 DEK 失败，KEK ID: ${kekId}，KEK 版本: ${kekVersion}`\n            if (err instanceof RequestException && err.response) {\n              const text = await err.response.text()\n              message += `\\nOpenBao 响应: ${text}`\n            }\n            this.logger.error(message, err.stack)\n            throw err\n          })\n\n        const dek = Buffer.from(dekResponse.data.plaintext, 'base64')\n\n        if (ttl > 0) {\n          this.dekCache.set(cacheKey, { dek: Buffer.from(dek), expireAt: Date.now() + ttl * 1000 })\n        }\n\n        return dek\n      } finally {\n        this.dekDecryptingPromises.delete(cacheKey)\n      }\n    })()\n\n    if (ttl > 0) {\n      this.dekDecryptingPromises.set(cacheKey, promise)\n    }\n\n    return promise\n  }\n\n  private evictExpiredDekEntries(): void {\n    const now = Date.now()\n    for (const [key, entry] of this.dekCache) {\n      if (entry.expireAt <= now) {\n        this.dekCache.delete(key)\n      }\n    }\n  }\n}\n","import { Injectable, Logger } from '@nestjs/common'\nimport { createCipheriv, createDecipheriv, randomBytes } from 'crypto'\nimport { KeyEnvelope } from './entities/key-envelope.embeddable'\nimport { EncryptedPayload } from './entities/encrypted-payload.embeddable'\nimport { EnvelopeEncryptionCipher } from './types/envelope-encryption-cipher'\nimport { DecryptCommand, EncryptCommand } from './commands'\nimport { stableStringify } from '~/utils/stable-stringify'\nimport { KmsProvider } from './kms.provider'\n\n\n/**\n * 信封加密服务 V1 实现\n *\n * 使用 AES-256-GCM 算法，KEK 由 OpenBao Transit 引擎管理\n */\n@Injectable()\nexport class EnvelopeEncryptionV1Cipher implements EnvelopeEncryptionCipher {\n  private readonly logger = new Logger(EnvelopeEncryptionV1Cipher.name)\n\n  version = <const>1\n  algorithm = <const>'aes-256-gcm'\n\n  constructor(\n    private readonly kmsProvider: KmsProvider,\n  ) {}\n\n\n  /**\n   * 构建 AAD（附加认证数据）\n   * 将 kekId 编码到 AAD 中，确保密文与 kekId 绑定\n   */\n  private buildAad(kekId: string, extraAad?: Record<string, unknown>): Buffer {\n    return Buffer.from(stableStringify({ kekId, ...extraAad }), 'utf8')\n  }\n\n\n  async encrypt(cmd: EncryptCommand): Promise<[KeyEnvelope, EncryptedPayload]> {\n    // 1. 从 OpenBao 生成新的数据密钥（DEK）\n    const {\n      dek,\n      encryptedDek,\n      kekVersion,\n    } = await this.kmsProvider.generateDek(cmd.kekId, 'aes256-gcm96')\n\n    // 2. 生成随机 IV\n    const cipherIv = randomBytes(12)\n\n    // 3. 使用 DEK 加密数据\n    const cipher = createCipheriv(this.algorithm, dek, cipherIv, {\n      authTagLength: 16,\n    })\n\n    // 4. 构建 AAD（包含 kekId）\n    const aad = this.buildAad(cmd.kekId, cmd.extraAad)\n    cipher.setAAD(aad)\n\n    // 5. 加密\n    const cipherBlob = Buffer.concat([\n      cipher.update(cmd.plaintext),\n      cipher.final(),\n    ])\n\n    // 6. 获取认证标签\n    const cipherTag = cipher.getAuthTag()\n\n    // 7. 清除内存中的 DEK\n    dek.fill(0)\n\n    const envelope = new KeyEnvelope()\n    envelope.kekId = cmd.kekId\n    envelope.kekVersion = kekVersion\n    envelope.dek = encryptedDek\n\n    const payload = new EncryptedPayload()\n    payload.ciphertext = cipherBlob\n    payload.cipherIv = cipherIv\n    payload.cipherTag = cipherTag\n    payload.cipherVersion = this.version\n\n    return [envelope, payload]\n  }\n\n  // async decrypt(envelope: KeyEnvelope, payload: EncryptedPayload, extraAad?: Buffer): Promise<Buffer> {\n  async decrypt(cmd: DecryptCommand): Promise<Buffer> {\n    if (cmd.payload.cipherVersion !== this.version) {\n      throw new Error(`Cipher version mismatch: expected ${this.version}, got ${cmd.payload.cipherVersion}`)\n    }\n\n    // 1. 从 OpenBao 解密 DEK\n    const dek = await this.kmsProvider.decryptDek(\n      cmd.envelope.kekId,\n      cmd.envelope.kekVersion,\n      cmd.envelope.dek,\n    )\n\n    // 2. 使用 DEK 解密数据\n    const decipher = createDecipheriv(\n      this.algorithm,\n      dek,\n      cmd.payload.cipherIv,\n      { authTagLength: 16 },\n    )\n\n    // 3. 构建 AAD（包含 kekId）\n    const aad = this.buildAad(cmd.envelope.kekId, cmd.extraAad)\n    decipher.setAAD(aad)\n\n    // 4. 设置认证标签\n    decipher.setAuthTag(cmd.payload.cipherTag)\n\n    // 5. 解密\n    const decrypted = Buffer.concat([\n      decipher.update(cmd.payload.ciphertext),\n      decipher.final(),\n    ])\n\n    // 6. 清除内存中的 DEK\n    dek.fill(0)\n\n    return decrypted\n  }\n}\n","import { Inject, Injectable, Logger } from '@nestjs/common'\nimport { DecryptCommand, EncryptBufferCommand, EncryptCommand, EncryptStringCommand, ReencryptCommand } from './commands'\nimport { EnvelopeEncryptionV1Cipher } from './envelope-encryption-v1.cipher'\nimport { KeyEnvelope } from './entities/key-envelope.embeddable'\nimport { EncryptedPayload } from './entities/encrypted-payload.embeddable'\nimport { EnvelopeEncryptionCipher } from './types/envelope-encryption-cipher'\nimport { type EnvelopeEncryptionModuleOptions } from './types/envelope-encryption-module-options'\nimport { MODULE_OPTIONS_TOKEN } from './envelope-encryption.module-definition'\nimport { CipherMetadata } from './types/cipher-metadata'\n\n\n/**\n * 信封加密服务，基于信封加密模式（Envelope Encryption）提供数据加密、解密和重新加密能力。\n *\n * 使用 KEK（Key Encryption Key）保护 DEK（Data Encryption Key），支持多版本加密算法。\n *\n * @example\n * ```typescript\n * // 加密\n * const [envelope, payload] = await envelopeEncryptionService.encrypt({\n *   kekId: 'kek-001',\n *   plaintext: '敏感数据',\n * })\n *\n * // 解密\n * const plaintext = await envelopeEncryptionService.decryptToString({\n *   envelope,\n *   payload,\n * })\n * ```\n */\n@Injectable()\nexport class EnvelopeEncryptionService {\n  private readonly logger = new Logger(EnvelopeEncryptionService.name)\n\n  private readonly ciphers = new Map<number, EnvelopeEncryptionCipher>()\n  private readonly defaultCipher: EnvelopeEncryptionCipher\n\n  constructor(\n    @Inject(MODULE_OPTIONS_TOKEN)\n    private readonly options: EnvelopeEncryptionModuleOptions,\n\n    private readonly cipherV1: EnvelopeEncryptionV1Cipher,\n  ) {\n    this.ciphers.set(this.cipherV1.version, this.cipherV1)\n\n    const version = this.options.version ?? 1\n\n    const defaultCipher = this.ciphers.get(version)\n\n    if (!defaultCipher) {\n      throw new Error(`Unsupported default cipher version: ${this.options.version}`)\n    }\n\n    this.defaultCipher = defaultCipher\n  }\n\n  private isEncryptStringCommand(cmd: EncryptCommand): cmd is EncryptStringCommand {\n    return typeof cmd.plaintext === 'string'\n  }\n\n  /**\n   * 使用信封加密模式加密数据，支持字符串和 Buffer 输入。\n   *\n   * @param cmd - 加密命令，包含 KEK ID 和明文数据\n   * @returns 密钥信封和加密载荷的元组\n   */\n  async encrypt(cmd: EncryptStringCommand): Promise<[KeyEnvelope, EncryptedPayload]>\n  async encrypt(cmd: EncryptBufferCommand): Promise<[KeyEnvelope, EncryptedPayload]>\n  async encrypt(cmd: EncryptCommand): Promise<[KeyEnvelope, EncryptedPayload]> {\n    // 转换成二进制数据\n    const plaintextBuffer = this.isEncryptStringCommand(cmd)\n      ? Buffer.from(cmd.plaintext, cmd.encoding || 'utf8')\n      : cmd.plaintext\n\n    return this.defaultCipher.encrypt({\n      kekId: cmd.kekId,\n      plaintext: plaintextBuffer,\n      extraAad: cmd.extraAad,\n    })\n  }\n\n  /**\n   * 解密数据，自动匹配加密时使用的算法版本。\n   *\n   * @param cmd - 解密命令，包含密钥信封和加密载荷\n   * @returns 解密后的 Buffer\n   */\n  async decrypt(cmd: DecryptCommand): Promise<Buffer> {\n    const cipher = this.ciphers.get(cmd.payload.cipherVersion)\n    if (!cipher) {\n      throw new Error(`Unsupported cipher version: ${cmd.payload.cipherVersion}`)\n    }\n    return cipher.decrypt(cmd)\n  }\n\n  /**\n   * 重新加密数据（使用最新版本的 KEK 和算法）\n   *\n   * @returns 使用新 KEK 加密的结果\n   */\n  async reencrypt(cmd: ReencryptCommand): Promise<[KeyEnvelope, EncryptedPayload]> {\n    const plaintext = await this.decrypt({ envelope: cmd.envelope, payload: cmd.payload, extraAad: cmd.extraAad })\n\n    return this.encrypt({ kekId: cmd.keyId, plaintext, extraAad: cmd.extraAad })\n  }\n\n  /**\n   * 解密为字符串\n   *\n   * @returns 解密后的字符串\n   */\n  async decryptToString(cmd: DecryptCommand): Promise<string> {\n    const plaintextBuffer = await this.decrypt(cmd)\n    return plaintextBuffer.toString('utf-8')\n  }\n\n  /**\n   * 列出所有支持的加密算法的元数据\n   */\n  listCiphers(): CipherMetadata[] {\n    return this.ciphers.values()\n      .map((cipher): CipherMetadata => ({\n        version: cipher.version,\n        algorithm: cipher.algorithm,\n      }))\n      .toArray()\n  }\n}\n","import { DynamicModule, Global, Module } from '@nestjs/common'\nimport { EnvelopeEncryptionService } from './envelope-encryption.service'\nimport { ConfigurableModuleClass } from './envelope-encryption.module-definition'\nimport { EnvelopeEncryptionV1Cipher } from './envelope-encryption-v1.cipher'\nimport { KmsProvider } from './kms.provider'\nimport { EnvelopeEncryptionModuleOptions } from './types/envelope-encryption-module-options'\n\n\n@Global()\n@Module({\n  imports: [],\n  providers: [\n    EnvelopeEncryptionService,\n    EnvelopeEncryptionV1Cipher,\n    KmsProvider,\n  ],\n  exports: [EnvelopeEncryptionService],\n})\nexport class EnvelopeEncryptionModule extends ConfigurableModuleClass {\n  static register(options: EnvelopeEncryptionModuleOptions = {}): DynamicModule {\n    return super.register(options)\n  }\n}\n","import { DynamicModule, Global, Module } from '@nestjs/common'\nimport { LoggerModule as PinoLoggerModule, LoggerErrorInterceptor, Params } from 'nestjs-pino'\nimport type { IncomingMessage, ServerResponse } from 'http'\nimport { stdSerializers } from 'pino'\nimport { LoggerModuleOptions } from './types/logger-module-options'\n\n/**\n * 统一日志模块\n *\n * 基于 nestjs-pino，预配置 Grafana/Loki 友好的 JSON 日志格式。\n *\n * @example\n *   // 直接使用\n *   LoggerModule.register({ serviceName: 'my-service' })\n *\n *   // 配合 @buka/nestjs-config\n *   ConfigModule.inject(PinoConfig, LoggerModule, (config) => ({...config}))\n */\n@Global()\n@Module({})\nexport class LoggerModule {\n  static register(options: LoggerModuleOptions = {}): DynamicModule {\n    return {\n      module: LoggerModule,\n      imports: [PinoLoggerModule.forRoot(this.buildParams(options))],\n      providers: [LoggerErrorInterceptor],\n      exports: [PinoLoggerModule, LoggerErrorInterceptor],\n    }\n  }\n\n  static registerAsync(options: {\n    imports?: any[]\n    inject?: any[]\n    useFactory: (...args: any[]) => LoggerModuleOptions | Promise<LoggerModuleOptions>\n  }): DynamicModule {\n    return {\n      module: LoggerModule,\n      imports: [\n        ...(options.imports || []),\n        PinoLoggerModule.forRootAsync({\n          imports: options.imports || [],\n          inject: options.inject || [],\n          useFactory: async (...args: any[]) => {\n            const opts: LoggerModuleOptions = await options.useFactory(...args)\n            return LoggerModule.buildParams(opts)\n          },\n        }),\n      ],\n      providers: [LoggerErrorInterceptor],\n      exports: [PinoLoggerModule, LoggerErrorInterceptor],\n    }\n  }\n\n  /**\n   * 将 LoggerModuleOptions 转换为 nestjs-pino 的 Params\n   */\n  private static buildParams(options: LoggerModuleOptions): Params {\n    const {\n      serviceName = 'unknown',\n      environment = process.env.NODE_ENV || 'development',\n      version = '0.0.0',\n      level = 'info',\n      pretty = false,\n    } = options\n\n    return {\n      pinoHttp: {\n        // 开发环境 pino-pretty，生产环境无 transport = 原生 JSON（最优 Loki 输入）\n        ...(pretty\n          ? { transport: { target: 'pino-pretty' } }\n          : {}),\n\n        level,\n\n        // 请求 ID：优先上游 X-Request-Id，否则 crypto.randomUUID()\n        genReqId: (req: IncomingMessage) => (req.headers['x-request-id'] as string)\n          || crypto.randomUUID(),\n\n        autoLogging: options.autoLogging,\n\n        customAttributeKeys: {\n          reqId: 'reqId',\n          responseTime: 'responseTime',\n        },\n\n        serializers: {\n          req: (req: IncomingMessage) => ({\n            method: req.method,\n            url: req.url,\n          }),\n          res: (res: ServerResponse) => ({\n            statusCode: res.statusCode,\n          }),\n          err: stdSerializers.err,\n        },\n\n        formatters: {\n          // 数字 level → 字符串标签，Loki 可直接 {level=\"error\"}\n          level: (label: string) => ({ level: label }),\n          // 向每行日志注入服务元数据\n          bindings: (bindings: Record<string, unknown>) => ({\n            ...bindings,\n            service: serviceName,\n            environment,\n            version,\n          }),\n        },\n      },\n    }\n  }\n}\n","import { InjectPinoLogger } from 'nestjs-pino'\n\n/**\n * 注入 Logger，自动以类名为日志上下文\n *\n * 用法：\n *   @InjectLogger()\n *   private readonly logger: Logger\n *\n * 等价于：\n *   @InjectPinoLogger(MyService.name)\n *   private readonly logger: Logger\n */\nexport function InjectLogger(context?: string): ParameterDecorator {\n  return (target, propertyKey, parameterIndex) => {\n    const ctx = context || target.constructor.name\n    InjectPinoLogger(ctx)(target, propertyKey, parameterIndex)\n  }\n}\n","import { ToBoolean } from '@buka/class-transformer-extra'\nimport { IsIn } from 'class-validator'\n\n/**\n * 日志配置基类\n *\n * 项目中的日志配置应继承此类并通过 @Configuration('xxx') 绑定环境变量前缀\n */\nexport class LoggerConfig {\n  @ToBoolean()\n  pretty: boolean = false\n\n  @IsIn(['fatal', 'error', 'warn', 'info', 'debug', 'trace'])\n  level: 'fatal' | 'error' | 'warn' | 'info' | 'debug' | 'trace' = 'info'\n\n  serviceName: string = 'unknown'\n\n  environment: string = process.env.NODE_ENV || 'development'\n\n  version: string = process.env.npm_package_version || '0.0.0'\n}\n","import { IsBoolean, IsString, IsUrl } from 'class-validator'\nimport { ObjectStorageModuleOptions } from './types'\n\n\nexport class ObjectStorageModuleConfig implements ObjectStorageModuleOptions {\n  @IsUrl({ require_protocol: true, disallow_auth: true })\n  endpoint!: string\n\n  @IsString()\n  bucket!: string\n\n  @IsString()\n  region!: string\n\n  @IsString()\n  accessKeyId!: string\n\n  @IsString()\n  secretAccessKey!: string\n\n  @IsBoolean()\n  forcePathStyle: boolean = false\n\n  @IsString()\n  prefix: string = ''\n}\n","import { ConfigurableModuleBuilder } from '@nestjs/common'\nimport { ObjectStorageModuleOptions } from './types/index.js'\n\nexport const { ConfigurableModuleClass, MODULE_OPTIONS_TOKEN } = new ConfigurableModuleBuilder<ObjectStorageModuleOptions>()\n  .build()\n","import { Inject, Injectable, Logger, OnModuleInit } from '@nestjs/common'\nimport { DeleteObjectCommand, GetObjectCommand, HeadObjectCommand, S3Client } from '@aws-sdk/client-s3'\nimport { getSignedUrl } from '@aws-sdk/s3-request-presigner'\nimport { Upload } from '@aws-sdk/lib-storage'\nimport type { ObjectStorageModuleOptions, ObjectStorageOptions } from './types'\nimport { MODULE_OPTIONS_TOKEN } from './object-storage.module-definition'\nimport { Readable } from 'node:stream'\n\n\n/**\n * 对象存储服务，基于 AWS S3 兼容协议提供文件的上传、下载、删除等操作。\n *\n * 支持配置路径前缀（`prefix`）以实现多租户或环境隔离。\n *\n * @example\n * ```typescript\n * // 上传文件\n * const key = await objectStorageService.upload('avatars/user-001.png', fileBuffer)\n *\n * // 获取签名 URL\n * const url = await objectStorageService.getSignedUrl('avatars/user-001.png', 3600)\n * ```\n */\n@Injectable()\nexport class ObjectStorageService implements OnModuleInit {\n  private readonly logger = new Logger(ObjectStorageService.name)\n\n  constructor(\n    @Inject(MODULE_OPTIONS_TOKEN)\n    private readonly config: ObjectStorageModuleOptions,\n  ) {}\n\n  private client!: S3Client\n\n  async onModuleInit(): Promise<void> {\n    this.client = new S3Client({\n      region: this.config.region,\n      credentials: {\n        accessKeyId: this.config.accessKeyId,\n        secretAccessKey: this.config.secretAccessKey,\n      },\n      endpoint: this.config.endpoint,\n      forcePathStyle: this.config.forcePathStyle,\n    })\n  }\n\n  private trimSlashes(str: string): string {\n    return str.replace(/^\\/+|\\/+$/g, '')\n  }\n\n  /**\n   * 为路径添加配置的前缀。\n   */\n  prefix(path: string): string {\n    const prefix = this.trimSlashes(this.config.prefix ?? '')\n    if (!prefix) return path\n    const p = this.trimSlashes(path)\n    return `${prefix}/${p}`\n  }\n\n  private buildPath(path: string, options?: ObjectStorageOptions): string {\n    return !options?.prefix ? path : this.prefix(path)\n  }\n\n  /**\n   * 获取文件内容，返回可读流。\n   *\n   * @param path - 文件路径\n   * @param options - 可选配置，如是否自动添加前缀\n   */\n  async get(path: string, options?: ObjectStorageOptions): Promise<Readable> {\n    const key = this.buildPath(path, options)\n    const command = new GetObjectCommand({\n      Bucket: this.config.bucket,\n      Key: key,\n    })\n\n    try {\n      const res = await this.client.send(command)\n\n      if (!res.Body) {\n        throw new Error('No body')\n      }\n\n      return Readable.fromWeb(res.Body.transformToWebStream() as any)\n    } catch (err) {\n      this.logger.error(`对象存储下载失败, bucket: ${this.config.bucket}, key: ${key}`, err instanceof Error ? err.stack : undefined)\n      throw err\n    }\n  }\n\n  /**\n   * 上传文件内容到指定路径。\n   *\n   * @param path - 目标文件路径\n   * @param contents - 文件内容，支持字符串、Buffer 或可读流\n   * @param options - 可选配置\n   * @returns 实际存储的 key\n   */\n  async upload(path: string, contents: string | Readable | Buffer, options?: ObjectStorageOptions): Promise<string> {\n    const key = this.buildPath(path, options)\n\n    const upload = new Upload({\n      client: this.client,\n      params: {\n        Bucket: this.config.bucket,\n        Key: key,\n        Body: contents,\n      },\n    })\n\n    try {\n      await upload.done()\n      return key\n    } catch (err) {\n      this.logger.error(`对象存储上传失败, bucket: ${this.config.bucket}, key: ${key}`, err instanceof Error ? err.stack : undefined)\n      throw err\n    }\n  }\n\n  /**\n   * 获取文件的元数据（metadata）。\n   */\n  async getMetadata(path: string, options?: ObjectStorageOptions): Promise<Record<string, string>> {\n    const key = this.buildPath(path, options)\n    const command = new HeadObjectCommand({\n      Bucket: this.config.bucket,\n      Key: key,\n    })\n\n    try {\n      const res = await this.client.send(command)\n\n      if (!res.Metadata) {\n        throw new Error('No metadata')\n      }\n\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n      return res.Metadata\n    } catch (err) {\n      this.logger.error(`对象存储获取元数据失败, bucket: ${this.config.bucket}, key: ${key}`, err instanceof Error ? err.stack : undefined)\n      throw err\n    }\n  }\n\n  /**\n   * 检查文件是否存在。\n   */\n  async exists(path: string, options?: ObjectStorageOptions): Promise<boolean> {\n    const key = this.buildPath(path, options)\n    const command = new HeadObjectCommand({\n      Bucket: this.config.bucket,\n      Key: key,\n    })\n\n    try {\n      await this.client.send(command)\n      return true\n    } catch (err) {\n      if (err instanceof Error && err.name === 'NotFound') return false\n      this.logger.error(`对象存储检查文件存在性失败, bucket: ${this.config.bucket}, key: ${key}`, err instanceof Error ? err.stack : undefined)\n      throw err\n    }\n  }\n\n  /**\n   * 删除指定路径的文件。\n   */\n  async remove(path: string, options?: ObjectStorageOptions): Promise<void> {\n    const key = this.buildPath(path, options)\n    const command = new DeleteObjectCommand({\n      Bucket: this.config.bucket,\n      Key: key,\n    })\n\n    try {\n      await this.client.send(command)\n    } catch (err) {\n      this.logger.error(`对象存储删除文件失败, bucket: ${this.config.bucket}, key: ${key}`, err instanceof Error ? err.stack : undefined)\n      throw err\n    }\n  }\n\n  /**\n   * 获取文件的预签名 URL，用于临时授权访问。\n   *\n   * @param path - 文件路径\n   * @param expiresInSecond - URL 有效期（秒）\n   * @param options - 可选配置\n   */\n  async getSignedUrl(path: string, expiresInSecond: number, options?: ObjectStorageOptions): Promise<string> {\n    const key = this.buildPath(path, options)\n    const command = new GetObjectCommand({\n      Bucket: this.config.bucket,\n      Key: key,\n    })\n\n    try {\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n      return await getSignedUrl(this.client, command, { expiresIn: expiresInSecond })\n    } catch (err) {\n      this.logger.error(`对象存储获取签名URL失败, bucket: ${this.config.bucket}, key: ${key}`, err instanceof Error ? err.stack : undefined)\n      throw err\n    }\n  }\n}\n","import { Global, Module } from '@nestjs/common'\nimport { ObjectStorageService } from './object-storage.service'\nimport { ConfigurableModuleClass } from './object-storage.module-definition'\n\n@Global()\n@Module({\n  providers: [ObjectStorageService],\n  exports: [ObjectStorageService],\n})\nexport class ObjectStorageModule extends ConfigurableModuleClass {}\n","import { RequestException } from 'keq'\nimport { ErrorCode } from '@buka/error-codes'\nimport type { ExceptionDetail } from '@buka/exception'\n\nexport interface BukaRequestExceptionOptions {\n  code: string\n  details?: ExceptionDetail[]\n  response?: Response\n  fatal?: boolean\n}\n\nexport class BukaRequestException extends RequestException {\n  readonly code: string\n  readonly errorCode: ErrorCode\n  readonly details: ExceptionDetail[]\n\n  constructor(statusCode: number, message: string, options: BukaRequestExceptionOptions) {\n    super(statusCode, message, { response: options.response, fatal: options.fatal })\n    this.code = options.code\n    this.errorCode = ErrorCode.fromString(options.code)\n    this.details = options.details ?? []\n  }\n}\n","import type { KeqMiddleware } from 'keq'\nimport { createExceptionByStatusCode } from '@keq-request/exception'\nimport type { ExceptionDetail } from '@buka/exception'\nimport { Logger } from '@nestjs/common'\nimport { BukaRequestException, type BukaRequestExceptionOptions } from './buka-request.exception'\n\nconst logger = new Logger('KeqMiddleware:throwOnResponseError')\n\nexport interface ThrowOnResponseErrorOptions {\n  errorDispatchers?: Record<string, new (statusCode: number, message: string, options: BukaRequestExceptionOptions) => BukaRequestException>\n  /**\n   * 开启后，错误体解析失败时输出 debug 日志\n   * @default false\n   */\n  debug?: boolean\n}\n\nexport function throwOnResponseError(options?: ThrowOnResponseErrorOptions): KeqMiddleware {\n  const { errorDispatchers, debug } = options ?? {}\n\n  const middleware: KeqMiddleware = async (ctx, next) => {\n    await next()\n\n    if (!ctx.response || (ctx.response.status >= 200 && ctx.response.status < 400)) return\n\n    const response = ctx.response\n    const contentType = response.headers.get('content-type')\n\n    if (!contentType?.includes('application/json')) {\n      throw createExceptionByStatusCode(response)\n    }\n\n    let body: unknown\n    try {\n      body = await response.json()\n    } catch (err) {\n      if (debug) {\n        logger.debug('响应体 JSON 解析失败，降级为状态码异常', err instanceof Error ? err.stack : err)\n      }\n      throw createExceptionByStatusCode(response)\n    }\n\n    if (body !== null && typeof body === 'object' && 'error' in body) {\n      const { error } = body as { error: { code: string; message: string; details: ExceptionDetail[] } }\n      const exceptionOptions: BukaRequestExceptionOptions = {\n        code: error.code,\n        details: error.details,\n        response,\n        fatal: [401, 403, 404].includes(response.status),\n      }\n\n      if (errorDispatchers && error.code in errorDispatchers) {\n        try {\n          const ExceptionClass = errorDispatchers[error.code]\n          throw new ExceptionClass(response.status, error.message, exceptionOptions)\n        } catch (caught) {\n          if (debug) {\n            logger.debug(\n              '自定义异常派发失败，降级为 BukaRequestException',\n              caught instanceof Error ? caught.stack : caught,\n            )\n          }\n        }\n      }\n\n      throw new BukaRequestException(response.status, error.message, exceptionOptions)\n    }\n\n    throw createExceptionByStatusCode(response)\n  }\n\n  middleware.__keqMiddlewareName__ = 'throwOnResponseError'\n  return middleware\n}\n"],"mappings":"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"}