// This file is auto-generated by @hey-api/openapi-ts

export const AbpLoginResultSchema = {
    type: 'object',
    properties: {
        result: {
            '$ref': '#/components/schemas/LoginResultType'
        },
        description: {
            type: 'string',
            nullable: true,
            readOnly: true
        }
    },
    additionalProperties: false
} as const;

export const AccessTypeEnumSchema = {
    enum: ['DeviceDirectConnection', 'GatewayAccess', 'CloudAccess', 'FiveGCustomNetwork'],
    type: 'string'
} as const;

export const ActionApiDescriptionModelSchema = {
    type: 'object',
    properties: {
        uniqueName: {
            type: 'string',
            nullable: true
        },
        name: {
            type: 'string',
            nullable: true
        },
        httpMethod: {
            type: 'string',
            nullable: true
        },
        url: {
            type: 'string',
            nullable: true
        },
        supportedVersions: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        parametersOnMethod: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/MethodParameterApiDescriptionModel'
            },
            nullable: true
        },
        parameters: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/ParameterApiDescriptionModel'
            },
            nullable: true
        },
        returnValue: {
            '$ref': '#/components/schemas/ReturnValueApiDescriptionModel'
        },
        allowAnonymous: {
            type: 'boolean',
            nullable: true
        },
        authorizeDatas: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/AuthorizeDataApiDescriptionModel'
            },
            nullable: true
        },
        implementFrom: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const AddOrUpdateConnectionStringInputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: 'id',
            format: 'uuid'
        },
        name: {
            type: 'string',
            description: '连接字符串名称',
            nullable: true
        },
        value: {
            type: 'string',
            description: '连接字符串地址',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const AddRoleToOrganizationUnitInputSchema = {
    type: 'object',
    properties: {
        roleId: {
            type: 'array',
            items: {
                type: 'string',
                format: 'uuid'
            },
            nullable: true
        },
        organizationUnitId: {
            type: 'string',
            format: 'uuid'
        }
    },
    additionalProperties: false
} as const;

export const AddUserToOrganizationUnitInputSchema = {
    type: 'object',
    properties: {
        userId: {
            type: 'array',
            items: {
                type: 'string',
                format: 'uuid'
            },
            nullable: true
        },
        organizationUnitId: {
            type: 'string',
            format: 'uuid'
        }
    },
    additionalProperties: false
} as const;

export const AggregateRouteConfigSchema = {
    type: 'object',
    properties: {
        routeKey: {
            type: 'string',
            nullable: true
        },
        parameter: {
            type: 'string',
            nullable: true
        },
        jsonPath: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const AllPlatformThingModelOutputSchema = {
    type: 'object',
    properties: {
        standardFieldName: {
            type: 'string',
            description: '管理后台产品标准的物模型属性或者事件名称',
            nullable: true
        },
        standardFieldDisplayName: {
            type: 'string',
            description: '标准物模型字段显示名称',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '平台端物模型输出'
} as const;

export const ApplicationApiDescriptionModelSchema = {
    type: 'object',
    properties: {
        modules: {
            type: 'object',
            additionalProperties: {
                '$ref': '#/components/schemas/ModuleApiDescriptionModel'
            },
            nullable: true
        },
        types: {
            type: 'object',
            additionalProperties: {
                '$ref': '#/components/schemas/TypeApiDescriptionModel'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ApplicationApiDescriptionModelRequestDtoSchema = {
    type: 'object',
    properties: {
        includeTypes: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const ApplicationAuthConfigurationDtoSchema = {
    type: 'object',
    properties: {
        grantedPolicies: {
            type: 'object',
            additionalProperties: {
                type: 'boolean'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ApplicationConfigurationDtoSchema = {
    type: 'object',
    properties: {
        localization: {
            '$ref': '#/components/schemas/ApplicationLocalizationConfigurationDto'
        },
        auth: {
            '$ref': '#/components/schemas/ApplicationAuthConfigurationDto'
        },
        setting: {
            '$ref': '#/components/schemas/ApplicationSettingConfigurationDto'
        },
        currentUser: {
            '$ref': '#/components/schemas/CurrentUserDto'
        },
        features: {
            '$ref': '#/components/schemas/ApplicationFeatureConfigurationDto'
        },
        globalFeatures: {
            '$ref': '#/components/schemas/ApplicationGlobalFeatureConfigurationDto'
        },
        multiTenancy: {
            '$ref': '#/components/schemas/MultiTenancyInfoDto'
        },
        currentTenant: {
            '$ref': '#/components/schemas/CurrentTenantDto'
        },
        timing: {
            '$ref': '#/components/schemas/TimingDto'
        },
        clock: {
            '$ref': '#/components/schemas/ClockDto'
        },
        objectExtensions: {
            '$ref': '#/components/schemas/ObjectExtensionsDto'
        },
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ApplicationConfigurationRequestOptionsSchema = {
    type: 'object',
    properties: {
        includeLocalizationResources: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const ApplicationFeatureConfigurationDtoSchema = {
    type: 'object',
    properties: {
        values: {
            type: 'object',
            additionalProperties: {
                type: 'string',
                nullable: true
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ApplicationGlobalFeatureConfigurationDtoSchema = {
    type: 'object',
    properties: {
        enabledFeatures: {
            uniqueItems: true,
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ApplicationLocalizationConfigurationDtoSchema = {
    type: 'object',
    properties: {
        values: {
            type: 'object',
            additionalProperties: {
                type: 'object',
                additionalProperties: {
                    type: 'string'
                }
            },
            nullable: true
        },
        resources: {
            type: 'object',
            additionalProperties: {
                '$ref': '#/components/schemas/ApplicationLocalizationResourceDto'
            },
            nullable: true
        },
        languages: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/LanguageInfo'
            },
            nullable: true
        },
        currentCulture: {
            '$ref': '#/components/schemas/CurrentCultureDto'
        },
        defaultResourceName: {
            type: 'string',
            nullable: true
        },
        languagesMap: {
            type: 'object',
            additionalProperties: {
                type: 'array',
                items: {
                    '$ref': '#/components/schemas/NameValue'
                }
            },
            nullable: true
        },
        languageFilesMap: {
            type: 'object',
            additionalProperties: {
                type: 'array',
                items: {
                    '$ref': '#/components/schemas/NameValue'
                }
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ApplicationLocalizationDtoSchema = {
    type: 'object',
    properties: {
        resources: {
            type: 'object',
            additionalProperties: {
                '$ref': '#/components/schemas/ApplicationLocalizationResourceDto'
            },
            nullable: true
        },
        currentCulture: {
            '$ref': '#/components/schemas/CurrentCultureDto'
        }
    },
    additionalProperties: false
} as const;

export const ApplicationLocalizationRequestDtoSchema = {
    required: ['cultureName'],
    type: 'object',
    properties: {
        cultureName: {
            minLength: 1,
            type: 'string'
        },
        onlyDynamics: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const ApplicationLocalizationResourceDtoSchema = {
    type: 'object',
    properties: {
        texts: {
            type: 'object',
            additionalProperties: {
                type: 'string'
            },
            nullable: true
        },
        baseResources: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ApplicationOidcConfigurationDtoSchema = {
    type: 'object',
    properties: {
        enabled: {
            type: 'boolean',
            description: '是否启用'
        },
        oidcConfiguration: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/OidcConfiguration'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ApplicationSettingConfigurationDtoSchema = {
    type: 'object',
    properties: {
        values: {
            type: 'object',
            additionalProperties: {
                type: 'string',
                nullable: true
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const AuthTypeEnumSchema = {
    enum: ['FeatureStringAuth', 'SM9Auth', 'CertificateAuth', 'IMEIAuth', 'SM2Auth', 'IPv6IdentityAuth', 'HttpBasicAuth', 'HttpDigestAuth'],
    type: 'string'
} as const;

export const AuthorizeDataApiDescriptionModelSchema = {
    type: 'object',
    properties: {
        policy: {
            type: 'string',
            nullable: true
        },
        roles: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const BatchCreateDeviceAggregationInputSchema = {
    required: ['addressList', 'ioTPlatform', 'ioTPlatformProductId'],
    type: 'object',
    properties: {
        addressList: {
            type: 'array',
            items: {
                type: 'string'
            },
            description: '设备地址不能为空'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '集中器在物联网平台中对应的产品Id'
        },
        deviceSourceType: {
            '$ref': '#/components/schemas/DeviceSourceTypeEnum'
        },
        deviceType: {
            '$ref': '#/components/schemas/DeviceTypeEnum'
        },
        encryptionType: {
            '$ref': '#/components/schemas/DeviceAuthenticationModeEnum'
        }
    },
    additionalProperties: false,
    description: '批量创建设备信息'
} as const;

export const BatchDeleteDeviceForApiInputSchema = {
    required: ['addressList', 'ioTPlatform', 'ioTPlatformProductId'],
    type: 'object',
    properties: {
        addressList: {
            type: 'array',
            items: {
                type: 'string'
            },
            description: '设备地址列表'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品Id'
        }
    },
    additionalProperties: false,
    description: '批量删除设备入参（只对同一平台、同一产品下的设备批量删除）'
} as const;

export const BatchSyncDeviceFromOneNETInputSchema = {
    required: ['ioTPlatform', 'ioTPlatformProductId'],
    type: 'object',
    properties: {
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品Id'
        },
        deviceAddresses: {
            type: 'array',
            items: {
                type: 'string'
            },
            description: `要同步的设备地址列表（可选）。指定时只处理选中的设备，不按同步状态过滤；
未指定则同步该产品下所有 IsPlatformPushSuccess == false 的设备。`,
            nullable: true
        }
    },
    additionalProperties: false,
    description: '从OneNET批量查询设备并同步本地'
} as const;

export const BatchUpdateStatusInputSchema = {
    required: ['ids', 'upgradeStatus'],
    type: 'object',
    properties: {
        ids: {
            type: 'array',
            items: {
                type: 'string',
                format: 'uuid'
            },
            description: '设备升级记录Id集合'
        },
        upgradeStatus: {
            '$ref': '#/components/schemas/DeviceUpgradeStatusTypeEnum'
        }
    },
    additionalProperties: false,
    description: '批量更新设备升级记录状态信息输入'
} as const;

export const BindingDeviceThingModelInputSchema = {
    type: 'object',
    properties: {
        devieDataIdList: {
            type: 'array',
            items: {
                type: 'string',
                format: 'uuid'
            },
            description: '设备数据Id集合',
            nullable: true
        },
        isNeedConfigDeviceModel: {
            type: 'boolean',
            description: '是否需要配置设备模型，默认false'
        },
        deviceThingModelDataId: {
            type: 'string',
            description: '设备物模型数据Id',
            format: 'uuid',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '绑定设备物模型输入'
} as const;

export const BuildAnalysisScriptInputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '物模型数据Id',
            format: 'uuid'
        },
        scriptName: {
            type: 'string',
            description: '脚本函数名称',
            nullable: true
        },
        functionScript: {
            type: 'string',
            description: '脚本函数体',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '构建物模型脚本输入'
} as const;

export const BuildAnalysisScriptOutputSchema = {
    type: 'object',
    properties: {
        functionName: {
            type: 'string',
            description: '函数名称',
            nullable: true
        },
        functionCode: {
            type: 'string',
            description: '函数代码',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '构建物模型脚本输出'
} as const;

export const CTWingAccountInfoDtoSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        },
        creatorId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        lastModificationTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        lastModifierId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        isDeleted: {
            type: 'boolean'
        },
        deleterId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        deletionTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        tenantId: {
            type: 'string',
            description: '租户Id',
            format: 'uuid',
            nullable: true
        },
        remark: {
            type: 'string',
            description: '备注',
            nullable: true
        },
        osaCreatorId: {
            type: 'integer',
            description: '旧系统授权创建者Id',
            format: 'int32',
            nullable: true
        },
        osaLastModifierId: {
            type: 'integer',
            description: '旧系统授权最后修改者Id',
            format: 'int32',
            nullable: true
        },
        osaDeleterId: {
            type: 'integer',
            description: '旧系统授权最后删除者Id',
            format: 'int32',
            nullable: true
        },
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            description: '扩展属性,用于存储自定义字段,JSON格式',
            nullable: true
        },
        accountName: {
            type: 'string',
            description: '账号名称',
            nullable: true
        },
        accountId: {
            type: 'string',
            description: '账号ID',
            nullable: true
        },
        appId: {
            type: 'string',
            description: '应用 ID，最小单位，唯一标识，因为一个账号下可能存在多个应用',
            nullable: true
        },
        appKey: {
            type: 'string',
            description: '应用 AppKey',
            nullable: true
        },
        appSecret: {
            type: 'string',
            description: '应用 AppSecret',
            nullable: true
        },
        platformTenantId: {
            type: 'string',
            description: '平台租户ID',
            nullable: true
        },
        communicationAddress: {
            type: 'string',
            description: '通讯服务地址',
            nullable: true
        },
        phoneNumber: {
            type: 'string',
            description: '手机号码',
            nullable: true
        },
        productCount: {
            type: 'integer',
            description: '产品数量',
            format: 'int32'
        }
    },
    additionalProperties: false,
    description: 'CTWing账号信息'
} as const;

export const CTWingAccountInfoDtoPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/CTWingAccountInfoDto'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const CTWingAccountInsertInputSchema = {
    required: ['accountId', 'appId', 'appKey', 'appSecret', 'communicationAddress', 'phoneNumber', 'platformTenantId'],
    type: 'object',
    properties: {
        accountName: {
            type: 'string',
            description: '账号名称',
            nullable: true
        },
        accountId: {
            minLength: 1,
            type: 'string',
            description: '账号ID'
        },
        appId: {
            minLength: 1,
            type: 'string',
            description: '应用 ID，最小单位，唯一标识，因为一个账号下可能存在多个应用'
        },
        appKey: {
            minLength: 1,
            type: 'string',
            description: '应用 AppKey'
        },
        appSecret: {
            minLength: 1,
            type: 'string',
            description: '应用 AppSecret'
        },
        platformTenantId: {
            minLength: 1,
            type: 'string',
            description: '平台租户ID'
        },
        communicationAddress: {
            minLength: 1,
            type: 'string',
            description: '通讯服务地址'
        },
        phoneNumber: {
            minLength: 1,
            type: 'string',
            description: '手机号码'
        }
    },
    additionalProperties: false,
    description: '添加账号'
} as const;

export const CTWingAccountListInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        phoneNumber: {
            type: 'string',
            description: '手机号码',
            nullable: true
        },
        ctWingAccountId: {
            type: 'string',
            description: '账号ID',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '账号列表输入参数'
} as const;

export const CTWingAccountModifyInputSchema = {
    required: ['accountId', 'appId', 'appKey', 'appSecret', 'communicationAddress', 'phoneNumber', 'platformTenantId'],
    type: 'object',
    properties: {
        accountName: {
            type: 'string',
            description: '账号名称',
            nullable: true
        },
        accountId: {
            minLength: 1,
            type: 'string',
            description: '账号ID'
        },
        appId: {
            minLength: 1,
            type: 'string',
            description: '应用 ID，最小单位，唯一标识，因为一个账号下可能存在多个应用'
        },
        appKey: {
            minLength: 1,
            type: 'string',
            description: '应用 AppKey'
        },
        appSecret: {
            minLength: 1,
            type: 'string',
            description: '应用 AppSecret'
        },
        platformTenantId: {
            minLength: 1,
            type: 'string',
            description: '平台租户ID'
        },
        communicationAddress: {
            minLength: 1,
            type: 'string',
            description: '通讯服务地址'
        },
        phoneNumber: {
            minLength: 1,
            type: 'string',
            description: '手机号码'
        },
        id: {
            type: 'string',
            description: '数据ID',
            format: 'uuid'
        }
    },
    additionalProperties: false,
    description: '修改账号信息'
} as const;

export const CTWingPrivateProductInfoDtoSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        },
        creatorId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        lastModificationTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        lastModifierId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        isDeleted: {
            type: 'boolean'
        },
        deleterId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        deletionTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        tenantId: {
            type: 'string',
            description: '租户Id',
            format: 'uuid',
            nullable: true
        },
        remark: {
            type: 'string',
            description: '备注',
            nullable: true
        },
        osaCreatorId: {
            type: 'integer',
            description: '旧系统授权创建者Id',
            format: 'int32',
            nullable: true
        },
        osaLastModifierId: {
            type: 'integer',
            description: '旧系统授权最后修改者Id',
            format: 'int32',
            nullable: true
        },
        osaDeleterId: {
            type: 'integer',
            description: '旧系统授权最后删除者Id',
            format: 'int32',
            nullable: true
        },
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            description: '扩展属性,用于存储自定义字段,JSON格式',
            nullable: true
        },
        ctWingAccountId: {
            type: 'string',
            description: '账号ID',
            nullable: true
        },
        accountPhoneNumber: {
            type: 'string',
            description: '账户手机号',
            nullable: true
        },
        ctWingAccountName: {
            type: 'string',
            description: '账号名称',
            nullable: true
        },
        communicationAddress: {
            type: 'string',
            description: '通讯服务地址',
            nullable: true
        },
        masterKey: {
            type: 'string',
            description: 'OpenAPI 通信主密钥',
            nullable: true
        },
        featureAccesskey: {
            type: 'string',
            description: '设备访问密钥',
            nullable: true
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '产品ID',
            nullable: true
        },
        productName: {
            type: 'string',
            description: '产品名称',
            nullable: true
        },
        protocol: {
            type: 'string',
            description: '通讯协议',
            nullable: true
        },
        productDesc: {
            type: 'string',
            description: '必填，产品描述',
            nullable: true
        },
        productType: {
            type: 'string',
            description: '必填，一级分类名，返回结果中，此字段名数据类型为Int类型',
            nullable: true
        },
        secondaryType: {
            type: 'string',
            description: '必填，二级分类名，返回结果中，此字段名数据类型为Int类型',
            nullable: true
        },
        thirdType: {
            type: 'string',
            description: '必填，三级分类名，返回结果中，此字段名数据类型为Int类型',
            nullable: true
        },
        nodeType: {
            '$ref': '#/components/schemas/ProductNodeTypeEnum'
        },
        accessType: {
            '$ref': '#/components/schemas/AccessTypeEnum'
        },
        networkType: {
            '$ref': '#/components/schemas/NetworkTypeEnum'
        },
        productProtocol: {
            '$ref': '#/components/schemas/ProductProtocolEnum'
        },
        authType: {
            '$ref': '#/components/schemas/AuthTypeEnum'
        },
        dataEncryption: {
            '$ref': '#/components/schemas/DataEncryptionEnum'
        },
        tupIsThrough: {
            '$ref': '#/components/schemas/TupIsThroughEnum'
        },
        tupDeviceModel: {
            type: 'string',
            description: '必填，设备型号',
            nullable: true
        },
        deviceCount: {
            type: 'integer',
            description: '设备数量',
            format: 'int32'
        },
        thingModelFileId: {
            type: 'string',
            description: '物模型文件Id',
            format: 'uuid',
            nullable: true
        },
        thingModelFileName: {
            type: 'string',
            description: '物模型文件名称',
            nullable: true
        },
        isEnabled: {
            type: 'boolean',
            description: '是否启用'
        }
    },
    additionalProperties: false,
    description: 'CTWing私有产品信息'
} as const;

export const CTWingPrivateProductInfoDtoPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/CTWingPrivateProductInfoDto'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const CTWingPrivateProductInfoInsertInputSchema = {
    type: 'object',
    properties: {
        ctWingAccountId: {
            type: 'string',
            description: '账号ID',
            nullable: true
        },
        productName: {
            type: 'string',
            description: '产品名称',
            nullable: true
        },
        productDesc: {
            type: 'string',
            description: '必填，产品描述',
            nullable: true
        },
        thingModelFileId: {
            type: 'string',
            description: '物模型文件Id',
            format: 'uuid',
            nullable: true
        },
        thingModelFileName: {
            type: 'string',
            description: '物模型文件名称',
            nullable: true
        },
        tupDeviceModel: {
            type: 'string',
            description: '必填，设备型号',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '添加私有产品信息'
} as const;

export const CTWingPrivateProductInfoListInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        ctWingAccountId: {
            type: 'string',
            description: 'CTWing账户Id',
            nullable: true
        },
        productName: {
            type: 'string',
            description: '产品名称',
            nullable: true
        },
        model: {
            type: 'string',
            description: '产品型号',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const CTWingPrivateProductInfoModifyInputSchema = {
    type: 'object',
    properties: {
        ctWingAccountId: {
            type: 'string',
            description: '账号ID',
            nullable: true
        },
        productName: {
            type: 'string',
            description: '产品名称',
            nullable: true
        },
        productDesc: {
            type: 'string',
            description: '必填，产品描述',
            nullable: true
        },
        thingModelFileId: {
            type: 'string',
            description: '物模型文件Id',
            format: 'uuid',
            nullable: true
        },
        thingModelFileName: {
            type: 'string',
            description: '物模型文件名称',
            nullable: true
        },
        tupDeviceModel: {
            type: 'string',
            description: '必填，设备型号',
            nullable: true
        },
        id: {
            type: 'string',
            description: '数据ID',
            format: 'uuid'
        }
    },
    additionalProperties: false,
    description: 'CTWing 产品修改'
} as const;

export const CallDeviceServiceForApiInputSchema = {
    required: ['id', 'serviceName', 'serviceParams'],
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        serviceName: {
            minLength: 1,
            type: 'string',
            description: '服务名称，标准物模型名称，例如: MonthFreezeService'
        },
        serviceParams: {
            type: 'object',
            additionalProperties: {
                nullable: true
            },
            description: '服务参数，标准物模型扩展字段中的InputData内容, 例如：{"DataItem": "数据项", "Quantity": "数量", "StartTime": "起始时标"}'
        }
    },
    additionalProperties: false,
    description: '调用设备服务入参'
} as const;

export const ChangePasswordInputSchema = {
    required: ['newPassword'],
    type: 'object',
    properties: {
        currentPassword: {
            maxLength: 128,
            minLength: 0,
            type: 'string',
            nullable: true
        },
        newPassword: {
            maxLength: 128,
            minLength: 0,
            type: 'string'
        }
    },
    additionalProperties: false
} as const;

export const ClockDtoSchema = {
    type: 'object',
    properties: {
        kind: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ControllerApiDescriptionModelSchema = {
    type: 'object',
    properties: {
        controllerName: {
            type: 'string',
            nullable: true
        },
        controllerGroupName: {
            type: 'string',
            nullable: true
        },
        isRemoteService: {
            type: 'boolean'
        },
        isIntegrationService: {
            type: 'boolean'
        },
        apiVersion: {
            type: 'string',
            nullable: true
        },
        type: {
            type: 'string',
            nullable: true
        },
        interfaces: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/ControllerInterfaceApiDescriptionModel'
            },
            nullable: true
        },
        actions: {
            type: 'object',
            additionalProperties: {
                '$ref': '#/components/schemas/ActionApiDescriptionModel'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ControllerInterfaceApiDescriptionModelSchema = {
    type: 'object',
    properties: {
        type: {
            type: 'string',
            nullable: true
        },
        name: {
            type: 'string',
            nullable: true
        },
        methods: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/InterfaceMethodApiDescriptionModel'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const CopyAnotherDeviceInputSchema = {
    type: 'object',
    properties: {
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        deviceThingModelId: {
            type: 'string',
            description: '当前设备端物模型数据Id',
            format: 'uuid'
        },
        sourceProductId: {
            type: 'string',
            description: '源设备模型数据ID',
            format: 'uuid'
        }
    },
    additionalProperties: false,
    description: '复制已存在设备端物模型信息'
} as const;

export const CopyAnotherProductInputSchema = {
    type: 'object',
    properties: {
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '平台产品ID',
            nullable: true
        },
        sourceProductId: {
            type: 'string',
            description: '源产品ID',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '复制已存在产品设备物模型信息'
} as const;

export const CopyIoTPlatformThingModelToDeviceInputSchema = {
    required: ['deviceThingModelId', 'filedTypes', 'ioTPlatform', 'ioTPlatformProductId'],
    type: 'object',
    properties: {
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        filedTypes: {
            type: 'array',
            items: {
                type: 'string'
            },
            description: '物联网平台中对应产品物模型属性或者事件类型 JiShe.ServicePro.Core.DataDictionaryTypeConst'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品Id'
        },
        deviceThingModelId: {
            type: 'string',
            description: '当前设备端物模型数据Id',
            format: 'uuid'
        }
    },
    additionalProperties: false,
    description: '通过平台端物模型快速创建设备端物模型信息'
} as const;

export const CopyStandardThingModelInputSchema = {
    required: ['filedTypes', 'ioTPlatform', 'ioTPlatformProductId'],
    type: 'object',
    properties: {
        filedTypes: {
            type: 'array',
            items: {
                type: 'string'
            },
            description: '物联网平台中对应产品物模型属性或者事件类型 JiShe.ServicePro.Core.DataDictionaryTypeConst'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '平台产品ID'
        },
        dataDictionaries: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/DataDictionaryDetailInfoDto'
            },
            description: '标准物模型集合',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '复制标准物模型'
} as const;

export const CreateDataDictinaryDetailInputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        code: {
            type: 'string',
            nullable: true
        },
        displayText: {
            type: 'string',
            nullable: true
        },
        description: {
            type: 'string',
            nullable: true
        },
        order: {
            type: 'integer',
            format: 'int32'
        },
        extendedAttribute: {
            type: 'string',
            description: '扩展属性',
            nullable: true
        },
        extendedAttributeValue: {
            type: 'object',
            additionalProperties: {},
            description: '扩展属性值信息',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const CreateDataDictinaryInputSchema = {
    type: 'object',
    properties: {
        code: {
            type: 'string',
            nullable: true
        },
        displayText: {
            type: 'string',
            nullable: true
        },
        description: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const CreateDeviceAggregationInputSchema = {
    required: ['deviceAddress', 'ioTPlatform', 'ioTPlatformProductId'],
    type: 'object',
    properties: {
        deviceAddress: {
            minLength: 1,
            type: 'string',
            description: '表通信地址'
        },
        deviceInfos: {
            '$ref': '#/components/schemas/OpenApiDeviceInfoInput'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '设备在物联网平台中对应的产品Id'
        },
        deviceSourceType: {
            '$ref': '#/components/schemas/DeviceSourceTypeEnum'
        },
        deviceType: {
            '$ref': '#/components/schemas/DeviceTypeEnum'
        },
        encryptionType: {
            '$ref': '#/components/schemas/DeviceAuthenticationModeEnum'
        }
    },
    additionalProperties: false,
    description: '设备聚合新增设备'
} as const;

export const CreateDeviceFirmwareInfoInputSchema = {
    required: ['firmwareFileId', 'firmwareFileName', 'firmwareHashCode', 'firmwareLength', 'firmwareVersion', 'ioTPlatform', 'ioTPlatformProductId', 'ioTPlatformProductName'],
    type: 'object',
    properties: {
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品Id'
        },
        ioTPlatformProductName: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品名称'
        },
        firmwareVersion: {
            minLength: 1,
            type: 'string',
            description: '固件版本'
        },
        firmwareFileId: {
            type: 'string',
            description: '固件文件Id',
            format: 'uuid'
        },
        firmwareFileName: {
            minLength: 1,
            type: 'string',
            description: '固件文件名称'
        },
        firmwareHashCode: {
            minLength: 1,
            type: 'string',
            description: '固件哈希值'
        },
        firmwareLength: {
            type: 'integer',
            description: '固件文件长度',
            format: 'int64'
        }
    },
    additionalProperties: false,
    description: '创建设备固件信息'
} as const;

export const CreateLanguageInputSchema = {
    type: 'object',
    properties: {
        cultureName: {
            type: 'string',
            description: '语言名称',
            nullable: true
        },
        uiCultureName: {
            type: 'string',
            description: 'Ui语言名称',
            nullable: true
        },
        displayName: {
            type: 'string',
            description: '显示名称',
            nullable: true
        },
        flagIcon: {
            type: 'string',
            description: '图标',
            nullable: true
        },
        isEnabled: {
            type: 'boolean',
            description: '是否启用'
        }
    },
    additionalProperties: false,
    description: '创建语言'
} as const;

export const CreateLanguageTextInputSchema = {
    type: 'object',
    properties: {
        resourceName: {
            type: 'string',
            description: '资源名称',
            nullable: true
        },
        cultureName: {
            type: 'string',
            description: '语言名称',
            nullable: true
        },
        name: {
            type: 'string',
            description: '名称',
            nullable: true
        },
        value: {
            type: 'string',
            description: '值',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '创建语言文本'
} as const;

export const CreateMenuInputSchema = {
    required: ['hideInMenu', 'keepAlive', 'name', 'order', 'path', 'title'],
    type: 'object',
    properties: {
        parentId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        name: {
            minLength: 1,
            type: 'string',
            description: '唯一编码'
        },
        title: {
            minLength: 1,
            type: 'string',
            description: '标题'
        },
        displayTitle: {
            type: 'string',
            description: '标题',
            nullable: true
        },
        icon: {
            type: 'string',
            description: '图标',
            nullable: true
        },
        keepAlive: {
            type: 'boolean',
            description: '是否缓存'
        },
        hideInMenu: {
            type: 'boolean',
            description: '是否显示'
        },
        order: {
            type: 'integer',
            description: '排序',
            format: 'int32'
        },
        path: {
            minLength: 1,
            type: 'string',
            description: '路由地址'
        },
        menuType: {
            '$ref': '#/components/schemas/MenuType'
        },
        openType: {
            '$ref': '#/components/schemas/OpenType'
        },
        url: {
            type: 'string',
            description: '内外链地址',
            nullable: true
        },
        component: {
            type: 'string',
            description: '组件地址',
            nullable: true
        },
        enabled: {
            type: 'boolean',
            description: '是否启用'
        },
        policy: {
            type: 'string',
            description: '权限',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '创建菜单'
} as const;

export const CreateOrganizationUnitInputSchema = {
    type: 'object',
    properties: {
        displayName: {
            type: 'string',
            nullable: true
        },
        parentId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const CreatePlatformThingModelCommandInputSchema = {
    required: ['issueCommand', 'operateType', 'thingModelDataId'],
    type: 'object',
    properties: {
        thingModelDataId: {
            type: 'string',
            description: '平台端物模型数据Id',
            format: 'uuid'
        },
        operateType: {
            type: 'integer',
            description: '待下发的操作指令类型，例如阀控操作时，是拉闸还是合闸，根据StandardFieldName进行分组',
            format: 'int32'
        },
        issueCommand: {
            minLength: 1,
            type: 'string',
            description: '完整透明转发指令'
        }
    },
    additionalProperties: false,
    description: '新增平台端物模型操作指令'
} as const;

export const CreateTextTemplateInputSchema = {
    required: ['code', 'content', 'cultureName', 'name'],
    type: 'object',
    properties: {
        name: {
            minLength: 1,
            type: 'string',
            description: '名称'
        },
        code: {
            minLength: 1,
            type: 'string',
            description: '编码'
        },
        content: {
            minLength: 1,
            type: 'string',
            description: '内容'
        },
        cultureName: {
            minLength: 1,
            type: 'string',
            description: '语言'
        }
    },
    additionalProperties: false,
    description: '创建模板'
} as const;

export const CurrentCultureDtoSchema = {
    type: 'object',
    properties: {
        displayName: {
            type: 'string',
            nullable: true
        },
        englishName: {
            type: 'string',
            nullable: true
        },
        threeLetterIsoLanguageName: {
            type: 'string',
            nullable: true
        },
        twoLetterIsoLanguageName: {
            type: 'string',
            nullable: true
        },
        isRightToLeft: {
            type: 'boolean'
        },
        cultureName: {
            type: 'string',
            nullable: true
        },
        name: {
            type: 'string',
            nullable: true
        },
        nativeName: {
            type: 'string',
            nullable: true
        },
        dateTimeFormat: {
            '$ref': '#/components/schemas/DateTimeFormatDto'
        }
    },
    additionalProperties: false
} as const;

export const CurrentTenantDtoSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        name: {
            type: 'string',
            nullable: true
        },
        isAvailable: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const CurrentUserDtoSchema = {
    type: 'object',
    properties: {
        isAuthenticated: {
            type: 'boolean'
        },
        id: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        tenantId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        impersonatorUserId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        impersonatorTenantId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        impersonatorUserName: {
            type: 'string',
            nullable: true
        },
        impersonatorTenantName: {
            type: 'string',
            nullable: true
        },
        userName: {
            type: 'string',
            nullable: true
        },
        name: {
            type: 'string',
            nullable: true
        },
        surName: {
            type: 'string',
            nullable: true
        },
        email: {
            type: 'string',
            nullable: true
        },
        emailVerified: {
            type: 'boolean'
        },
        phoneNumber: {
            type: 'string',
            nullable: true
        },
        phoneNumberVerified: {
            type: 'boolean'
        },
        roles: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        sessionId: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const DataDictionaryDetailInfoDtoSchema = {
    type: 'object',
    properties: {
        dataDictionaryId: {
            type: 'string',
            description: '所属字典Id',
            format: 'uuid'
        },
        dataDictionaryName: {
            type: 'string',
            description: '所属字典名称',
            nullable: true
        },
        dataDictionaryCode: {
            type: 'string',
            description: '字典编码',
            nullable: true
        },
        code: {
            type: 'string',
            description: '字典明细编码',
            nullable: true
        },
        order: {
            type: 'integer',
            description: '展现列表时排序用',
            format: 'int32'
        },
        displayText: {
            type: 'string',
            description: '显示名',
            nullable: true
        },
        description: {
            type: 'string',
            description: '描述',
            nullable: true
        },
        isEnabled: {
            type: 'boolean',
            description: '启/停用(默认启用)'
        },
        extendedAttribute: {
            type: 'string',
            description: '扩展属性',
            nullable: true
        },
        extendedAttributeValue: {
            type: 'object',
            additionalProperties: {},
            description: '扩展属性值信息',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '数据字典详情信息'
} as const;

export const DataEncryptionEnumSchema = {
    enum: ['SM1', 'SM2', 'SM4', 'DTLS', 'Plaintext', 'QuantumEncryption'],
    type: 'string',
    description: '数据加密方式'
} as const;

export const DataPushDataTypeEnumSchema = {
    enum: ['Property', 'Event', 'Status'],
    type: 'string',
    description: '数据推送的数据类型枚举（区分推送规则作用于哪一类上报数据）'
} as const;

export const DataPushRuleSchema = {
    type: 'object',
    properties: {
        ruleName: {
            type: 'string',
            description: '规则备注名，便于管理（可空）',
            nullable: true
        },
        enabled: {
            type: 'boolean',
            description: '是否启用该条规则'
        },
        dataType: {
            '$ref': '#/components/schemas/DataPushDataTypeEnum'
        },
        includeNames: {
            type: 'array',
            items: {
                type: 'string'
            },
            description: `【冗余保留，暂未启用】更细粒度的白名单（属性→字段名；事件/状态→事件名）。
当前推送粒度只到"属性/事件/状态"三类，整类整包推送；本字段留待后续细化，前端不填即可（留空 = 该数据类型整类整包推）。`,
            nullable: true
        },
        pushType: {
            '$ref': '#/components/schemas/DataPushTypeEnum'
        },
        pushServer: {
            type: 'string',
            description: '推送服务地址，例如 HTTP：http://192.168.1.1:8080，Redis：192.168.1.1:6379',
            nullable: true
        },
        pushInfo: {
            type: 'string',
            description: '推送信息：HTTP 为推送路径，Redis 为主题或 key',
            nullable: true
        }
    },
    additionalProperties: false,
    description: `数据推送规则：一条规则 = "数据类型 + 目的地"。
粒度仅到属性/事件/状态三类，整类推或不推；同一数据类型的多个目的地用多条规则表达，天然支持分流。
供产品实体、设备实体、DeviceCacheInfos、Application DTO 共用（以 JSON 序列化存储）。`
} as const;

export const DataPushTypeEnumSchema = {
    enum: ['HttpPost', 'NormalReisSubscription', 'ReliableReisSubscription', 'RedisListPush'],
    type: 'string',
    description: '数据推送类型枚举'
} as const;

export const DateTimeFormatDtoSchema = {
    type: 'object',
    properties: {
        calendarAlgorithmType: {
            type: 'string',
            nullable: true
        },
        dateTimeFormatLong: {
            type: 'string',
            nullable: true
        },
        shortDatePattern: {
            type: 'string',
            nullable: true
        },
        fullDateTimePattern: {
            type: 'string',
            nullable: true
        },
        dateSeparator: {
            type: 'string',
            nullable: true
        },
        shortTimePattern: {
            type: 'string',
            nullable: true
        },
        longTimePattern: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const DeleteConnectionStringInputSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            description: '连接字符串名称',
            nullable: true
        },
        tenantId: {
            type: 'string',
            description: '租户id',
            format: 'uuid'
        }
    },
    additionalProperties: false
} as const;

export const DeleteDataDictionaryDetailInputSchema = {
    type: 'object',
    properties: {
        dataDictionaryId: {
            type: 'string',
            format: 'uuid'
        },
        dataDictionayDetailId: {
            type: 'string',
            format: 'uuid'
        }
    },
    additionalProperties: false
} as const;

export const DeleteFeatureInputSchema = {
    type: 'object',
    properties: {
        providerName: {
            type: 'string',
            nullable: true
        },
        providerKey: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const DeleteFileObjectInputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '文件Id',
            format: 'uuid'
        }
    },
    additionalProperties: false,
    description: '删除文件'
} as const;

export const DeleteLanguageInputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '语言Id',
            format: 'uuid'
        }
    },
    additionalProperties: false,
    description: '删除语言'
} as const;

export const DeleteMenuInputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '菜单Id',
            format: 'uuid'
        }
    },
    additionalProperties: false,
    description: '删除菜单'
} as const;

export const DeleteMessageInputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        receiverUserId: {
            type: 'string',
            description: '接受者Id',
            format: 'uuid',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const DeleteTextTemplateInputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '模板Id',
            format: 'uuid'
        }
    },
    additionalProperties: false,
    description: '删除模板'
} as const;

export const DeviceAuthenticationModeEnumSchema = {
    enum: ['Unspecified', 'PerProductTypeSecret', 'PerDeviceSecret'],
    type: 'string',
    description: '设备鉴权模式'
} as const;

export const DeviceBatchMasterSwitchInputSchema = {
    required: ['addressList', 'backupMasterStation', 'ioTPlatform', 'ioTPlatformProductId', 'masterStation'],
    type: 'object',
    properties: {
        addressList: {
            type: 'array',
            items: {
                type: 'string'
            },
            description: '设备地址列表'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品Id'
        },
        masterStation: {
            '$ref': '#/components/schemas/MasterStationInput'
        },
        backupMasterStation: {
            '$ref': '#/components/schemas/MasterStationInput'
        }
    },
    additionalProperties: false,
    description: '设备批量切换主站入参（只对同一平台、同一产品下的设备批量下发切换主站指令）'
} as const;

export const DeviceBatchUpgradeForApiInputSchema = {
    required: ['addressList', 'ioTPlatform', 'ioTPlatformProductId', 'nowFirmwareVersionDataId'],
    type: 'object',
    properties: {
        addressList: {
            type: 'array',
            items: {
                type: 'string'
            },
            description: '设备地址列表'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品Id'
        },
        nowFirmwareVersionDataId: {
            type: 'string',
            description: '固件版本信息',
            format: 'uuid'
        },
        upgradeDescription: {
            type: 'string',
            description: '升级描述',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '设备批量升级信息'
} as const;

export const DeviceCommandForApiInputSchema = {
    required: ['commandContent', 'id'],
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        commandContent: {
            type: 'object',
            additionalProperties: {
                nullable: true
            },
            description: '设备标准物模型属性标识符参数集合'
        }
    },
    additionalProperties: false,
    description: '设备命令'
} as const;

export const DeviceDataFlowConfigInputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '设备数据ID',
            format: 'uuid'
        },
        dataPushOverride: {
            type: 'boolean',
            description: '是否覆盖产品级推送配置：true 用本设备的推送配置，false 继承所属产品配置'
        },
        isNeedPushData: {
            type: 'boolean',
            description: '是否需要推送数据（设备级开关，仅 JiShe.ServicePro.DeviceManagement.DeviceInfos.Dto.DeviceDataFlowConfigInput.DataPushOverride 为 true 时生效）'
        },
        dataPushRules: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/DataPushRule'
            },
            description: '数据推送规则集合，一条规则 = "数据类型 + 白名单 + 目的地"，仅 JiShe.ServicePro.DeviceManagement.DeviceInfos.Dto.DeviceDataFlowConfigInput.DataPushOverride 为 true 时生效',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '设备数据流转配置输入参数（设备级覆盖产品配置）'
} as const;

export const DeviceEncryptionMethodEnumSchema = {
    enum: ['Unspecified', 'MD5', 'SHA1', 'SHA256'],
    type: 'string',
    description: '设备鉴权加密方式'
} as const;

export const DeviceFirmwareInfoDtoSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        },
        creatorId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        lastModificationTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        lastModifierId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        isDeleted: {
            type: 'boolean'
        },
        deleterId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        deletionTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        tenantId: {
            type: 'string',
            description: '租户Id',
            format: 'uuid',
            nullable: true
        },
        remark: {
            type: 'string',
            description: '备注',
            nullable: true
        },
        osaCreatorId: {
            type: 'integer',
            description: '旧系统授权创建者Id',
            format: 'int32',
            nullable: true
        },
        osaLastModifierId: {
            type: 'integer',
            description: '旧系统授权最后修改者Id',
            format: 'int32',
            nullable: true
        },
        osaDeleterId: {
            type: 'integer',
            description: '旧系统授权最后删除者Id',
            format: 'int32',
            nullable: true
        },
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            description: '扩展属性,用于存储自定义字段,JSON格式',
            nullable: true
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台中对应的产品Id',
            nullable: true
        },
        ioTPlatformProductName: {
            type: 'string',
            description: '物联网平台中对应的产品名称',
            nullable: true
        },
        firmwareVersion: {
            type: 'string',
            description: '固件版本',
            nullable: true
        },
        firmwareFileId: {
            type: 'string',
            description: '固件文件Id',
            format: 'uuid'
        },
        firmwareFileName: {
            type: 'string',
            description: '固件文件名称',
            nullable: true
        },
        firmwareHashCode: {
            type: 'string',
            description: '固件哈希值',
            nullable: true
        },
        firmwareLength: {
            type: 'integer',
            description: '固件文件长度',
            format: 'int64'
        },
        isEnable: {
            type: 'boolean',
            description: '是否启用'
        }
    },
    additionalProperties: false
} as const;

export const DeviceFirmwareInfoDtoPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/DeviceFirmwareInfoDto'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const DeviceLifeTypeEnumSchema = {
    enum: ['Unspecified', 'Production', 'FactoryTest', 'AgingSource', 'FactoryDelivery', 'Running', 'Maintenance', 'ReturnToFactory', 'Deactivated', 'Banned'],
    type: 'string',
    description: `设备生命周期类型（业务运行态，与物模型上报 DataType、OneNET 连接生命周期无关）。
软件侧可见起点为 JiShe.ServicePro.Enums.DeviceLifeTypeEnum.FactoryTest：组件完成且固件烧录通过后，上位机设置运行参数并接入平台。`
} as const;

export const DeviceLoginModelSchema = {
    required: ['clientid', 'password', 'username'],
    type: 'object',
    properties: {
        clientid: {
            minLength: 1,
            type: 'string',
            description: '设备端客户端Id，也就是OneNET平台的设备名称'
        },
        deviceAddress: {
            type: 'string',
            description: '原始的设备地址（clientid 去掉 productId 前缀）',
            nullable: true,
            readOnly: true
        },
        username: {
            minLength: 1,
            type: 'string',
            description: '登录用户名，也就是OneNET平台的产品ID'
        },
        password: {
            minLength: 1,
            type: 'string',
            description: '登录密码，也就是OneNET平台的签名Token'
        }
    },
    additionalProperties: false,
    description: '设备登录（EMQX HTTP 认证回调请求体）'
} as const;

export const DeviceLoginResultSchema = {
    type: 'object',
    properties: {
        result: {
            type: 'string',
            description: '鉴权结果 JiShe.ServicePro.EMQXProvider.DeviceEMQXLoginResultConsts',
            nullable: true
        },
        is_superuser: {
            type: 'boolean',
            description: '是否超级用户'
        },
        client_attrs: {
            type: 'object',
            additionalProperties: {
                type: 'string'
            },
            description: '设备属性（键值均为字符串）',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '设备登录结果（EMQX HTTP 认证回调响应体）'
} as const;

export const DeviceManagementInfoDtoSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        },
        creatorId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        lastModificationTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        lastModifierId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        isDeleted: {
            type: 'boolean'
        },
        deleterId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        deletionTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        tenantId: {
            type: 'string',
            description: '租户Id',
            format: 'uuid',
            nullable: true
        },
        remark: {
            type: 'string',
            description: '备注',
            nullable: true
        },
        osaCreatorId: {
            type: 'integer',
            description: '旧系统授权创建者Id',
            format: 'int32',
            nullable: true
        },
        osaLastModifierId: {
            type: 'integer',
            description: '旧系统授权最后修改者Id',
            format: 'int32',
            nullable: true
        },
        osaDeleterId: {
            type: 'integer',
            description: '旧系统授权最后删除者Id',
            format: 'int32',
            nullable: true
        },
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            description: '扩展属性,用于存储自定义字段,JSON格式',
            nullable: true
        },
        deviceName: {
            type: 'string',
            description: '设备名称',
            nullable: true
        },
        deviceAddress: {
            type: 'string',
            description: '设备地址',
            nullable: true
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformName: {
            type: 'string',
            description: '物联网平台类型,默认没有指定',
            nullable: true,
            readOnly: true
        },
        ioTPlatformDeviceOpenInfo: {
            type: 'string',
            description: '物联网平台中对应的设备Id或者名称',
            nullable: true
        },
        platformPassword: {
            type: 'string',
            description: '物联网平台设备密码（目标密钥：设备切到目标平台后应当使用的鉴权密钥）',
            nullable: true
        },
        deviceEffectiveSecKey: {
            type: 'string',
            description: '设备当前实际持有的密钥（生效密钥），指令报文的 AES 加密与签名用它',
            nullable: true
        },
        pendingSecKey: {
            type: 'string',
            description: '已下发、等待设备确认生效的目标密钥',
            nullable: true
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台中对应的产品Id',
            nullable: true
        },
        ioTPlatformProductName: {
            type: 'string',
            description: '物联网平台中对应的产品Name',
            nullable: true
        },
        ioTPlatformAccountId: {
            type: 'string',
            description: '物联网平台中对应的账号Id',
            nullable: true
        },
        accountPhoneNumber: {
            type: 'string',
            description: '账户手机号',
            nullable: true
        },
        ioTPlatformResponse: {
            type: 'string',
            description: '物联网平台返回的响应信息',
            nullable: true
        },
        isPlatformPushSuccess: {
            type: 'boolean',
            description: '物联网平台推送是否成功'
        },
        deviceOnlineStatus: {
            '$ref': '#/components/schemas/DeviceOnlineStatus'
        },
        deviceOnlineStatusName: {
            type: 'string',
            description: '设备在线状态',
            nullable: true,
            readOnly: true
        },
        lastOnlineTime: {
            type: 'string',
            description: '最后在线时间',
            format: 'date-time',
            nullable: true
        },
        lastOfflineTime: {
            type: 'string',
            description: '最后离线时间',
            format: 'date-time',
            nullable: true
        },
        deviceSourceTypeEnum: {
            '$ref': '#/components/schemas/DeviceSourceTypeEnum'
        },
        deviceSourceTypeName: {
            type: 'string',
            description: '设备来源类型',
            nullable: true,
            readOnly: true
        },
        deviceType: {
            '$ref': '#/components/schemas/DeviceTypeEnum'
        },
        deviceTypeName: {
            type: 'string',
            description: '设备类型，与业务系统无关',
            nullable: true,
            readOnly: true
        },
        isNeedConfigDeviceModel: {
            type: 'boolean',
            description: '是否需要配置设备模型，默认false'
        },
        deviceThingModelDataId: {
            type: 'string',
            description: '设备物模型数据Id',
            format: 'uuid',
            nullable: true
        },
        deviceThingModelName: {
            type: 'string',
            description: '设备物模型名称',
            nullable: true
        },
        firmwareVersion: {
            type: 'string',
            description: '固件版本',
            nullable: true
        },
        upgradeDate: {
            type: 'string',
            description: '升级日期',
            format: 'date-time',
            nullable: true
        },
        subDeviceCapacity: {
            type: 'integer',
            description: '子设备容量',
            format: 'int32'
        },
        readingMode: {
            '$ref': '#/components/schemas/DeviceReadingModeEnum'
        },
        readingModeName: {
            type: 'string',
            description: '抄读模式,JiShe.ServicePro.Core.DeviceReadingModeEnum',
            nullable: true,
            readOnly: true
        },
        simCardInfo: {
            '$ref': '#/components/schemas/DeviceSimCardInfo'
        },
        encryptionType: {
            '$ref': '#/components/schemas/DeviceAuthenticationModeEnum'
        },
        encryptionTypeName: {
            type: 'string',
            description: '设备加密类型,JiShe.ServicePro.Enums.DeviceAuthenticationModeEnum',
            nullable: true,
            readOnly: true
        },
        encryptionMethod: {
            '$ref': '#/components/schemas/DeviceEncryptionMethodEnum'
        },
        encryptionMethodName: {
            type: 'string',
            description: '设备鉴权加密方式,JiShe.ServicePro.Enums.DeviceEncryptionMethodEnum',
            nullable: true,
            readOnly: true
        },
        needEquipmentProductionPlan: {
            type: 'boolean',
            description: '是否需要设备生产计划,默认不需要,1表示需要',
            nullable: true
        },
        lifeInfo: {
            '$ref': '#/components/schemas/DeviceLifeTypeEnum'
        },
        lifeInfoName: {
            type: 'string',
            description: '设备生命周期,JiShe.ServicePro.Enums.DeviceLifeTypeEnum',
            nullable: true,
            readOnly: true
        },
        finalMainStation: {
            type: 'string',
            description: '最后主站地址',
            nullable: true
        },
        masterStationConfigs: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/DeviceMasterStationEndpoint'
            },
            description: '本次下发的主站配置集合（主用 + 备用），记录每个端点的地址与所属平台。',
            nullable: true
        },
        dataPushOverride: {
            type: 'boolean',
            description: '是否覆盖产品级推送配置：true 用本设备的推送配置，false 继承所属产品配置'
        },
        isNeedPushData: {
            type: 'boolean',
            description: '是否需要推送数据（设备级开关，仅 JiShe.ServicePro.DeviceManagement.DeviceInfos.DeviceManagementInfoDto.DataPushOverride 为 true 时生效）'
        },
        dataPushRules: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/DataPushRule'
            },
            description: '数据推送规则集合，仅 JiShe.ServicePro.DeviceManagement.DeviceInfos.DeviceManagementInfoDto.DataPushOverride 为 true 时生效',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const DeviceManagementInfoDtoHttpDataResultSchema = {
    type: 'object',
    properties: {
        code: {
            '$ref': '#/components/schemas/ResponeResultEnum'
        },
        msg: {
            type: 'string',
            description: '详细描述',
            nullable: true
        },
        success: {
            type: 'boolean',
            description: `是否获取到数据或者逻辑处理成功
服务内部判断状态采用此属性`
        },
        timestamp: {
            type: 'integer',
            description: '时间戳(毫秒)',
            format: 'int64',
            readOnly: true
        },
        nonce: {
            type: 'string',
            description: '用于计算签名字符的随机串',
            nullable: true
        },
        signature: {
            type: 'string',
            description: '加密签名，用以校验推送客户端身份合法性，校验方法见实例验证',
            nullable: true
        },
        locationCode: {
            type: 'integer',
            description: `位置编码，主要用于接口请求逻辑定位
使用时必须保证每个请求中不重复出现`,
            format: 'int32'
        },
        extras: {
            type: 'string',
            description: '扩展信息',
            nullable: true
        },
        data: {
            '$ref': '#/components/schemas/DeviceManagementInfoDto'
        },
        total: {
            type: 'integer',
            description: '总数',
            format: 'int64'
        }
    },
    additionalProperties: false,
    description: 'HTTP 请求返回结果'
} as const;

export const DeviceManagementInfoDtoPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/DeviceManagementInfoDto'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const DeviceManagementInfoDtoPagedResultDtoHttpDataResultSchema = {
    type: 'object',
    properties: {
        code: {
            '$ref': '#/components/schemas/ResponeResultEnum'
        },
        msg: {
            type: 'string',
            description: '详细描述',
            nullable: true
        },
        success: {
            type: 'boolean',
            description: `是否获取到数据或者逻辑处理成功
服务内部判断状态采用此属性`
        },
        timestamp: {
            type: 'integer',
            description: '时间戳(毫秒)',
            format: 'int64',
            readOnly: true
        },
        nonce: {
            type: 'string',
            description: '用于计算签名字符的随机串',
            nullable: true
        },
        signature: {
            type: 'string',
            description: '加密签名，用以校验推送客户端身份合法性，校验方法见实例验证',
            nullable: true
        },
        locationCode: {
            type: 'integer',
            description: `位置编码，主要用于接口请求逻辑定位
使用时必须保证每个请求中不重复出现`,
            format: 'int32'
        },
        extras: {
            type: 'string',
            description: '扩展信息',
            nullable: true
        },
        data: {
            '$ref': '#/components/schemas/DeviceManagementInfoDtoPagedResultDto'
        },
        total: {
            type: 'integer',
            description: '总数',
            format: 'int64'
        }
    },
    additionalProperties: false,
    description: 'HTTP 请求返回结果'
} as const;

export const DeviceMasterStationEndpointSchema = {
    type: 'object',
    properties: {
        masterStationAddress: {
            type: 'string',
            description: '主站地址（host:port）',
            nullable: true
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        }
    },
    additionalProperties: false,
    description: `设备主站端点：一个主站的地址 + 所属物联网平台。
设备一次切主站会下发主用 + 备用两个端点，主备共用同一把接入密钥。
服务端据此在切换确认后判断"主或备是否含 OneNET"，进而决定是否要把设备当前密钥同步到 OneNET（一机一密）——
否则设备自主回落到 OneNET 备用主站时，OneNET 侧仍是旧密钥、鉴权不过、连不上也报不了事件，彻底失联。
以 JSON 序列化存 jsonb，供实体 / DTO / 缓存共用。`
} as const;

export const DeviceMasterSwitchInputSchema = {
    required: ['backupMasterStation', 'id', 'ioTPlatformProductId', 'masterStation'],
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品Id'
        },
        masterStation: {
            '$ref': '#/components/schemas/MasterStationInput'
        },
        backupMasterStation: {
            '$ref': '#/components/schemas/MasterStationInput'
        }
    },
    additionalProperties: false,
    description: '设备切换主站入参'
} as const;

export const DeviceOnlineStatusSchema = {
    enum: ['Online', 'Offline'],
    type: 'string',
    description: '设备在线状态'
} as const;

export const DevicePropertyReadIssuedDtoSchema = {
    type: 'object',
    properties: {
        requestId: {
            type: 'string',
            description: '抄读关联 Id，据此轮询抄读结果',
            nullable: true
        }
    },
    additionalProperties: false,
    description: `发起 EMQX 异步抄读的返回。
刻意用 DTO 包一层而不是直接返回 string：
1）裸 string 返回值会被 ASP.NET Core 的 StringOutputFormatter 写成 text/plain 裸内容，
   前端 axios 默认会对响应体尝试 JSON.parse，纯数字的雪花 Id 会被解析成 JS number；
2）雪花 Id 远超 Number.MAX_SAFE_INTEGER，一旦变成 JS number 精度立刻丢失，
   轮询时带回来的就是个对不上的错 Id。
包成对象后 requestId 是标准 JSON 字符串，两个问题都不存在。`
} as const;

export const DevicePropertyReadResultForApiInputSchema = {
    required: ['id'],
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        requestId: {
            type: 'string',
            description: '发起抄读时返回的关联 Id',
            nullable: true
        }
    },
    additionalProperties: false,
    description: `查询 EMQX 异步抄读结果的入参。
EMQX 只是 broker，没有 OneNET 那种平台侧属性快照可同步查询，抄读只能发 property/get 等设备 get_reply 应答，
故抄读拆成"发起（拿 RequestId）→ 轮询本接口取结果"两步。`
} as const;

export const DevicePropertyValueForApiInputSchema = {
    required: ['id', 'propertyList'],
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        propertyList: {
            type: 'object',
            additionalProperties: {
                nullable: true
            },
            description: '设备标准物模型属性标识符集合，key为物模型属性标识符，value为空'
        }
    },
    additionalProperties: false,
    description: '设备属性抄读'
} as const;

export const DeviceReadingModeEnumSchema = {
    enum: ['Unspecified', 'StandardMode', 'SpecialMode'],
    type: 'string',
    description: '设备抄读模式'
} as const;

export const DeviceSimCardInfoSchema = {
    type: 'object',
    properties: {
        imei: {
            type: 'string',
            nullable: true
        },
        iccid: {
            type: 'string',
            nullable: true
        },
        imsi: {
            type: 'string',
            nullable: true
        },
        msisdn: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '设备 SIM 卡信息（供 EF / FreeSql 共用，避免 FreeSqlProvider 与 Domain.Shared 循环引用）'
} as const;

export const DeviceSourceTypeEnumSchema = {
    enum: ['AdminSystem', 'Workshop', 'CTWing', 'OneNET', 'Prepay', 'Energy'],
    type: 'string',
    description: '设备来源类型枚举'
} as const;

export const DeviceTableModelDataInfoPageInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        ioTDataType: {
            type: 'string',
            description: `数据类型，用于构建存储路径
 JiShe.ServicePro.Core.IoTDBDataTypeConst`,
            nullable: true
        },
        deviceType: {
            '$ref': '#/components/schemas/DeviceTypeEnum'
        },
        deviceAddress: {
            type: 'string',
            description: '通信设备地址、用于构建存储路径',
            nullable: true
        },
        startCreationTime: {
            type: 'string',
            description: '开始创建时间',
            format: 'date-time',
            nullable: true
        },
        endCreationTime: {
            type: 'string',
            description: '结束创建时间',
            format: 'date-time',
            nullable: true
        },
        isNeedPaging: {
            type: 'boolean',
            description: '是否需要分页， 默认为true'
        }
    },
    additionalProperties: false,
    description: '设备数据表模型信息入参'
} as const;

export const DeviceTableModelDataInfoPageOutputSchema = {
    type: 'object',
    properties: {
        systemName: {
            type: 'string',
            description: '系统名称',
            nullable: true
        },
        ioTDataType: {
            type: 'string',
            description: '数据类型',
            nullable: true
        },
        deviceType: {
            type: 'string',
            description: `设备类型
JiShe.ServicePro.Enums.DeviceTypeEnum`,
            nullable: true
        },
        deviceAddress: {
            type: 'string',
            description: '通信设备地址、用于构建存储路径',
            nullable: true
        },
        subDevice: {
            type: 'string',
            description: '子设备',
            nullable: true
        },
        timestamps: {
            type: 'integer',
            description: '时标',
            format: 'int64'
        },
        devicePath: {
            type: 'string',
            description: '设备路径,树模型使用，表模型会在数据插入的时候直接获取继承类的名称作为表明',
            nullable: true
        },
        times: {
            type: 'string',
            description: '时标',
            format: 'date-time',
            readOnly: true
        }
    },
    additionalProperties: false,
    description: '设备数据表模型信息输出'
} as const;

export const DeviceTableModelDataInfoPageOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/DeviceTableModelDataInfoPageOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const DeviceThingModeCommandTypeEnumSchema = {
    enum: ['Unspecified', 'ReadingCommand', 'OperateCommand'],
    type: 'string',
    description: '设备端物模型指令类型'
} as const;

export const DeviceThingModelCommandInfoCreateInputSchema = {
    required: ['commandName', 'commandType', 'deviceThingModelId', 'issueCommand', 'propertyArray'],
    type: 'object',
    properties: {
        deviceThingModelId: {
            type: 'string',
            description: '设备端物模型Id',
            format: 'uuid'
        },
        commandName: {
            minLength: 1,
            type: 'string',
            description: '指令名称'
        },
        issueCommand: {
            minLength: 1,
            type: 'string',
            description: '完整的单个下发指令'
        },
        propertyArray: {
            type: 'array',
            items: {
                type: 'string'
            },
            description: '指令设备端物模型的属性名称集合,JSON格式字符串数组，一个指令的返回报文包含多个属性标识的数据'
        },
        commandType: {
            '$ref': '#/components/schemas/DeviceThingModeCommandTypeEnum'
        },
        operateCommandType: {
            type: 'integer',
            description: '待下发的操作指令类型,，例如阀控操作时，是拉闸还是合闸',
            format: 'int32'
        }
    },
    additionalProperties: false,
    description: '设备物模型指令详情创建输入'
} as const;

export const DeviceThingModelCommandInfoDtoSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        },
        creatorId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        lastModificationTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        lastModifierId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        isDeleted: {
            type: 'boolean'
        },
        deleterId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        deletionTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        tenantId: {
            type: 'string',
            description: '租户Id',
            format: 'uuid',
            nullable: true
        },
        remark: {
            type: 'string',
            description: '备注',
            nullable: true
        },
        osaCreatorId: {
            type: 'integer',
            description: '旧系统授权创建者Id',
            format: 'int32',
            nullable: true
        },
        osaLastModifierId: {
            type: 'integer',
            description: '旧系统授权最后修改者Id',
            format: 'int32',
            nullable: true
        },
        osaDeleterId: {
            type: 'integer',
            description: '旧系统授权最后删除者Id',
            format: 'int32',
            nullable: true
        },
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            description: '扩展属性,用于存储自定义字段,JSON格式',
            nullable: true
        },
        deviceThingModelId: {
            type: 'string',
            description: '设备端物模型Id',
            format: 'uuid'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        commandType: {
            '$ref': '#/components/schemas/DeviceThingModeCommandTypeEnum'
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台中对应的产品Id',
            nullable: true
        },
        commandName: {
            type: 'string',
            description: '指令名称',
            nullable: true
        },
        issueCommand: {
            type: 'string',
            description: '完整的单个下发指令',
            nullable: true
        },
        propertyArray: {
            type: 'array',
            items: {
                type: 'string'
            },
            description: '指令设备端物模型的属性名称集合,JSON格式字符串数组，一个指令的返回报文包含多个属性标识的数据，读取指令类型才有',
            nullable: true
        },
        isEnable: {
            type: 'boolean',
            description: '是否启用'
        },
        operateProperty: {
            type: 'string',
            description: '待下发的设备断物模型属性标识符名称，仅操作指令类型才有',
            nullable: true
        },
        operateCommandType: {
            type: 'integer',
            description: '待下发的操作指令类型,，例如阀控操作时，是拉闸还是合闸',
            format: 'int32'
        }
    },
    additionalProperties: false,
    description: '设备端透传指令详情，如果透抄的地址不连续，则会有多个指令记录'
} as const;

export const DeviceThingModelCommandInfoDtoPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/DeviceThingModelCommandInfoDto'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const DeviceThingModelCommandInfoPageInputSchema = {
    required: ['deviceThingModelId'],
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        deviceThingModelId: {
            type: 'string',
            description: '设备端物模型Id',
            format: 'uuid'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        searchKeyWords: {
            type: 'string',
            description: '搜索关键字',
            nullable: true
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台中对应的产品Id',
            nullable: true
        },
        filedType: {
            type: 'string',
            description: '物联网平台中对应产品物模型属性或者事件类型 JiShe.ServicePro.Core.DataDictionaryTypeConst',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '设备物模型指令详情分页'
} as const;

export const DeviceThingModelCommandInfoUpdateInputSchema = {
    required: ['commandName', 'commandType', 'deviceThingModelId', 'id', 'issueCommand', 'propertyArray'],
    type: 'object',
    properties: {
        deviceThingModelId: {
            type: 'string',
            description: '设备端物模型Id',
            format: 'uuid'
        },
        commandName: {
            minLength: 1,
            type: 'string',
            description: '指令名称'
        },
        issueCommand: {
            minLength: 1,
            type: 'string',
            description: '完整的单个下发指令'
        },
        propertyArray: {
            type: 'array',
            items: {
                type: 'string'
            },
            description: '指令设备端物模型的属性名称集合,JSON格式字符串数组，一个指令的返回报文包含多个属性标识的数据'
        },
        commandType: {
            '$ref': '#/components/schemas/DeviceThingModeCommandTypeEnum'
        },
        operateCommandType: {
            type: 'integer',
            description: '待下发的操作指令类型,，例如阀控操作时，是拉闸还是合闸',
            format: 'int32'
        },
        id: {
            type: 'string',
            format: 'uuid'
        }
    },
    additionalProperties: false,
    description: '设备物模型指令详情更新输入'
} as const;

export const DeviceThingModelCreateInputSchema = {
    required: ['deviceModelName', 'ioTPlatform', 'ioTPlatformProductId'],
    type: 'object',
    properties: {
        deviceModelName: {
            minLength: 1,
            type: 'string',
            description: '设备端物模型名称'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品Id'
        },
        scriptName: {
            type: 'string',
            description: '脚本函数名称',
            nullable: true
        },
        functionScript: {
            type: 'string',
            description: '脚本函数体',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const DeviceThingModelManagementDtoSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        },
        creatorId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        lastModificationTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        lastModifierId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        isDeleted: {
            type: 'boolean'
        },
        deleterId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        deletionTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        tenantId: {
            type: 'string',
            description: '租户Id',
            format: 'uuid',
            nullable: true
        },
        remark: {
            type: 'string',
            description: '备注',
            nullable: true
        },
        osaCreatorId: {
            type: 'integer',
            description: '旧系统授权创建者Id',
            format: 'int32',
            nullable: true
        },
        osaLastModifierId: {
            type: 'integer',
            description: '旧系统授权最后修改者Id',
            format: 'int32',
            nullable: true
        },
        osaDeleterId: {
            type: 'integer',
            description: '旧系统授权最后删除者Id',
            format: 'int32',
            nullable: true
        },
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            description: '扩展属性,用于存储自定义字段,JSON格式',
            nullable: true
        },
        deviceModelName: {
            type: 'string',
            description: '设备端物模型名称',
            nullable: true
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台中对应的产品Id',
            nullable: true
        },
        scriptName: {
            type: 'string',
            description: '脚本函数名称',
            nullable: true
        },
        functionScript: {
            type: 'string',
            description: '脚本函数体',
            nullable: true
        },
        functionAnalysisFlag: {
            type: 'boolean',
            description: '函数解析标记，默认为false， 不能解析'
        },
        propertyInfos: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/DeviceThingModelPropertyInfoDto'
            },
            description: '属性信息',
            nullable: true
        },
        commandInfos: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/DeviceThingModelCommandInfoDto'
            },
            description: '指令信息',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '设备端物模型管理'
} as const;

export const DeviceThingModelManagementDtoPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/DeviceThingModelManagementDto'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const DeviceThingModelPageInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        searchKeyWords: {
            type: 'string',
            description: '搜索关键字',
            nullable: true
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台中对应的产品Id',
            nullable: true
        },
        filedType: {
            type: 'string',
            description: '物联网平台中对应产品物模型属性或者事件类型 JiShe.ServicePro.Core.DataDictionaryTypeConst',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const DeviceThingModelPropertyCreateInputSchema = {
    required: ['deviceThingModelId', 'nativeSkipNumber', 'nativeTakeNumber', 'parsingSequence'],
    type: 'object',
    properties: {
        deviceThingModelId: {
            type: 'string',
            description: '设备端物模型Id',
            format: 'uuid'
        },
        ioTPlatformThingModelDataId: {
            type: 'string',
            description: '平台端物模型数据Id',
            format: 'uuid'
        },
        nativeSkipNumber: {
            type: 'integer',
            description: '正序跳过数量',
            format: 'int32'
        },
        nativeTakeNumber: {
            type: 'integer',
            description: '正序获取数量',
            format: 'int32'
        },
        parsingSequence: {
            '$ref': '#/components/schemas/ParsingSequenceTypeEnum'
        },
        reversalSkipNumber: {
            type: 'integer',
            description: '反转跳过数量',
            format: 'int32',
            nullable: true
        },
        reversalTakeNumber: {
            type: 'integer',
            description: '反转获取数量',
            format: 'int32',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '设备物模型属性创建输入'
} as const;

export const DeviceThingModelPropertyInfoDtoSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        },
        creatorId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        lastModificationTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        lastModifierId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        isDeleted: {
            type: 'boolean'
        },
        deleterId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        deletionTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        tenantId: {
            type: 'string',
            description: '租户Id',
            format: 'uuid',
            nullable: true
        },
        remark: {
            type: 'string',
            description: '备注',
            nullable: true
        },
        osaCreatorId: {
            type: 'integer',
            description: '旧系统授权创建者Id',
            format: 'int32',
            nullable: true
        },
        osaLastModifierId: {
            type: 'integer',
            description: '旧系统授权最后修改者Id',
            format: 'int32',
            nullable: true
        },
        osaDeleterId: {
            type: 'integer',
            description: '旧系统授权最后删除者Id',
            format: 'int32',
            nullable: true
        },
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            description: '扩展属性,用于存储自定义字段,JSON格式',
            nullable: true
        },
        deviceThingModelId: {
            type: 'string',
            description: '设备端物模型Id',
            format: 'uuid'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台中对应的产品Id',
            nullable: true
        },
        ioTPlatformThingModelDataId: {
            type: 'string',
            description: '平台端物模型数据Id',
            format: 'uuid'
        },
        filedType: {
            type: 'string',
            description: '物联网平台中对应产品物模型属性或者事件类型 JiShe.ServicePro.Core.DataDictionaryTypeConst',
            nullable: true
        },
        ioTPlatformRawFieldName: {
            type: 'string',
            description: '物联网平台中对应的产品物模型属性或者事件名称',
            nullable: true
        },
        ioTPlatformRawFieldDataType: {
            type: 'string',
            description: '物联网平台中对应的产品物模型属性或者事件数据类型，JiShe.ServicePro.Core.OneNETAllThingModel',
            nullable: true
        },
        standardFieldName: {
            type: 'string',
            description: '管理后台产品标准的物模型属性或者事件名称',
            nullable: true
        },
        standardFieldValueType: {
            type: 'string',
            description: '标准物模型字段值类型',
            nullable: true
        },
        standardFieldDisplayName: {
            type: 'string',
            description: '标准物模型字段显示名称',
            nullable: true
        },
        isValueNeedConvert: {
            type: 'boolean',
            description: '是否需要值类型转换'
        },
        nativeSkipNumber: {
            type: 'integer',
            description: '正序跳过数量',
            format: 'int32'
        },
        nativeTakeNumber: {
            type: 'integer',
            description: '正序获取数量',
            format: 'int32'
        },
        parsingSequence: {
            '$ref': '#/components/schemas/ParsingSequenceTypeEnum'
        },
        reversalSkipNumber: {
            type: 'integer',
            description: '反转跳过数量',
            format: 'int32',
            nullable: true
        },
        reversalTakeNumber: {
            type: 'integer',
            description: '反转获取数量',
            format: 'int32',
            nullable: true
        },
        filedTypeName: {
            type: 'string',
            description: '物模型属性或者事件类型名称',
            nullable: true
        },
        operateTypeList: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/SelectResult'
            },
            description: '属性的操作类型列表',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '设备端物模型属性信息，是指设备端支持的属性或者事件'
} as const;

export const DeviceThingModelPropertyInfoDtoPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/DeviceThingModelPropertyInfoDto'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const DeviceThingModelPropertyPageInputSchema = {
    required: ['deviceThingModelId'],
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        deviceThingModelId: {
            type: 'string',
            description: '设备端物模型Id',
            format: 'uuid'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        searchKeyWords: {
            type: 'string',
            description: '搜索关键字',
            nullable: true
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台中对应的产品Id',
            nullable: true
        },
        filedType: {
            type: 'string',
            description: '物联网平台中对应产品物模型属性或者事件类型 JiShe.ServicePro.Core.DataDictionaryTypeConst',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '设备物模型属性分页'
} as const;

export const DeviceThingModelPropertyUpdateInputSchema = {
    required: ['deviceThingModelId', 'id', 'ioTPlatformRawFieldDataType', 'ioTPlatformRawFieldName', 'nativeSkipNumber', 'nativeTakeNumber', 'parsingSequence', 'standardFieldDisplayName', 'standardFieldName', 'standardFieldValueType'],
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        deviceThingModelId: {
            type: 'string',
            description: '设备端物模型Id',
            format: 'uuid'
        },
        ioTPlatformRawFieldName: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品物模型属性或者事件名称'
        },
        ioTPlatformRawFieldDataType: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品物模型属性或者事件数据类型，JiShe.ServicePro.Core.OneNETAllThingModel'
        },
        standardFieldName: {
            minLength: 1,
            type: 'string',
            description: '管理后台产品标准的物模型属性或者事件名称'
        },
        standardFieldValueType: {
            minLength: 1,
            type: 'string',
            description: '标准物模型字段值类型'
        },
        standardFieldDisplayName: {
            minLength: 1,
            type: 'string',
            description: '标准物模型字段显示名称'
        },
        isValueNeedConvert: {
            type: 'boolean',
            description: '是否需要值类型转换'
        },
        nativeSkipNumber: {
            type: 'integer',
            description: '正序跳过数量',
            format: 'int32'
        },
        nativeTakeNumber: {
            type: 'integer',
            description: '正序获取数量',
            format: 'int32'
        },
        parsingSequence: {
            '$ref': '#/components/schemas/ParsingSequenceTypeEnum'
        },
        reversalSkipNumber: {
            type: 'integer',
            description: '反转跳过数量',
            format: 'int32',
            nullable: true
        },
        reversalTakeNumber: {
            type: 'integer',
            description: '反转获取数量',
            format: 'int32',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '设备物模型属性更新输入'
} as const;

export const DeviceThingModelUpdateInputSchema = {
    required: ['deviceModelName', 'ioTPlatform', 'ioTPlatformProductId'],
    type: 'object',
    properties: {
        deviceModelName: {
            minLength: 1,
            type: 'string',
            description: '设备端物模型名称'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品Id'
        },
        scriptName: {
            type: 'string',
            description: '脚本函数名称',
            nullable: true
        },
        functionScript: {
            type: 'string',
            description: '脚本函数体',
            nullable: true
        },
        id: {
            type: 'string',
            format: 'uuid'
        }
    },
    additionalProperties: false
} as const;

export const DeviceTreeModelDataInfoInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        ioTDataType: {
            type: 'string',
            description: `数据类型，用于构建存储路径
 JiShe.ServicePro.Core.IoTDBDataTypeConst`,
            nullable: true
        },
        deviceType: {
            '$ref': '#/components/schemas/DeviceTypeEnum'
        },
        deviceAddress: {
            type: 'string',
            description: '通信设备地址、用于构建存储路径',
            nullable: true
        },
        startCreationTime: {
            type: 'string',
            description: '开始创建时间',
            format: 'date-time',
            nullable: true
        },
        endCreationTime: {
            type: 'string',
            description: '结束创建时间',
            format: 'date-time',
            nullable: true
        },
        isNeedPaging: {
            type: 'boolean',
            description: '是否需要分页， 默认为true'
        },
        subDeviceAddress: {
            type: 'string',
            description: '子设备地址',
            nullable: true
        },
        deviceEvent: {
            type: 'string',
            description: '设备事件类型名称',
            nullable: true
        },
        devicePath: {
            type: 'string',
            description: '设备路径，管理后台才有，来自IoTDB实际地址(show devices)，业务系统调用逻辑没有',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '设备树模型数据信息查询入参'
} as const;

export const DeviceTypeEnumSchema = {
    enum: ['UNKNOWN', 'GATEWAY', 'DIRECT_DEVICE', 'SUB_DEVICE'],
    type: 'string',
    description: '设备类型，与业务系统无关'
} as const;

export const DeviceUpgradeForApiInputSchema = {
    required: ['id', 'ioTPlatform', 'ioTPlatformProductId', 'nowFirmwareVersionDataId'],
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品Id'
        },
        nowFirmwareVersionDataId: {
            type: 'string',
            description: '固件版本信息',
            format: 'uuid'
        },
        upgradeDescription: {
            type: 'string',
            description: '升级描述',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '设备升级'
} as const;

export const DeviceUpgradeRecordDtoSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        },
        creatorId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        lastModificationTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        lastModifierId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        isDeleted: {
            type: 'boolean'
        },
        deleterId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        deletionTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        tenantId: {
            type: 'string',
            description: '租户Id',
            format: 'uuid',
            nullable: true
        },
        remark: {
            type: 'string',
            description: '备注',
            nullable: true
        },
        osaCreatorId: {
            type: 'integer',
            description: '旧系统授权创建者Id',
            format: 'int32',
            nullable: true
        },
        osaLastModifierId: {
            type: 'integer',
            description: '旧系统授权最后修改者Id',
            format: 'int32',
            nullable: true
        },
        osaDeleterId: {
            type: 'integer',
            description: '旧系统授权最后删除者Id',
            format: 'int32',
            nullable: true
        },
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            description: '扩展属性,用于存储自定义字段,JSON格式',
            nullable: true
        },
        deviceDataId: {
            type: 'string',
            description: '设备数据Id',
            format: 'uuid'
        },
        deviceName: {
            type: 'string',
            description: '设备名称',
            nullable: true
        },
        deviceAddress: {
            type: 'string',
            description: '设备地址',
            nullable: true
        },
        oldFirmwareVersion: {
            type: 'string',
            description: '旧的固件版本',
            nullable: true
        },
        nowFirmwareVersion: {
            type: 'string',
            description: '固件版本',
            nullable: true
        },
        upgradeDate: {
            type: 'string',
            description: '升级日期',
            format: 'date-time'
        },
        upgradeSource: {
            '$ref': '#/components/schemas/DeviceUpgradeSourceTypeEnum'
        },
        upgradeSourceTypeName: {
            type: 'string',
            description: '升级来源',
            nullable: true,
            readOnly: true
        },
        upgradeMessage: {
            type: 'string',
            description: '升级信息',
            nullable: true
        },
        upgradeStatus: {
            '$ref': '#/components/schemas/DeviceUpgradeStatusTypeEnum'
        },
        upgradeStatusName: {
            type: 'string',
            description: '升级状态',
            nullable: true,
            readOnly: true
        },
        upgradeIdentifier: {
            type: 'integer',
            description: '升级标识符号',
            format: 'int64'
        },
        firmwareSignature: {
            type: 'string',
            description: '签名校验值',
            nullable: true
        },
        upgradeResult: {
            '$ref': '#/components/schemas/DeviceUpgradeResultTypeEnum'
        },
        upgradeResultName: {
            type: 'string',
            description: '升级结果',
            nullable: true,
            readOnly: true
        },
        upgradeDescription: {
            type: 'string',
            description: '升级描述',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const DeviceUpgradeRecordDtoPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/DeviceUpgradeRecordDto'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const DeviceUpgradeResultTypeEnumSchema = {
    enum: ['Default', 'Success', 'InvalidUrlOrModuleUrlFetchFailed', 'DownloadTimeout', 'ParseHttpDlFileFailedOrDownloadIncomplete', 'DownloadSizeMismatch', 'ModuleReadTimeout', 'FilePointerException', 'ExternalFlashWriteFailed', 'ExternalFlashCrc16Mismatch', 'SignatureVerificationFailed', 'Crc32Mismatch', 'DiffDecompressOrPatchFailed', 'RestoredFirmwareSizeExceededOrTargetAddressInBootArea', 'IapPowerAbnormal'],
    type: 'string',
    description: '设备升级结果枚举'
} as const;

export const DeviceUpgradeSourceTypeEnumSchema = {
    enum: ['AdminSystem', 'BusinessSystem'],
    type: 'string',
    description: '设备升级来源类型枚举'
} as const;

export const DeviceUpgradeStatusTypeEnumSchema = {
    enum: ['NotUpgrade', 'Upgrading', 'Downloading', 'UpgradeSuccess', 'UpgradeFailed'],
    type: 'string',
    description: '设备升级状态枚举'
} as const;

export const DisabledTwoFactorInputSchema = {
    required: ['code'],
    type: 'object',
    properties: {
        code: {
            minLength: 1,
            type: 'string',
            description: '验证码'
        }
    },
    additionalProperties: false
} as const;

export const DownloadFileObjectInputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '文件Id',
            format: 'uuid'
        }
    },
    additionalProperties: false
} as const;

export const EnableDeviceForApiInputSchema = {
    required: ['id'],
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        enable: {
            type: 'boolean',
            description: '设备启停状态，true-启用，false-停用'
        }
    },
    additionalProperties: false,
    description: '设备启停入参'
} as const;

export const EnabledTwoFactorInputSchema = {
    required: ['code', 'secret'],
    type: 'object',
    properties: {
        code: {
            minLength: 1,
            type: 'string',
            description: '验证码'
        },
        secret: {
            minLength: 1,
            type: 'string',
            description: '密钥'
        }
    },
    additionalProperties: false
} as const;

export const EntityChangeTypeSchema = {
    enum: ['Created', 'Updated', 'Deleted'],
    type: 'string'
} as const;

export const EntityExtensionDtoSchema = {
    type: 'object',
    properties: {
        properties: {
            type: 'object',
            additionalProperties: {
                '$ref': '#/components/schemas/ExtensionPropertyDto'
            },
            nullable: true
        },
        configuration: {
            type: 'object',
            additionalProperties: {},
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ExportPlatformThingModelInputSchema = {
    required: ['ioTPlatformProductId'],
    type: 'object',
    properties: {
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '平台产品ID'
        },
        platform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        }
    },
    additionalProperties: false,
    description: '导出平台端物模型入参（单个产品）'
} as const;

export const ExtensionEnumDtoSchema = {
    type: 'object',
    properties: {
        fields: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/ExtensionEnumFieldDto'
            },
            nullable: true
        },
        localizationResource: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ExtensionEnumFieldDtoSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            nullable: true
        },
        value: {
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ExtensionPropertyApiCreateDtoSchema = {
    type: 'object',
    properties: {
        isAvailable: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const ExtensionPropertyApiDtoSchema = {
    type: 'object',
    properties: {
        onGet: {
            '$ref': '#/components/schemas/ExtensionPropertyApiGetDto'
        },
        onCreate: {
            '$ref': '#/components/schemas/ExtensionPropertyApiCreateDto'
        },
        onUpdate: {
            '$ref': '#/components/schemas/ExtensionPropertyApiUpdateDto'
        }
    },
    additionalProperties: false
} as const;

export const ExtensionPropertyApiGetDtoSchema = {
    type: 'object',
    properties: {
        isAvailable: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const ExtensionPropertyApiUpdateDtoSchema = {
    type: 'object',
    properties: {
        isAvailable: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const ExtensionPropertyAttributeDtoSchema = {
    type: 'object',
    properties: {
        typeSimple: {
            type: 'string',
            nullable: true
        },
        config: {
            type: 'object',
            additionalProperties: {},
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ExtensionPropertyDtoSchema = {
    type: 'object',
    properties: {
        type: {
            type: 'string',
            nullable: true
        },
        typeSimple: {
            type: 'string',
            nullable: true
        },
        displayName: {
            '$ref': '#/components/schemas/LocalizableStringDto'
        },
        api: {
            '$ref': '#/components/schemas/ExtensionPropertyApiDto'
        },
        ui: {
            '$ref': '#/components/schemas/ExtensionPropertyUiDto'
        },
        policy: {
            '$ref': '#/components/schemas/ExtensionPropertyPolicyDto'
        },
        attributes: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/ExtensionPropertyAttributeDto'
            },
            nullable: true
        },
        configuration: {
            type: 'object',
            additionalProperties: {},
            nullable: true
        },
        defaultValue: {
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ExtensionPropertyFeaturePolicyDtoSchema = {
    type: 'object',
    properties: {
        features: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        requiresAll: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const ExtensionPropertyGlobalFeaturePolicyDtoSchema = {
    type: 'object',
    properties: {
        features: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        requiresAll: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const ExtensionPropertyPermissionPolicyDtoSchema = {
    type: 'object',
    properties: {
        permissionNames: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        requiresAll: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const ExtensionPropertyPolicyDtoSchema = {
    type: 'object',
    properties: {
        globalFeatures: {
            '$ref': '#/components/schemas/ExtensionPropertyGlobalFeaturePolicyDto'
        },
        features: {
            '$ref': '#/components/schemas/ExtensionPropertyFeaturePolicyDto'
        },
        permissions: {
            '$ref': '#/components/schemas/ExtensionPropertyPermissionPolicyDto'
        }
    },
    additionalProperties: false
} as const;

export const ExtensionPropertyUiDtoSchema = {
    type: 'object',
    properties: {
        onTable: {
            '$ref': '#/components/schemas/ExtensionPropertyUiTableDto'
        },
        onCreateForm: {
            '$ref': '#/components/schemas/ExtensionPropertyUiFormDto'
        },
        onEditForm: {
            '$ref': '#/components/schemas/ExtensionPropertyUiFormDto'
        },
        lookup: {
            '$ref': '#/components/schemas/ExtensionPropertyUiLookupDto'
        }
    },
    additionalProperties: false
} as const;

export const ExtensionPropertyUiFormDtoSchema = {
    type: 'object',
    properties: {
        isVisible: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const ExtensionPropertyUiLookupDtoSchema = {
    type: 'object',
    properties: {
        url: {
            type: 'string',
            nullable: true
        },
        resultListPropertyName: {
            type: 'string',
            nullable: true
        },
        displayPropertyName: {
            type: 'string',
            nullable: true
        },
        valuePropertyName: {
            type: 'string',
            nullable: true
        },
        filterParamName: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ExtensionPropertyUiTableDtoSchema = {
    type: 'object',
    properties: {
        isVisible: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const FeatureDtoSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            nullable: true
        },
        displayName: {
            type: 'string',
            nullable: true
        },
        value: {
            type: 'string',
            nullable: true
        },
        provider: {
            '$ref': '#/components/schemas/FeatureProviderDto'
        },
        description: {
            type: 'string',
            nullable: true
        },
        valueType: {
            '$ref': '#/components/schemas/IStringValueType'
        },
        depth: {
            type: 'integer',
            format: 'int32'
        },
        parentName: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const FeatureGroupDtoSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            nullable: true
        },
        displayName: {
            type: 'string',
            nullable: true
        },
        features: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/FeatureDto'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const FeatureProviderDtoSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            nullable: true
        },
        key: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const FileAggregateRouteSchema = {
    type: 'object',
    properties: {
        routeKeys: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        routeKeysConfig: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/AggregateRouteConfig'
            },
            nullable: true
        },
        upstreamPathTemplate: {
            type: 'string',
            nullable: true
        },
        upstreamHost: {
            type: 'string',
            nullable: true
        },
        routeIsCaseSensitive: {
            type: 'boolean'
        },
        aggregator: {
            type: 'string',
            nullable: true
        },
        upstreamHttpMethod: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true,
            readOnly: true
        },
        priority: {
            type: 'integer',
            format: 'int32'
        }
    },
    additionalProperties: false
} as const;

export const FileAuthenticationOptionsSchema = {
    type: 'object',
    properties: {
        authenticationProviderKey: {
            type: 'string',
            nullable: true
        },
        allowedScopes: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const FileCacheOptionsSchema = {
    type: 'object',
    properties: {
        ttlSeconds: {
            type: 'integer',
            format: 'int32'
        },
        region: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const FileConfigurationSchema = {
    type: 'object',
    properties: {
        routes: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/FileRoute'
            },
            nullable: true
        },
        dynamicRoutes: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/FileDynamicRoute'
            },
            nullable: true
        },
        aggregates: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/FileAggregateRoute'
            },
            nullable: true
        },
        globalConfiguration: {
            '$ref': '#/components/schemas/FileGlobalConfiguration'
        }
    },
    additionalProperties: false
} as const;

export const FileDynamicRouteSchema = {
    type: 'object',
    properties: {
        serviceName: {
            type: 'string',
            nullable: true
        },
        rateLimitRule: {
            '$ref': '#/components/schemas/FileRateLimitRule'
        },
        downstreamHttpVersion: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const FileGlobalConfigurationSchema = {
    type: 'object',
    properties: {
        requestIdKey: {
            type: 'string',
            nullable: true
        },
        serviceDiscoveryProvider: {
            '$ref': '#/components/schemas/FileServiceDiscoveryProvider'
        },
        rateLimitOptions: {
            '$ref': '#/components/schemas/FileRateLimitOptions'
        },
        qoSOptions: {
            '$ref': '#/components/schemas/FileQoSOptions'
        },
        baseUrl: {
            type: 'string',
            nullable: true
        },
        loadBalancerOptions: {
            '$ref': '#/components/schemas/FileLoadBalancerOptions'
        },
        downstreamScheme: {
            type: 'string',
            nullable: true
        },
        httpHandlerOptions: {
            '$ref': '#/components/schemas/FileHttpHandlerOptions'
        },
        downstreamHttpVersion: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const FileHostAndPortSchema = {
    type: 'object',
    properties: {
        host: {
            type: 'string',
            nullable: true
        },
        port: {
            type: 'integer',
            format: 'int32'
        }
    },
    additionalProperties: false
} as const;

export const FileHttpHandlerOptionsSchema = {
    type: 'object',
    properties: {
        allowAutoRedirect: {
            type: 'boolean'
        },
        useCookieContainer: {
            type: 'boolean'
        },
        useTracing: {
            type: 'boolean'
        },
        useProxy: {
            type: 'boolean'
        },
        maxConnectionsPerServer: {
            type: 'integer',
            format: 'int32'
        }
    },
    additionalProperties: false
} as const;

export const FileLoadBalancerOptionsSchema = {
    type: 'object',
    properties: {
        type: {
            type: 'string',
            nullable: true
        },
        key: {
            type: 'string',
            nullable: true
        },
        expiry: {
            type: 'integer',
            format: 'int32'
        }
    },
    additionalProperties: false
} as const;

export const FileObjectDtoSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '主键Id',
            format: 'uuid'
        },
        creationTime: {
            type: 'string',
            description: '创建时间',
            format: 'date-time'
        },
        fileSize: {
            type: 'integer',
            description: '文件大小',
            format: 'int64'
        },
        contentType: {
            type: 'string',
            description: '文件名称',
            nullable: true
        },
        fileName: {
            type: 'string',
            description: '文件名称',
            nullable: true
        },
        md5Hash: {
            type: 'string',
            description: '文件MD5',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '文件'
} as const;

export const FileQoSOptionsSchema = {
    type: 'object',
    properties: {
        exceptionsAllowedBeforeBreaking: {
            type: 'integer',
            format: 'int32'
        },
        durationOfBreak: {
            type: 'integer',
            format: 'int32'
        },
        timeoutValue: {
            type: 'integer',
            format: 'int32'
        }
    },
    additionalProperties: false
} as const;

export const FileRateLimitOptionsSchema = {
    type: 'object',
    properties: {
        clientIdHeader: {
            type: 'string',
            nullable: true
        },
        quotaExceededMessage: {
            type: 'string',
            nullable: true
        },
        rateLimitCounterPrefix: {
            type: 'string',
            nullable: true
        },
        disableRateLimitHeaders: {
            type: 'boolean'
        },
        httpStatusCode: {
            type: 'integer',
            format: 'int32'
        }
    },
    additionalProperties: false
} as const;

export const FileRateLimitRuleSchema = {
    type: 'object',
    properties: {
        clientWhitelist: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        enableRateLimiting: {
            type: 'boolean'
        },
        period: {
            type: 'string',
            nullable: true
        },
        periodTimespan: {
            type: 'number',
            format: 'double'
        },
        limit: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const FileRouteSchema = {
    type: 'object',
    properties: {
        downstreamPathTemplate: {
            type: 'string',
            nullable: true
        },
        upstreamPathTemplate: {
            type: 'string',
            nullable: true
        },
        upstreamHttpMethod: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        downstreamHttpMethod: {
            type: 'string',
            nullable: true
        },
        addHeadersToRequest: {
            type: 'object',
            additionalProperties: {
                type: 'string',
                nullable: true
            },
            nullable: true
        },
        upstreamHeaderTransform: {
            type: 'object',
            additionalProperties: {
                type: 'string',
                nullable: true
            },
            nullable: true
        },
        downstreamHeaderTransform: {
            type: 'object',
            additionalProperties: {
                type: 'string',
                nullable: true
            },
            nullable: true
        },
        addClaimsToRequest: {
            type: 'object',
            additionalProperties: {
                type: 'string',
                nullable: true
            },
            nullable: true
        },
        routeClaimsRequirement: {
            type: 'object',
            additionalProperties: {
                type: 'string',
                nullable: true
            },
            nullable: true
        },
        addQueriesToRequest: {
            type: 'object',
            additionalProperties: {
                type: 'string',
                nullable: true
            },
            nullable: true
        },
        changeDownstreamPathTemplate: {
            type: 'object',
            additionalProperties: {
                type: 'string',
                nullable: true
            },
            nullable: true
        },
        requestIdKey: {
            type: 'string',
            nullable: true
        },
        fileCacheOptions: {
            '$ref': '#/components/schemas/FileCacheOptions'
        },
        routeIsCaseSensitive: {
            type: 'boolean'
        },
        serviceName: {
            type: 'string',
            nullable: true
        },
        serviceNamespace: {
            type: 'string',
            nullable: true
        },
        downstreamScheme: {
            type: 'string',
            nullable: true
        },
        qoSOptions: {
            '$ref': '#/components/schemas/FileQoSOptions'
        },
        loadBalancerOptions: {
            '$ref': '#/components/schemas/FileLoadBalancerOptions'
        },
        rateLimitOptions: {
            '$ref': '#/components/schemas/FileRateLimitRule'
        },
        authenticationOptions: {
            '$ref': '#/components/schemas/FileAuthenticationOptions'
        },
        httpHandlerOptions: {
            '$ref': '#/components/schemas/FileHttpHandlerOptions'
        },
        downstreamHostAndPorts: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/FileHostAndPort'
            },
            nullable: true
        },
        upstreamHost: {
            type: 'string',
            nullable: true
        },
        key: {
            type: 'string',
            nullable: true
        },
        delegatingHandlers: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        priority: {
            type: 'integer',
            format: 'int32'
        },
        timeout: {
            type: 'integer',
            format: 'int32'
        },
        dangerousAcceptAnyServerCertificateValidator: {
            type: 'boolean'
        },
        securityOptions: {
            '$ref': '#/components/schemas/FileSecurityOptions'
        },
        downstreamHttpVersion: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const FileSecurityOptionsSchema = {
    type: 'object',
    properties: {
        ipAllowedList: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        ipBlockedList: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const FileServiceDiscoveryProviderSchema = {
    type: 'object',
    properties: {
        scheme: {
            type: 'string',
            nullable: true
        },
        host: {
            type: 'string',
            nullable: true
        },
        port: {
            type: 'integer',
            format: 'int32'
        },
        type: {
            type: 'string',
            nullable: true
        },
        token: {
            type: 'string',
            nullable: true
        },
        configurationKey: {
            type: 'string',
            nullable: true
        },
        pollingInterval: {
            type: 'integer',
            format: 'int32'
        },
        namespace: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const FindByUserNameInputSchema = {
    type: 'object',
    properties: {
        userName: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const FindTenantByNameInputSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const FindTenantResultDtoSchema = {
    type: 'object',
    properties: {
        success: {
            type: 'boolean'
        },
        tenantId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        name: {
            type: 'string',
            nullable: true
        },
        normalizedName: {
            type: 'string',
            nullable: true
        },
        isActive: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const GetFeatureListResultDtoSchema = {
    type: 'object',
    properties: {
        groups: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/FeatureGroupDto'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const GetFeatureListResultInputSchema = {
    type: 'object',
    properties: {
        providerName: {
            type: 'string',
            nullable: true
        },
        providerKey: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const GetMenuTreeMetaOutputSchema = {
    type: 'object',
    properties: {
        title: {
            type: 'string',
            nullable: true
        },
        displayTitle: {
            type: 'string',
            nullable: true
        },
        icon: {
            type: 'string',
            description: '图标',
            nullable: true
        },
        order: {
            type: 'integer',
            description: '排序',
            format: 'int32'
        },
        keepAlive: {
            type: 'boolean',
            description: '是否缓存'
        },
        hideInMenu: {
            type: 'boolean',
            description: '是否显示'
        },
        link: {
            type: 'string',
            description: '外链地址',
            nullable: true
        },
        iframeSrc: {
            type: 'string',
            description: '内链地址',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const GetMenuTreeOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        parentId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        name: {
            type: 'string',
            description: '名称',
            nullable: true
        },
        path: {
            type: 'string',
            nullable: true
        },
        component: {
            type: 'string',
            nullable: true
        },
        enabled: {
            type: 'boolean'
        },
        meta: {
            '$ref': '#/components/schemas/GetMenuTreeMetaOutput'
        },
        children: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/GetMenuTreeOutput'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const GetOrganizationUnitRoleInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        organizationUnitId: {
            type: 'string',
            format: 'uuid'
        }
    },
    additionalProperties: false
} as const;

export const GetOrganizationUnitRoleOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        name: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const GetOrganizationUnitRoleOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/GetOrganizationUnitRoleOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const GetOrganizationUnitUserInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        organizationUnitId: {
            type: 'string',
            format: 'uuid'
        },
        filter: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const GetOrganizationUnitUserOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        userName: {
            type: 'string',
            nullable: true
        },
        email: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const GetOrganizationUnitUserOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/GetOrganizationUnitUserOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const GetPermissionInputSchema = {
    type: 'object',
    properties: {
        providerName: {
            type: 'string',
            nullable: true
        },
        providerKey: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const GetPlatformThingModelServiceInputSchema = {
    required: ['id'],
    type: 'object',
    properties: {
        id: {
            minLength: 1,
            type: 'string'
        },
        standardFieldName: {
            type: 'string',
            description: '管理后台产品标准的物模型属性或者事件名称',
            nullable: true
        },
        isGetOperateService: {
            type: 'boolean',
            description: '是否只获取操作服务'
        }
    },
    additionalProperties: false,
    description: '获取平台物模型服务列表入参'
} as const;

export const GetQRCodeOutputSchema = {
    type: 'object',
    properties: {
        qrCode: {
            type: 'string',
            description: 'base64 二维码',
            format: 'byte',
            nullable: true
        },
        secret: {
            type: 'string',
            description: '密钥',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const GetUnAddRoleInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        organizationUnitId: {
            type: 'string',
            format: 'uuid'
        },
        filter: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const GetUnAddRoleOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        name: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const GetUnAddRoleOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/GetUnAddRoleOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const GetUnAddUserInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        organizationUnitId: {
            type: 'string',
            format: 'uuid'
        },
        filter: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const GetUnAddUserOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        userName: {
            type: 'string',
            nullable: true
        },
        email: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const GetUnAddUserOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/GetUnAddUserOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const HttpDataResultSchema = {
    type: 'object',
    properties: {
        code: {
            '$ref': '#/components/schemas/ResponeResultEnum'
        },
        msg: {
            type: 'string',
            description: '详细描述',
            nullable: true
        },
        success: {
            type: 'boolean',
            description: `是否获取到数据或者逻辑处理成功
服务内部判断状态采用此属性`
        },
        timestamp: {
            type: 'integer',
            description: '时间戳(毫秒)',
            format: 'int64',
            readOnly: true
        },
        nonce: {
            type: 'string',
            description: '用于计算签名字符的随机串',
            nullable: true
        },
        signature: {
            type: 'string',
            description: '加密签名，用以校验推送客户端身份合法性，校验方法见实例验证',
            nullable: true
        },
        locationCode: {
            type: 'integer',
            description: `位置编码，主要用于接口请求逻辑定位
使用时必须保证每个请求中不重复出现`,
            format: 'int32'
        },
        extras: {
            type: 'string',
            description: '扩展信息',
            nullable: true
        }
    },
    additionalProperties: false,
    description: 'HTTP 请求返回结果'
} as const;

export const HttpStatusCodeSchema = {
    enum: ['Continue', 'SwitchingProtocols', 'Processing', 'EarlyHints', 'OK', 'Created', 'Accepted', 'NonAuthoritativeInformation', 'NoContent', 'ResetContent', 'PartialContent', 'MultiStatus', 'AlreadyReported', 'IMUsed', 'MultipleChoices', 'Ambiguous', 'MovedPermanently', 'Moved', 'Found', 'Redirect', 'SeeOther', 'RedirectMethod', 'NotModified', 'UseProxy', 'Unused', 'TemporaryRedirect', 'RedirectKeepVerb', 'PermanentRedirect', 'BadRequest', 'Unauthorized', 'PaymentRequired', 'Forbidden', 'NotFound', 'MethodNotAllowed', 'NotAcceptable', 'ProxyAuthenticationRequired', 'RequestTimeout', 'Conflict', 'Gone', 'LengthRequired', 'PreconditionFailed', 'RequestEntityTooLarge', 'RequestUriTooLong', 'UnsupportedMediaType', 'RequestedRangeNotSatisfiable', 'ExpectationFailed', 'MisdirectedRequest', 'UnprocessableEntity', 'UnprocessableContent', 'Locked', 'FailedDependency', 'UpgradeRequired', 'PreconditionRequired', 'TooManyRequests', 'RequestHeaderFieldsTooLarge', 'UnavailableForLegalReasons', 'InternalServerError', 'NotImplemented', 'BadGateway', 'ServiceUnavailable', 'GatewayTimeout', 'HttpVersionNotSupported', 'VariantAlsoNegotiates', 'InsufficientStorage', 'LoopDetected', 'NotExtended', 'NetworkAuthenticationRequired'],
    type: 'string'
} as const;

export const IStringValueTypeSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            nullable: true,
            readOnly: true
        },
        properties: {
            type: 'object',
            additionalProperties: {
                nullable: true
            },
            nullable: true,
            readOnly: true
        },
        validator: {
            '$ref': '#/components/schemas/IValueValidator'
        }
    },
    additionalProperties: false
} as const;

export const IValueValidatorSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            nullable: true,
            readOnly: true
        },
        properties: {
            type: 'object',
            additionalProperties: {
                nullable: true
            },
            nullable: true,
            readOnly: true
        }
    },
    additionalProperties: false
} as const;

export const IanaTimeZoneSchema = {
    type: 'object',
    properties: {
        timeZoneName: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const IdInputSchema = {
    required: ['id'],
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        }
    },
    additionalProperties: false
} as const;

export const IdentityRoleCreateDtoSchema = {
    required: ['name'],
    type: 'object',
    properties: {
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            nullable: true,
            readOnly: true
        },
        name: {
            maxLength: 256,
            minLength: 0,
            type: 'string'
        },
        isDefault: {
            type: 'boolean'
        },
        isPublic: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const IdentityRoleDtoSchema = {
    type: 'object',
    properties: {
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            nullable: true,
            readOnly: true
        },
        id: {
            type: 'string',
            format: 'uuid'
        },
        name: {
            type: 'string',
            nullable: true
        },
        isDefault: {
            type: 'boolean'
        },
        isStatic: {
            type: 'boolean'
        },
        isPublic: {
            type: 'boolean'
        },
        concurrencyStamp: {
            type: 'string',
            nullable: true
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        }
    },
    additionalProperties: false
} as const;

export const IdentityRoleDtoListResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/IdentityRoleDto'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const IdentityRoleDtoPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/IdentityRoleDto'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const IdentityRoleUpdateDtoSchema = {
    required: ['name'],
    type: 'object',
    properties: {
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            nullable: true,
            readOnly: true
        },
        name: {
            maxLength: 256,
            minLength: 0,
            type: 'string'
        },
        isDefault: {
            type: 'boolean'
        },
        isPublic: {
            type: 'boolean'
        },
        concurrencyStamp: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const IdentityUserCreateDtoSchema = {
    required: ['email', 'password', 'userName'],
    type: 'object',
    properties: {
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            nullable: true,
            readOnly: true
        },
        userName: {
            maxLength: 256,
            minLength: 0,
            type: 'string'
        },
        name: {
            maxLength: 64,
            minLength: 0,
            type: 'string',
            nullable: true
        },
        surname: {
            maxLength: 64,
            minLength: 0,
            type: 'string',
            nullable: true
        },
        email: {
            maxLength: 256,
            minLength: 0,
            type: 'string',
            format: 'email'
        },
        phoneNumber: {
            maxLength: 16,
            minLength: 0,
            type: 'string',
            nullable: true
        },
        isActive: {
            type: 'boolean'
        },
        lockoutEnabled: {
            type: 'boolean'
        },
        roleNames: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        password: {
            maxLength: 128,
            minLength: 0,
            type: 'string'
        }
    },
    additionalProperties: false
} as const;

export const IdentityUserDtoSchema = {
    type: 'object',
    properties: {
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            nullable: true,
            readOnly: true
        },
        id: {
            type: 'string',
            format: 'uuid'
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        },
        creatorId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        lastModificationTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        lastModifierId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        isDeleted: {
            type: 'boolean'
        },
        deleterId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        deletionTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        tenantId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        userName: {
            type: 'string',
            nullable: true
        },
        name: {
            type: 'string',
            nullable: true
        },
        surname: {
            type: 'string',
            nullable: true
        },
        email: {
            type: 'string',
            nullable: true
        },
        emailConfirmed: {
            type: 'boolean'
        },
        phoneNumber: {
            type: 'string',
            nullable: true
        },
        phoneNumberConfirmed: {
            type: 'boolean'
        },
        isActive: {
            type: 'boolean'
        },
        lockoutEnabled: {
            type: 'boolean'
        },
        accessFailedCount: {
            type: 'integer',
            format: 'int32'
        },
        lockoutEnd: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        concurrencyStamp: {
            type: 'string',
            nullable: true
        },
        entityVersion: {
            type: 'integer',
            format: 'int32'
        },
        lastPasswordChangeTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const IdentityUserUpdateDtoSchema = {
    required: ['email', 'userName'],
    type: 'object',
    properties: {
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            nullable: true,
            readOnly: true
        },
        userName: {
            maxLength: 256,
            minLength: 0,
            type: 'string'
        },
        name: {
            maxLength: 64,
            minLength: 0,
            type: 'string',
            nullable: true
        },
        surname: {
            maxLength: 64,
            minLength: 0,
            type: 'string',
            nullable: true
        },
        email: {
            maxLength: 256,
            minLength: 0,
            type: 'string',
            format: 'email'
        },
        phoneNumber: {
            maxLength: 16,
            minLength: 0,
            type: 'string',
            nullable: true
        },
        isActive: {
            type: 'boolean'
        },
        lockoutEnabled: {
            type: 'boolean'
        },
        roleNames: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        password: {
            maxLength: 128,
            minLength: 0,
            type: 'string',
            nullable: true
        },
        concurrencyStamp: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ImportPlatformThingModelResultDtoSchema = {
    type: 'object',
    properties: {
        ioTPlatformProductId: {
            type: 'string',
            description: '导入目标产品ID',
            nullable: true
        },
        sourceProductId: {
            type: 'string',
            description: '导入文件中记录的源产品ID',
            nullable: true
        },
        thingModelCount: {
            type: 'integer',
            description: '导入的物模型标识符条数',
            format: 'int32'
        },
        extensionCount: {
            type: 'integer',
            description: '导入的扩展子字段条数',
            format: 'int32'
        },
        commandCount: {
            type: 'integer',
            description: '导入的默认操作指令条数',
            format: 'int32'
        },
        success: {
            type: 'boolean',
            description: '是否导入成功（已覆盖数据库并刷新 Redis 缓存）'
        }
    },
    additionalProperties: false,
    description: '平台端物模型导入结果（单个产品）'
} as const;

export const InterfaceMethodApiDescriptionModelSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            nullable: true
        },
        parametersOnMethod: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/MethodParameterApiDescriptionModel'
            },
            nullable: true
        },
        returnValue: {
            '$ref': '#/components/schemas/ReturnValueApiDescriptionModel'
        }
    },
    additionalProperties: false
} as const;

export const IoTDBDynamicObjectPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                type: 'object',
                additionalProperties: {},
                description: '设备动态数据模型'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const IoTPlatformAccountInfoInputSchema = {
    required: ['ioTPlatformType'],
    type: 'object',
    properties: {
        ioTPlatformType: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        }
    },
    additionalProperties: false,
    description: '平台账号信息输入'
} as const;

export const IoTPlatformAccountInfoOutputSchema = {
    type: 'object',
    properties: {
        ioTPlatformType: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformAccount: {
            type: 'string',
            description: '平台账号',
            nullable: true
        },
        ioTPlatformPhoneNumber: {
            type: 'string',
            description: '平台账号手机号',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '平台账号信息'
} as const;

export const IoTPlatformProductInfoInputSchema = {
    required: ['ioTPlatformType'],
    type: 'object',
    properties: {
        ioTPlatformType: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformAccount: {
            type: 'string',
            description: '平台账号',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '产品信息输入'
} as const;

export const IoTPlatformProductInfoOutputSchema = {
    type: 'object',
    properties: {
        ioTPlatformType: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台对应的产品Id',
            nullable: true
        },
        productName: {
            type: 'string',
            description: '产品名称',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '平台产品信息'
} as const;

export const IoTPlatformProductThingModelInfoInputSchema = {
    required: ['ioTPlatformProductId', 'ioTPlatformType'],
    type: 'object',
    properties: {
        ioTPlatformType: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        filedType: {
            type: 'string',
            description: '物联网平台中对应产品物模型属性或者事件类型 JiShe.ServicePro.Core.DataDictionaryTypeConst',
            nullable: true
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品Id'
        }
    },
    additionalProperties: false,
    description: '产品属性信息输入'
} as const;

export const IoTPlatformThingModelCommandDtoSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        },
        creatorId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        lastModificationTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        lastModifierId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        isDeleted: {
            type: 'boolean'
        },
        deleterId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        deletionTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        tenantId: {
            type: 'string',
            description: '租户Id',
            format: 'uuid',
            nullable: true
        },
        remark: {
            type: 'string',
            description: '备注',
            nullable: true
        },
        osaCreatorId: {
            type: 'integer',
            description: '旧系统授权创建者Id',
            format: 'int32',
            nullable: true
        },
        osaLastModifierId: {
            type: 'integer',
            description: '旧系统授权最后修改者Id',
            format: 'int32',
            nullable: true
        },
        osaDeleterId: {
            type: 'integer',
            description: '旧系统授权最后删除者Id',
            format: 'int32',
            nullable: true
        },
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            description: '扩展属性,用于存储自定义字段,JSON格式',
            nullable: true
        },
        thingModelDataId: {
            type: 'string',
            description: '平台端物模型数据Id',
            format: 'uuid'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台中对应的产品Id',
            nullable: true
        },
        standardFieldName: {
            type: 'string',
            description: '管理后台产品标准的物模型属性或者事件名称',
            nullable: true
        },
        operateType: {
            type: 'integer',
            description: '待下发的操作指令类型，例如阀控操作时，是拉闸还是合闸，根据StandardFieldName进行分组',
            format: 'int32'
        },
        issueCommand: {
            type: 'string',
            description: '完整透明转发指令',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '平台端物模型默认操作指令信息表'
} as const;

export const IoTPlatformThingModelCreateInputSchema = {
    type: 'object',
    properties: {
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台中对应的产品Id',
            nullable: true
        },
        filedType: {
            type: 'string',
            description: '物联网平台中对应产品物模型属性或者事件类型 JiShe.ServicePro.Core.DataDictionaryTypeConst',
            nullable: true
        },
        ioTPlatformRawFieldName: {
            type: 'string',
            description: '物联网平台中对应的产品物模型属性或者事件名称',
            nullable: true
        },
        standardFieldName: {
            type: 'string',
            description: '管理后台产品标准的物模型属性或者事件名称',
            nullable: true
        },
        standardFieldValueType: {
            type: 'string',
            description: '标准物模型字段值类型',
            nullable: true
        },
        standardFieldDisplayName: {
            type: 'string',
            description: '标准物模型字段显示名称',
            nullable: true
        },
        isValueNeedConvert: {
            type: 'boolean',
            description: '是否需要值类型转换'
        },
        ioTPlatformRawFieldDataType: {
            type: 'string',
            description: '物联网平台中对应的产品物模型属性或者事件数据类型，int等/>',
            nullable: true
        },
        isSpecialIdentifier: {
            type: 'boolean',
            description: '是否是特殊物模型标识符'
        },
        ioTPlatformRawFieldExtension: {
            type: 'object',
            additionalProperties: {},
            description: '物联网平台中对应产品物模型标识符扩展，用于扩展结构体类型',
            nullable: true
        },
        isOperableIdentifier: {
            type: 'boolean',
            description: '是否可操作物模型标识符'
        },
        accessMode: {
            type: 'string',
            description: '物模型标识符访问模式 JiShe.ServicePro.Core.DevicePropertyAccessMode',
            nullable: true
        },
        identifierType: {
            '$ref': '#/components/schemas/ThingModelIdentifierTypeEnum'
        },
        standardFieldFieldExtension: {
            type: 'object',
            additionalProperties: {},
            description: '标准物模型字段标识符扩展，数组或者结构体时候的参数或者元素名称集合',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const IoTPlatformThingModelExtensionDtoSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        },
        creatorId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        lastModificationTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        lastModifierId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        isDeleted: {
            type: 'boolean'
        },
        deleterId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        deletionTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        tenantId: {
            type: 'string',
            description: '租户Id',
            format: 'uuid',
            nullable: true
        },
        remark: {
            type: 'string',
            description: '备注',
            nullable: true
        },
        osaCreatorId: {
            type: 'integer',
            description: '旧系统授权创建者Id',
            format: 'int32',
            nullable: true
        },
        osaLastModifierId: {
            type: 'integer',
            description: '旧系统授权最后修改者Id',
            format: 'int32',
            nullable: true
        },
        osaDeleterId: {
            type: 'integer',
            description: '旧系统授权最后删除者Id',
            format: 'int32',
            nullable: true
        },
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            description: '扩展属性,用于存储自定义字段,JSON格式',
            nullable: true
        },
        thingModelDataId: {
            type: 'string',
            description: '平台端物模型数据Id',
            format: 'uuid'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台中对应的产品Id',
            nullable: true
        },
        fieldType: {
            type: 'string',
            description: '扩展类型，InputData or OutputData',
            nullable: true
        },
        ioTPlatformRawFieldName: {
            type: 'string',
            description: '物联网平台中对应的产品物模型属性或者事件名称',
            nullable: true
        },
        ioTPlatformRawFieldDataType: {
            type: 'string',
            description: '物联网平台中子元素对应的数据类型，子元素数据据类型映射直接使用此字段',
            nullable: true
        },
        standardFieldName: {
            type: 'string',
            description: '管理后台产品标准的物模型属性或者事件名称',
            nullable: true
        },
        standardFieldDisplayName: {
            type: 'string',
            description: '标准物模型字段显示名称',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '平台端物模型扩展信息映射表'
} as const;

export const IoTPlatformThingModelInfoDtoSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        },
        creatorId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        lastModificationTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        lastModifierId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        isDeleted: {
            type: 'boolean'
        },
        deleterId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        deletionTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        tenantId: {
            type: 'string',
            description: '租户Id',
            format: 'uuid',
            nullable: true
        },
        remark: {
            type: 'string',
            description: '备注',
            nullable: true
        },
        osaCreatorId: {
            type: 'integer',
            description: '旧系统授权创建者Id',
            format: 'int32',
            nullable: true
        },
        osaLastModifierId: {
            type: 'integer',
            description: '旧系统授权最后修改者Id',
            format: 'int32',
            nullable: true
        },
        osaDeleterId: {
            type: 'integer',
            description: '旧系统授权最后删除者Id',
            format: 'int32',
            nullable: true
        },
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            description: '扩展属性,用于存储自定义字段,JSON格式',
            nullable: true
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台中对应的产品Id',
            nullable: true
        },
        filedType: {
            type: 'string',
            description: '物联网平台中对应产品物模型属性或者事件类型 JiShe.ServicePro.Core.DataDictionaryTypeConst',
            nullable: true
        },
        ioTPlatformRawFieldName: {
            type: 'string',
            description: '物联网平台中对应的产品物模型属性或者事件名称',
            nullable: true
        },
        ioTPlatformRawFieldDataType: {
            type: 'string',
            description: '物联网平台中对应的产品物模型属性或者事件数据类型，int等，JiShe.ServicePro.Core.OneNETAllThingModel',
            nullable: true
        },
        ioTPlatformRawFieldExtension: {
            type: 'object',
            additionalProperties: {},
            description: '物联网平台中对应产品物模型标识符扩展，结构体或者数组的时候，是参数的名称与长度的键值对,其他类型就是长度或者值范围',
            nullable: true
        },
        standardFieldName: {
            type: 'string',
            description: '管理后台产品标准的物模型属性或者事件名称',
            nullable: true
        },
        standardFieldValueType: {
            type: 'string',
            description: '标准物模型字段值类型',
            nullable: true
        },
        standardFieldDisplayName: {
            type: 'string',
            description: '标准物模型字段显示名称',
            nullable: true
        },
        standardFieldFieldExtension: {
            type: 'object',
            additionalProperties: {},
            description: '标准物模型字段标识符扩展，数组或者结构体时候的参数或者元素名称集合',
            nullable: true
        },
        isValueNeedConvert: {
            type: 'boolean',
            description: '是否需要值类型转换'
        },
        isSpecialIdentifier: {
            type: 'boolean',
            description: '是否是特殊物模型标识符'
        },
        filedTypeName: {
            type: 'string',
            description: '物模型属性或者事件类型名称',
            nullable: true
        },
        isOperableIdentifier: {
            type: 'boolean',
            description: '是否可操作物模型标识符'
        },
        accessMode: {
            type: 'string',
            description: '物模型标识符访问模式 JiShe.ServicePro.Core.DevicePropertyAccessMode',
            nullable: true
        },
        identifierType: {
            '$ref': '#/components/schemas/ThingModelIdentifierTypeEnum'
        },
        extensionPropertyInfos: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/IoTPlatformThingModelExtensionDto'
            },
            description: '扩展属性信息',
            nullable: true
        },
        commandInfos: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/IoTPlatformThingModelCommandDto'
            },
            description: '扩展指令信息',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '平台端物模型信息'
} as const;

export const IoTPlatformThingModelInfoDtoPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/IoTPlatformThingModelInfoDto'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const IoTPlatformThingModelPageInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        searchKeyWords: {
            type: 'string',
            description: '搜索关键字',
            nullable: true
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台中对应的产品Id',
            nullable: true
        },
        filedType: {
            type: 'string',
            description: '物联网平台中对应产品物模型属性或者事件类型 JiShe.ServicePro.Core.DataDictionaryTypeConst',
            nullable: true
        },
        isOperableIdentifier: {
            type: 'boolean',
            description: '是否可操作标识符',
            nullable: true
        },
        accessMode: {
            type: 'string',
            description: '物模型标识符访问模式 JiShe.ServicePro.Core.DevicePropertyAccessMode',
            nullable: true
        },
        identifierType: {
            '$ref': '#/components/schemas/ThingModelIdentifierTypeEnum'
        }
    },
    additionalProperties: false
} as const;

export const IoTPlatformThingModelUpdateInputSchema = {
    type: 'object',
    properties: {
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台中对应的产品Id',
            nullable: true
        },
        filedType: {
            type: 'string',
            description: '物联网平台中对应产品物模型属性或者事件类型 JiShe.ServicePro.Core.DataDictionaryTypeConst',
            nullable: true
        },
        ioTPlatformRawFieldName: {
            type: 'string',
            description: '物联网平台中对应的产品物模型属性或者事件名称',
            nullable: true
        },
        standardFieldName: {
            type: 'string',
            description: '管理后台产品标准的物模型属性或者事件名称',
            nullable: true
        },
        standardFieldValueType: {
            type: 'string',
            description: '标准物模型字段值类型',
            nullable: true
        },
        standardFieldDisplayName: {
            type: 'string',
            description: '标准物模型字段显示名称',
            nullable: true
        },
        isValueNeedConvert: {
            type: 'boolean',
            description: '是否需要值类型转换'
        },
        ioTPlatformRawFieldDataType: {
            type: 'string',
            description: '物联网平台中对应的产品物模型属性或者事件数据类型，int等/>',
            nullable: true
        },
        isSpecialIdentifier: {
            type: 'boolean',
            description: '是否是特殊物模型标识符'
        },
        ioTPlatformRawFieldExtension: {
            type: 'object',
            additionalProperties: {},
            description: '物联网平台中对应产品物模型标识符扩展，用于扩展结构体类型',
            nullable: true
        },
        isOperableIdentifier: {
            type: 'boolean',
            description: '是否可操作物模型标识符'
        },
        accessMode: {
            type: 'string',
            description: '物模型标识符访问模式 JiShe.ServicePro.Core.DevicePropertyAccessMode',
            nullable: true
        },
        identifierType: {
            '$ref': '#/components/schemas/ThingModelIdentifierTypeEnum'
        },
        standardFieldFieldExtension: {
            type: 'object',
            additionalProperties: {},
            description: '标准物模型字段标识符扩展，数组或者结构体时候的参数或者元素名称集合',
            nullable: true
        },
        id: {
            type: 'string',
            format: 'uuid'
        }
    },
    additionalProperties: false
} as const;

export const IoTPlatformTypeEnumSchema = {
    enum: ['CTWing', 'OneNET', 'EMQX'],
    type: 'string',
    description: '物联网平台类型枚举'
} as const;

export const LanguageInfoSchema = {
    type: 'object',
    properties: {
        cultureName: {
            type: 'string',
            nullable: true
        },
        uiCultureName: {
            type: 'string',
            nullable: true
        },
        displayName: {
            type: 'string',
            nullable: true
        },
        twoLetterISOLanguageName: {
            type: 'string',
            nullable: true,
            readOnly: true
        }
    },
    additionalProperties: false
} as const;

export const LocalizableStringDtoSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            nullable: true
        },
        resource: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const LockUserInputSchema = {
    type: 'object',
    properties: {
        userId: {
            type: 'string',
            format: 'uuid'
        },
        locked: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const Login2FAInputSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            description: '用户名或者邮箱',
            nullable: true
        },
        password: {
            type: 'string',
            description: '密码',
            nullable: true
        },
        code: {
            type: 'string',
            description: '双因素验证码',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '登录'
} as const;

export const LoginInputSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            description: '用户名或者邮箱',
            nullable: true
        },
        password: {
            type: 'string',
            description: '密码',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '登录'
} as const;

export const LoginOidcInputSchema = {
    required: ['code', 'state'],
    type: 'object',
    properties: {
        code: {
            minLength: 1,
            type: 'string',
            description: 'code'
        },
        state: {
            minLength: 1,
            type: 'string',
            description: 'Provider'
        }
    },
    additionalProperties: false,
    description: '登录'
} as const;

export const LoginOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        name: {
            type: 'string',
            nullable: true
        },
        userName: {
            type: 'string',
            nullable: true
        },
        token: {
            type: 'string',
            nullable: true
        },
        refreshToken: {
            type: 'string',
            nullable: true
        },
        roles: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const LoginResultTypeSchema = {
    enum: ['Success', 'InvalidUserNameOrPassword', 'NotAllowed', 'LockedOut', 'RequiresTwoFactor'],
    type: 'string'
} as const;

export const MasterStationInputSchema = {
    required: ['ioTPlatform', 'masterStationAddress'],
    type: 'object',
    properties: {
        masterStationAddress: {
            minLength: 1,
            type: 'string',
            description: '主站地址（host:port）'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        }
    },
    additionalProperties: false,
    description: '主站信息入参（切换主站时选定的目标主站，地址与平台类型成对传入，取值来源为主站下拉列表接口）'
} as const;

export const MasterStationOutputSchema = {
    type: 'object',
    properties: {
        masterName: {
            type: 'string',
            description: '主站显示名称',
            nullable: true
        },
        masterStationAddress: {
            type: 'string',
            description: '主站地址（切换主站接口回传的目标地址）',
            nullable: true
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        }
    },
    additionalProperties: false,
    description: '主站下拉项（切换主站时可选的目标主站，目前固定两项：OneNET 静态地址、EMQX 配置地址）'
} as const;

export const MenuTypeSchema = {
    enum: ['Folder', 'Menu'],
    type: 'string',
    description: '菜单类型'
} as const;

export const MessageAnalysisTestInputSchema = {
    type: 'object',
    properties: {
        functionName: {
            type: 'string',
            description: '函数名称',
            nullable: true
        },
        functionCode: {
            type: 'string',
            description: '函数代码',
            nullable: true
        },
        parameters: {
            type: 'object',
            additionalProperties: {
                nullable: true
            },
            description: '函数参数',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '测试消息解析'
} as const;

export const MessageLevelSchema = {
    enum: ['Warning', 'Information', 'Error'],
    type: 'string',
    description: '消息等级'
} as const;

export const MessageTypeSchema = {
    enum: ['BroadCast', 'Common'],
    type: 'string',
    description: '消息类型'
} as const;

export const MeterReadingPacketInfoPageInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        ioTDataType: {
            type: 'string',
            description: `数据类型，用于构建存储路径
 JiShe.ServicePro.Core.IoTDBDataTypeConst`,
            nullable: true
        },
        deviceType: {
            '$ref': '#/components/schemas/DeviceTypeEnum'
        },
        deviceAddress: {
            type: 'string',
            description: '通信设备地址、用于构建存储路径',
            nullable: true
        },
        startCreationTime: {
            type: 'string',
            description: '开始创建时间',
            format: 'date-time',
            nullable: true
        },
        endCreationTime: {
            type: 'string',
            description: '结束创建时间',
            format: 'date-time',
            nullable: true
        },
        isNeedPaging: {
            type: 'boolean',
            description: '是否需要分页， 默认为true'
        },
        ioTPlatformDeviceOpenInfo: {
            type: 'string',
            description: '物联网平台设备ID',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '分页查询输入'
} as const;

export const MeterReadingPacketInfoPageOutputSchema = {
    type: 'object',
    properties: {
        dataBaseName: {
            type: 'string',
            description: '数据库名称，用于构建存储路径,来自系统配置',
            nullable: true
        },
        ioTDataType: {
            type: 'string',
            description: `数据类型，用于构建存储路径
 JiShe.ServicePro.Core.IoTDBDataTypeConst`,
            nullable: true
        },
        deviceType: {
            type: 'string',
            description: `设备类型，用于构建存储路径
JiShe.ServicePro.Enums.DeviceTypeEnum`,
            nullable: true
        },
        deviceAddress: {
            type: 'string',
            description: '通信设备地址、用于构建存储路径',
            nullable: true
        },
        subDevice: {
            type: 'string',
            description: '子设备',
            nullable: true
        },
        timestamps: {
            type: 'integer',
            description: '时标，也就是业务时间戳，单位纳秒,必须通过DateTimeOffset获取',
            format: 'int64'
        },
        formattedTimestamps: {
            type: 'string',
            description: '时标格式化以后的本地时间',
            format: 'date-time',
            readOnly: true
        },
        timestampStr: {
            type: 'string',
            description: '字符串格式时标',
            nullable: true,
            readOnly: true
        },
        devicePath: {
            type: 'string',
            description: '设备路径,树模型使用，表模型会在数据插入的时候直接获取继承类的名称作为表明',
            nullable: true
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台产品Id',
            nullable: true
        },
        ioTPlatformDeviceOpenInfo: {
            type: 'string',
            description: '物联网平台设备ID',
            nullable: true
        },
        ioTPlatformProductName: {
            type: 'string',
            description: '物联网平台中对应的产品Name',
            nullable: true
        },
        ioTPlatformAccountId: {
            type: 'string',
            description: '物联网平台中对应的账号Id',
            nullable: true
        },
        accountPhoneNumber: {
            type: 'string',
            description: '账户手机号',
            nullable: true
        },
        messageType: {
            type: 'string',
            description: '消息类型',
            nullable: true
        },
        issueRawMessage: {
            type: 'string',
            description: '下发消息体原始内容',
            nullable: true
        },
        issuePayload: {
            type: 'string',
            description: '下发消息体',
            nullable: true
        },
        responseRawMessage: {
            type: 'string',
            description: '下发结果原始内容',
            nullable: true
        },
        responsePayload: {
            type: 'string',
            description: '下发结果',
            nullable: true
        },
        telemetrySource: {
            type: 'integer',
            description: '遥测指令来源',
            format: 'int32'
        },
        telemetrySourceName: {
            type: 'string',
            description: '遥测指令来源',
            nullable: true,
            readOnly: true
        },
        ioTPlatform: {
            type: 'integer',
            description: `设备指令发送平台 
IoTPlatformTypeEnum`,
            format: 'int32'
        },
        ioTPlatformName: {
            type: 'string',
            description: '设备指令发送平台',
            nullable: true,
            readOnly: true
        }
    },
    additionalProperties: false,
    description: '分页查询输出'
} as const;

export const MeterReadingPacketInfoPageOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/MeterReadingPacketInfoPageOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const MethodParameterApiDescriptionModelSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            nullable: true
        },
        typeAsString: {
            type: 'string',
            nullable: true
        },
        type: {
            type: 'string',
            nullable: true
        },
        typeSimple: {
            type: 'string',
            nullable: true
        },
        isOptional: {
            type: 'boolean'
        },
        defaultValue: {
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ModuleApiDescriptionModelSchema = {
    type: 'object',
    properties: {
        rootPath: {
            type: 'string',
            nullable: true
        },
        remoteServiceName: {
            type: 'string',
            nullable: true
        },
        controllers: {
            type: 'object',
            additionalProperties: {
                '$ref': '#/components/schemas/ControllerApiDescriptionModel'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ModuleExtensionDtoSchema = {
    type: 'object',
    properties: {
        entities: {
            type: 'object',
            additionalProperties: {
                '$ref': '#/components/schemas/EntityExtensionDto'
            },
            nullable: true
        },
        configuration: {
            type: 'object',
            additionalProperties: {},
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const MultiTenancyInfoDtoSchema = {
    type: 'object',
    properties: {
        isEnabled: {
            type: 'boolean'
        },
        userSharingStrategy: {
            '$ref': '#/components/schemas/TenantUserSharingStrategy'
        }
    },
    additionalProperties: false
} as const;

export const MyProfileOutputSchema = {
    type: 'object',
    properties: {
        tenantId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        userName: {
            type: 'string',
            nullable: true
        },
        name: {
            type: 'string',
            nullable: true
        },
        surname: {
            type: 'string',
            nullable: true
        },
        email: {
            type: 'string',
            nullable: true
        },
        phoneNumber: {
            type: 'string',
            nullable: true
        },
        isActive: {
            type: 'boolean'
        },
        twoFactorEnabled: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const NameValueSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            nullable: true
        },
        value: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const NeedChangePasswordOutputSchema = {
    type: 'object',
    properties: {
        needChangePassword: {
            type: 'boolean'
        },
        message: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const NetworkTypeEnumSchema = {
    enum: ['WIFI', 'MobileCellularData', 'NBIoT', 'Ethernet', 'Bluetooth', 'ZigBee'],
    type: 'string',
    description: '网络类型'
} as const;

export const NodeTypeEnumSchema = {
    enum: ['DirectlyConnected', 'Gateway', 'SubDevice'],
    type: 'string'
} as const;

export const ObjectExtensionsDtoSchema = {
    type: 'object',
    properties: {
        modules: {
            type: 'object',
            additionalProperties: {
                '$ref': '#/components/schemas/ModuleExtensionDto'
            },
            nullable: true
        },
        enums: {
            type: 'object',
            additionalProperties: {
                '$ref': '#/components/schemas/ExtensionEnumDto'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const OidcConfigurationSchema = {
    type: 'object',
    properties: {
        enabled: {
            type: 'boolean',
            description: '是否启用'
        },
        type: {
            type: 'string',
            description: '类型',
            nullable: true
        },
        clientId: {
            type: 'string',
            description: 'client_id',
            nullable: true
        },
        clientName: {
            type: 'string',
            description: '应用名称',
            nullable: true
        },
        icon: {
            type: 'string',
            description: '应用图标',
            nullable: true
        },
        authUri: {
            type: 'string',
            description: '认证地址',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const OneNETAccountInfoDtoSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        },
        creatorId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        lastModificationTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        lastModifierId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        isDeleted: {
            type: 'boolean'
        },
        deleterId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        deletionTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        tenantId: {
            type: 'string',
            description: '租户Id',
            format: 'uuid',
            nullable: true
        },
        remark: {
            type: 'string',
            description: '备注',
            nullable: true
        },
        osaCreatorId: {
            type: 'integer',
            description: '旧系统授权创建者Id',
            format: 'int32',
            nullable: true
        },
        osaLastModifierId: {
            type: 'integer',
            description: '旧系统授权最后修改者Id',
            format: 'int32',
            nullable: true
        },
        osaDeleterId: {
            type: 'integer',
            description: '旧系统授权最后删除者Id',
            format: 'int32',
            nullable: true
        },
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            description: '扩展属性,用于存储自定义字段,JSON格式',
            nullable: true
        },
        accountName: {
            type: 'string',
            description: '账号名称',
            nullable: true
        },
        oneNETAccountId: {
            type: 'string',
            description: '账号ID',
            nullable: true
        },
        phoneNumber: {
            type: 'string',
            description: '手机号码',
            nullable: true
        },
        accountAccesskey: {
            type: 'string',
            description: '账户通信密钥，平台可以重置密钥',
            nullable: true
        },
        productCount: {
            type: 'integer',
            description: '产品数量',
            format: 'int32'
        }
    },
    additionalProperties: false
} as const;

export const OneNETAccountInfoDtoPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/OneNETAccountInfoDto'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const OneNETDataFlowConfigInputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '产品数据ID',
            format: 'uuid'
        },
        isNeedPushData: {
            type: 'boolean',
            description: '是否需要推送数据（产品级总开关）'
        },
        dataPushRules: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/DataPushRule'
            },
            description: '数据推送规则集合，一条规则 = "数据类型 + 白名单 + 目的地"，区分属性/事件/状态并支持分流',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '数据流转配置输入参数'
} as const;

export const OneNETProductInfoDtoSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        },
        creatorId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        lastModificationTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        lastModifierId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        isDeleted: {
            type: 'boolean'
        },
        deleterId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        deletionTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        tenantId: {
            type: 'string',
            description: '租户Id',
            format: 'uuid',
            nullable: true
        },
        remark: {
            type: 'string',
            description: '备注',
            nullable: true
        },
        osaCreatorId: {
            type: 'integer',
            description: '旧系统授权创建者Id',
            format: 'int32',
            nullable: true
        },
        osaLastModifierId: {
            type: 'integer',
            description: '旧系统授权最后修改者Id',
            format: 'int32',
            nullable: true
        },
        osaDeleterId: {
            type: 'integer',
            description: '旧系统授权最后删除者Id',
            format: 'int32',
            nullable: true
        },
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            description: '扩展属性,用于存储自定义字段,JSON格式',
            nullable: true
        },
        oneNETAccountId: {
            type: 'string',
            description: 'OneNET账户Id',
            nullable: true
        },
        accountPhoneNumber: {
            type: 'string',
            description: '账户手机号',
            nullable: true
        },
        oneNETAccountName: {
            type: 'string',
            description: 'OneNET账户',
            nullable: true
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台对应的产品Id',
            nullable: true
        },
        productName: {
            type: 'string',
            description: '产品名称',
            nullable: true
        },
        productAccesskey: {
            type: 'string',
            description: '产品访问密钥',
            nullable: true
        },
        thingModelFileId: {
            type: 'string',
            description: '物模型文件Id',
            format: 'uuid',
            nullable: true
        },
        thingModelFileName: {
            type: 'string',
            description: '物模型文件名称',
            nullable: true
        },
        isEnabled: {
            type: 'boolean',
            description: '是否启用'
        },
        accessProtocol: {
            type: 'integer',
            description: '接入协议',
            format: 'int32'
        },
        dataProtocol: {
            type: 'integer',
            description: '数据协议',
            format: 'int32'
        },
        nodeType: {
            '$ref': '#/components/schemas/NodeTypeEnum'
        },
        productCreateTime: {
            type: 'string',
            description: '产品创建时间',
            format: 'date-time'
        },
        productUpdateTime: {
            type: 'string',
            description: '最近修改时间',
            format: 'date-time'
        },
        network: {
            type: 'string',
            description: '联网方式',
            nullable: true
        },
        manufacturer: {
            type: 'string',
            description: '产品厂商',
            nullable: true
        },
        model: {
            type: 'string',
            description: '产品型号',
            nullable: true
        },
        brand: {
            type: 'string',
            description: '产品品牌',
            nullable: true
        },
        status: {
            '$ref': '#/components/schemas/ProductStatusEnum'
        },
        ownDeviceCount: {
            type: 'integer',
            description: '自有设备总数',
            format: 'int32'
        },
        onlineDeviceCount: {
            type: 'integer',
            description: '在线设备总数',
            format: 'int32'
        },
        offlineDeviceCount: {
            type: 'integer',
            description: '离线设备数',
            format: 'int32'
        },
        notActiveDeviceCount: {
            type: 'integer',
            description: '未激活设备数',
            format: 'int32'
        },
        communicationAddress: {
            type: 'string',
            description: '通讯服务地址',
            nullable: true
        },
        communicationAddressTLS: {
            type: 'string',
            description: 'TLS通讯服务地址',
            nullable: true
        },
        thingModelInfos: {
            type: 'string',
            description: '平台物模型信息',
            nullable: true
        },
        isNeedPushData: {
            type: 'boolean',
            description: '是否需要推送数据（产品级总开关）'
        },
        dataPushRules: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/DataPushRule'
            },
            description: '数据推送规则集合，区分属性/事件/状态 + 白名单 + 目的地（与实体同为 List<DataPushRule>，Adapt 直接映射）',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const OneNETProductInfoDtoPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/OneNETProductInfoDto'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const OneNetAccountInsertInputSchema = {
    required: ['accountAccesskey', 'accountName', 'oneNETAccountId', 'phoneNumber'],
    type: 'object',
    properties: {
        accountName: {
            minLength: 1,
            type: 'string',
            description: '账号名称'
        },
        oneNETAccountId: {
            minLength: 1,
            type: 'string',
            description: '账号ID'
        },
        phoneNumber: {
            minLength: 1,
            pattern: '^1[3-9]\\d{9}$',
            type: 'string',
            description: '手机号码'
        },
        accountAccesskey: {
            minLength: 1,
            type: 'string',
            description: '账户通信密钥，平台可以重置密钥'
        }
    },
    additionalProperties: false
} as const;

export const OneNetAccountListInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        phoneNumber: {
            type: 'string',
            description: '手机号码',
            nullable: true
        },
        oneNETAccountId: {
            type: 'string',
            description: '账号ID',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const OneNetAccountModifyInputSchema = {
    required: ['accountAccesskey', 'accountName', 'phoneNumber'],
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: 'Id',
            format: 'uuid'
        },
        accountName: {
            minLength: 1,
            type: 'string',
            description: '账号名称'
        },
        phoneNumber: {
            minLength: 1,
            pattern: '^1[3-9]\\d{9}$',
            type: 'string',
            description: '手机号码'
        },
        accountAccesskey: {
            minLength: 1,
            type: 'string',
            description: '账户通信密钥，平台可以重置密钥'
        }
    },
    additionalProperties: false
} as const;

export const OneNetProductInfoInsertInputSchema = {
    required: ['ioTPlatformProductId', 'oneNETAccountId', 'productAccesskey'],
    type: 'object',
    properties: {
        oneNETAccountId: {
            minLength: 1,
            type: 'string',
            description: 'OneNET 账号ID'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '物联网平台对应的产品Id'
        },
        productAccesskey: {
            minLength: 1,
            type: 'string',
            description: '产品访问密钥'
        },
        communicationAddress: {
            type: 'string',
            description: '通讯服务地址',
            nullable: true
        },
        communicationAddressTLS: {
            type: 'string',
            description: 'TLS通讯服务地址',
            nullable: true
        },
        thingModelFileId: {
            type: 'string',
            description: '物模型文件Id',
            format: 'uuid',
            nullable: true
        },
        thingModelFileName: {
            type: 'string',
            description: '物模型文件名称',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const OneNetProductInfoListInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        oneNETAccountId: {
            type: 'string',
            description: 'OneNET账户Id',
            nullable: true
        },
        productName: {
            type: 'string',
            description: '产品名称',
            nullable: true
        },
        model: {
            type: 'string',
            description: '产品型号',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const OneNetProductInfoModifyInputSchema = {
    required: ['ioTPlatformProductId', 'oneNETAccountId', 'productAccesskey'],
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '产品数据ID',
            format: 'uuid'
        },
        oneNETAccountId: {
            minLength: 1,
            type: 'string',
            description: 'OneNET 账号ID'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '物联网平台对应的产品Id'
        },
        productAccesskey: {
            minLength: 1,
            type: 'string',
            description: '产品访问密钥'
        },
        communicationAddress: {
            type: 'string',
            description: '通讯服务地址',
            nullable: true
        },
        communicationAddressTLS: {
            type: 'string',
            description: 'TLS通讯服务地址',
            nullable: true
        },
        thingModelFileId: {
            type: 'string',
            description: '物模型文件Id',
            format: 'uuid',
            nullable: true
        },
        thingModelFileName: {
            type: 'string',
            description: '物模型文件名称',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '修改OneNET产品'
} as const;

export const OpenApiDeviceInfoInputSchema = {
    type: 'object',
    properties: {
        deviceAddress: {
            type: 'string',
            description: '网关设备或直连设备地址，此数据自研设备在生产的时候就已经入库',
            nullable: true
        },
        subDeviceName: {
            type: 'string',
            description: '子设备名称',
            nullable: true
        },
        subDeviceAddress: {
            type: 'string',
            description: '子设备地址',
            nullable: true
        },
        subDeviceIndex: {
            type: 'integer',
            description: '子设备索引，抑或是主设备下唯一标识符',
            format: 'int32'
        },
        subDeviceBrandCode: {
            type: 'string',
            description: '子设备品牌编码',
            nullable: true
        },
        businessSystemSubDeviceDataId: {
            type: 'integer',
            description: '业务系统子设备数据Id',
            format: 'int64',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '开放接口单个设备入参信息'
} as const;

export const OpenApiRequestSchema = {
    type: 'object',
    properties: {
        nonce: {
            type: 'string',
            description: '用于计算签名字符的随机串',
            nullable: true
        },
        signature: {
            type: 'string',
            description: '加密签名，用以校验推送客户端身份合法性，校验方法见实例验证',
            nullable: true
        },
        time: {
            type: 'integer',
            description: '签名有效期（毫秒）',
            format: 'int64'
        },
        msg: {
            type: 'string',
            description: '消息内容，JSON字符串,具体的设备相关信息',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '开放接口请求入参，所有外部接口请求参数'
} as const;

export const OpenTypeSchema = {
    enum: ['Default', 'Component', 'InternalLink', 'ExternalLink'],
    type: 'string',
    description: '打开类型'
} as const;

export const PageDeviceFirmwareInfoInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        firmwareVersion: {
            type: 'string',
            description: '固件版本',
            nullable: true
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台中对应的产品Id',
            nullable: true
        },
        searchKeyword: {
            type: 'string',
            description: '搜索关键字',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '创建设备固件信息'
} as const;

export const PageDeviceInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        deviceAddress: {
            type: 'string',
            description: '设备地址',
            nullable: true
        },
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformDeviceOpenInfo: {
            type: 'string',
            description: '物联网平台中对应的设备Id或者名称',
            nullable: true
        },
        ioTPlatformProductId: {
            type: 'string',
            description: '物联网平台中对应的产品Id',
            nullable: true
        },
        searchKeyword: {
            type: 'string',
            description: '搜索关键字',
            nullable: true
        },
        deviceSourceType: {
            '$ref': '#/components/schemas/DeviceSourceTypeEnum'
        },
        lifeInfo: {
            '$ref': '#/components/schemas/DeviceLifeTypeEnum'
        },
        deviceOnlineStatus: {
            '$ref': '#/components/schemas/DeviceOnlineStatus'
        },
        addressList: {
            type: 'array',
            items: {
                type: 'string'
            },
            description: '设备地址列表（批量查询）',
            nullable: true
        },
        isPlatformPushSuccess: {
            type: 'boolean',
            description: '平台推送是否成功（null=不过滤，true=已同步，false=未同步）',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PageDeviceUpgradeRecordInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        upgradeDate: {
            type: 'string',
            description: '升级日期',
            format: 'date-time',
            nullable: true
        },
        upgradeSource: {
            '$ref': '#/components/schemas/DeviceUpgradeSourceTypeEnum'
        },
        searchKeyword: {
            type: 'string',
            description: '搜索关键字',
            nullable: true
        },
        upgradeIdentifier: {
            type: 'integer',
            description: '升级标识符号',
            format: 'int64',
            nullable: true
        },
        upgradeResult: {
            '$ref': '#/components/schemas/DeviceUpgradeResultTypeEnum'
        }
    },
    additionalProperties: false,
    description: '设备升级记录分页查询输入'
} as const;

export const PageFileObjectInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        startCreationTime: {
            type: 'string',
            description: '开始创建时间',
            format: 'date-time',
            nullable: true
        },
        endCreationTime: {
            type: 'string',
            description: '结束创建时间',
            format: 'date-time',
            nullable: true
        },
        fileName: {
            type: 'string',
            description: '文件名称',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '分页查询文件'
} as const;

export const PageFileObjectOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '文件Id',
            format: 'uuid'
        },
        fileSize: {
            type: 'integer',
            description: '文件大小',
            format: 'int64'
        },
        beautifySize: {
            type: 'string',
            nullable: true,
            readOnly: true
        },
        contentType: {
            type: 'string',
            description: '文件名称',
            nullable: true
        },
        fileName: {
            type: 'string',
            description: '文件名称',
            nullable: true
        },
        creationTime: {
            type: 'string',
            description: '创建时间',
            format: 'date-time'
        }
    },
    additionalProperties: false,
    description: '分页查询文件'
} as const;

export const PageFileObjectOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PageFileObjectOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const PageIdentityUserOutputSchema = {
    type: 'object',
    properties: {
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            nullable: true,
            readOnly: true
        },
        id: {
            type: 'string',
            format: 'uuid'
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        },
        creatorId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        lastModificationTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        lastModifierId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        isDeleted: {
            type: 'boolean'
        },
        deleterId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        deletionTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        tenantId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        userName: {
            type: 'string',
            nullable: true
        },
        name: {
            type: 'string',
            nullable: true
        },
        surname: {
            type: 'string',
            nullable: true
        },
        email: {
            type: 'string',
            nullable: true
        },
        emailConfirmed: {
            type: 'boolean'
        },
        phoneNumber: {
            type: 'string',
            nullable: true
        },
        phoneNumberConfirmed: {
            type: 'boolean'
        },
        isActive: {
            type: 'boolean'
        },
        lockoutEnabled: {
            type: 'boolean'
        },
        accessFailedCount: {
            type: 'integer',
            format: 'int32'
        },
        lockoutEnd: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        concurrencyStamp: {
            type: 'string',
            nullable: true
        },
        entityVersion: {
            type: 'integer',
            format: 'int32'
        },
        lastPasswordChangeTime: {
            type: 'string',
            format: 'date-time',
            nullable: true
        },
        twoFactorEnabled: {
            type: 'boolean',
            description: '是否开启双因素验证码'
        }
    },
    additionalProperties: false
} as const;

export const PageIdentityUserOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PageIdentityUserOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const PageLanguageInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        filter: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '创建语言'
} as const;

export const PageLanguageOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '语言Id',
            format: 'uuid'
        },
        cultureName: {
            type: 'string',
            description: '语言名称',
            nullable: true
        },
        uiCultureName: {
            type: 'string',
            description: 'Ui语言名称',
            nullable: true
        },
        displayName: {
            type: 'string',
            description: '显示名称',
            nullable: true
        },
        flagIcon: {
            type: 'string',
            description: '图标',
            nullable: true
        },
        isEnabled: {
            type: 'boolean',
            description: '是否启用'
        },
        creationTime: {
            type: 'string',
            description: '创建时间',
            format: 'date-time'
        },
        isDefault: {
            type: 'boolean',
            description: '是否是默认语言'
        }
    },
    additionalProperties: false,
    description: '创建语言'
} as const;

export const PageLanguageOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PageLanguageOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const PageLanguageTextInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        cultureName: {
            type: 'string',
            description: '语言',
            nullable: true
        },
        resourceName: {
            type: 'string',
            description: '资源',
            nullable: true
        },
        filter: {
            type: 'string',
            description: '查询条件 name or value',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '创建语言文本'
} as const;

export const PageLanguageTextOutputSchema = {
    type: 'object',
    properties: {
        resourceName: {
            type: 'string',
            description: '资源名称',
            nullable: true
        },
        name: {
            type: 'string',
            description: '名称',
            nullable: true
        },
        value: {
            type: 'string',
            description: '值',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '创建语言文本'
} as const;

export const PageLanguageTextOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PageLanguageTextOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const PageMenuInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        startCreationTime: {
            type: 'string',
            description: '开始创建时间',
            format: 'date-time',
            nullable: true
        },
        endCreationTime: {
            type: 'string',
            description: '结束创建时间',
            format: 'date-time',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '分页查询菜单'
} as const;

export const PageMenuOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '菜单Id',
            format: 'uuid'
        },
        parentId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        name: {
            type: 'string',
            description: '唯一编码',
            nullable: true
        },
        localizationTitle: {
            type: 'string',
            description: '标题',
            nullable: true
        },
        displayTitle: {
            type: 'string',
            description: '标题',
            nullable: true
        },
        title: {
            type: 'string',
            description: '标题',
            nullable: true
        },
        icon: {
            type: 'string',
            description: '图标',
            nullable: true
        },
        keepAlive: {
            type: 'boolean',
            description: '是否缓存'
        },
        hideInMenu: {
            type: 'boolean',
            description: '是否显示'
        },
        order: {
            type: 'integer',
            description: '排序',
            format: 'int32'
        },
        path: {
            type: 'string',
            description: '路由/接口地址',
            nullable: true
        },
        menuType: {
            '$ref': '#/components/schemas/MenuType'
        },
        menuTypeDescription: {
            type: 'string',
            nullable: true,
            readOnly: true
        },
        openType: {
            '$ref': '#/components/schemas/OpenType'
        },
        openTypeDescription: {
            type: 'string',
            nullable: true,
            readOnly: true
        },
        url: {
            type: 'string',
            description: '内外链地址',
            nullable: true
        },
        component: {
            type: 'string',
            description: '组件地址',
            nullable: true
        },
        creationTime: {
            type: 'string',
            description: '创建时间',
            format: 'date-time'
        },
        enabled: {
            type: 'boolean',
            description: '是否启用'
        },
        policy: {
            type: 'string',
            description: '权限',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '分页查询菜单'
} as const;

export const PageMenuOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PageMenuOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const PageTenantConnectionStringInputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '租户id',
            format: 'uuid'
        },
        name: {
            type: 'string',
            description: '连接字符串名称',
            nullable: true
        },
        value: {
            type: 'string',
            description: '连接字符串地址',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PageTenantConnectionStringOutputSchema = {
    type: 'object',
    properties: {
        tenantId: {
            type: 'string',
            description: '租户id',
            format: 'uuid'
        },
        name: {
            type: 'string',
            description: '连接字符串名称',
            nullable: true
        },
        value: {
            type: 'string',
            description: '连接字符串地址',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PageTenantConnectionStringOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PageTenantConnectionStringOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const PageTextTemplateInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        name: {
            type: 'string',
            description: '名称',
            nullable: true
        },
        code: {
            type: 'string',
            description: '编码',
            nullable: true
        },
        content: {
            type: 'string',
            description: '内容',
            nullable: true
        },
        startCreationTime: {
            type: 'string',
            description: '开始创建时间',
            format: 'date-time',
            nullable: true
        },
        endCreationTime: {
            type: 'string',
            description: '结束创建时间',
            format: 'date-time',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '分页查询模板'
} as const;

export const PageTextTemplateOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '模板Id',
            format: 'uuid'
        },
        name: {
            type: 'string',
            description: '名称',
            nullable: true
        },
        code: {
            type: 'string',
            description: '编码',
            nullable: true
        },
        content: {
            type: 'string',
            description: '内容',
            nullable: true
        },
        cultureName: {
            type: 'string',
            description: '语言',
            nullable: true
        },
        creationTime: {
            type: 'string',
            description: '创建时间',
            format: 'date-time'
        }
    },
    additionalProperties: false,
    description: '分页查询模板'
} as const;

export const PageTextTemplateOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PageTextTemplateOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const PagingAuditLogActionOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        tenantId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        auditLogId: {
            type: 'string',
            format: 'uuid'
        },
        serviceName: {
            type: 'string',
            nullable: true
        },
        methodName: {
            type: 'string',
            nullable: true
        },
        parameters: {
            type: 'string',
            nullable: true
        },
        executionTime: {
            type: 'string',
            nullable: true
        },
        executionDuration: {
            type: 'integer',
            format: 'int32'
        },
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PagingAuditLogInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        startTime: {
            type: 'string',
            description: '开始时间',
            format: 'date-time',
            nullable: true
        },
        endTime: {
            type: 'string',
            description: '结束时间',
            format: 'date-time',
            nullable: true
        },
        httpMethod: {
            type: 'string',
            description: '请求方法',
            nullable: true
        },
        url: {
            type: 'string',
            description: '请求地址',
            nullable: true
        },
        userId: {
            type: 'string',
            description: '用户Id',
            format: 'uuid',
            nullable: true
        },
        userName: {
            type: 'string',
            description: '用户名',
            nullable: true
        },
        applicationName: {
            type: 'string',
            description: '应用程序名称',
            nullable: true
        },
        correlationId: {
            type: 'string',
            description: 'RequestId',
            nullable: true
        },
        maxExecutionDuration: {
            type: 'integer',
            description: '最大执行时间',
            format: 'int32',
            nullable: true
        },
        minExecutionDuration: {
            type: 'integer',
            description: '最小执行时间',
            format: 'int32',
            nullable: true
        },
        hasException: {
            type: 'boolean',
            description: '是否有异常',
            nullable: true
        },
        httpStatusCode: {
            '$ref': '#/components/schemas/HttpStatusCode'
        },
        clientIpAddress: {
            type: 'string',
            description: '客户端IP',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PagingAuditLogOutputSchema = {
    type: 'object',
    properties: {
        applicationName: {
            type: 'string',
            nullable: true
        },
        userId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        userName: {
            type: 'string',
            nullable: true
        },
        tenantId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        tenantName: {
            type: 'string',
            nullable: true
        },
        impersonatorUserId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        impersonatorTenantId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        executionTime: {
            type: 'string',
            nullable: true
        },
        executionDuration: {
            type: 'integer',
            format: 'int32'
        },
        clientIpAddress: {
            type: 'string',
            nullable: true
        },
        clientName: {
            type: 'string',
            nullable: true
        },
        clientId: {
            type: 'string',
            nullable: true
        },
        correlationId: {
            type: 'string',
            nullable: true
        },
        browserInfo: {
            type: 'string',
            nullable: true
        },
        httpMethod: {
            type: 'string',
            nullable: true
        },
        url: {
            type: 'string',
            nullable: true
        },
        exceptions: {
            type: 'string',
            nullable: true
        },
        comments: {
            type: 'string',
            nullable: true
        },
        httpStatusCode: {
            type: 'integer',
            format: 'int32',
            nullable: true
        },
        entityChanges: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PagingEntityChangeOutput'
            },
            nullable: true
        },
        actions: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PagingAuditLogActionOutput'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PagingAuditLogOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PagingAuditLogOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const PagingDataDictionaryDetailInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        dataDictionaryId: {
            type: 'string',
            format: 'uuid'
        },
        filter: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PagingDataDictionaryDetailOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        dataDictionaryId: {
            type: 'string',
            description: '所属字典Id',
            format: 'uuid'
        },
        code: {
            type: 'string',
            description: '字典明细编码',
            nullable: true
        },
        order: {
            type: 'integer',
            description: '展现列表时排序用',
            format: 'int32'
        },
        displayText: {
            type: 'string',
            description: '英文显示名',
            nullable: true
        },
        description: {
            type: 'string',
            description: '描述',
            nullable: true
        },
        extendedAttribute: {
            type: 'string',
            description: '扩展属性',
            nullable: true
        },
        extendedAttributeValue: {
            type: 'object',
            additionalProperties: {
                nullable: true
            },
            description: '扩展属性值',
            nullable: true
        },
        isEnabled: {
            type: 'boolean',
            description: '启/停用(默认启用)'
        }
    },
    additionalProperties: false
} as const;

export const PagingDataDictionaryDetailOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PagingDataDictionaryDetailOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const PagingDataDictionaryInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        filter: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PagingDataDictionaryOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        code: {
            type: 'string',
            description: '字典编码',
            nullable: true
        },
        displayText: {
            type: 'string',
            description: '显示名',
            nullable: true
        },
        description: {
            type: 'string',
            description: '描述',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PagingDataDictionaryOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PagingDataDictionaryOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const PagingEntityChangeOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        auditLogId: {
            type: 'string',
            format: 'uuid'
        },
        tenantId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        changeTime: {
            type: 'string',
            nullable: true
        },
        changeType: {
            '$ref': '#/components/schemas/EntityChangeType'
        },
        changeTypeDescription: {
            type: 'string',
            nullable: true
        },
        entityTenantId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        entityId: {
            type: 'string',
            nullable: true
        },
        entityTypeFullName: {
            type: 'string',
            nullable: true
        },
        propertyChanges: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PagingEntityPropertyChangeOutput'
            },
            nullable: true
        },
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PagingEntityPropertyChangeOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        tenantId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        entityChangeId: {
            type: 'string',
            format: 'uuid'
        },
        newValue: {
            type: 'string',
            nullable: true
        },
        originalValue: {
            type: 'string',
            nullable: true
        },
        propertyName: {
            type: 'string',
            nullable: true
        },
        propertyTypeFullName: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PagingIdentitySecurityLogInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        sorting: {
            type: 'string',
            description: '排序',
            nullable: true
        },
        startTime: {
            type: 'string',
            description: '开始时间',
            format: 'date-time',
            nullable: true
        },
        endTime: {
            type: 'string',
            description: '结束时间',
            format: 'date-time',
            nullable: true
        },
        identity: {
            type: 'string',
            nullable: true
        },
        action: {
            type: 'string',
            description: '请求地址',
            nullable: true
        },
        userId: {
            type: 'string',
            description: '用户Id',
            format: 'uuid',
            nullable: true
        },
        userName: {
            type: 'string',
            description: '用户名',
            nullable: true
        },
        applicationName: {
            type: 'string',
            description: '应用程序名称',
            nullable: true
        },
        correlationId: {
            type: 'string',
            description: 'RequestId',
            nullable: true
        },
        clientId: {
            type: 'string',
            description: 'ClientId',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PagingIdentitySecurityLogOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        tenantId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        applicationName: {
            type: 'string',
            nullable: true
        },
        identity: {
            type: 'string',
            nullable: true
        },
        action: {
            type: 'string',
            nullable: true
        },
        userId: {
            type: 'string',
            format: 'uuid',
            nullable: true
        },
        userName: {
            type: 'string',
            nullable: true
        },
        tenantName: {
            type: 'string',
            nullable: true
        },
        clientId: {
            type: 'string',
            nullable: true
        },
        correlationId: {
            type: 'string',
            nullable: true
        },
        clientIpAddress: {
            type: 'string',
            nullable: true
        },
        browserInfo: {
            type: 'string',
            nullable: true
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        }
    },
    additionalProperties: false
} as const;

export const PagingIdentitySecurityLogOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PagingIdentitySecurityLogOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const PagingNotificationInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        title: {
            type: 'string',
            description: '标题',
            nullable: true
        },
        content: {
            type: 'string',
            description: '内容',
            nullable: true
        },
        senderUserId: {
            type: 'string',
            description: '发送者Id',
            format: 'uuid',
            nullable: true
        },
        senderUserName: {
            type: 'string',
            description: '发送者名称',
            nullable: true
        },
        receiverUserId: {
            type: 'string',
            description: '接受者Id',
            format: 'uuid',
            nullable: true
        },
        receiverUserName: {
            type: 'string',
            description: '接受者名称',
            nullable: true
        },
        read: {
            type: 'boolean',
            description: '是否已读',
            nullable: true
        },
        startReadTime: {
            type: 'string',
            description: '已读开始时间',
            format: 'date-time',
            nullable: true
        },
        endReadTime: {
            type: 'string',
            description: '已读结束时间',
            format: 'date-time',
            nullable: true
        },
        messageType: {
            '$ref': '#/components/schemas/MessageType'
        },
        messageLevel: {
            '$ref': '#/components/schemas/MessageLevel'
        }
    },
    additionalProperties: false
} as const;

export const PagingNotificationOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        tenantId: {
            type: 'string',
            description: '租户id',
            format: 'uuid',
            nullable: true
        },
        title: {
            type: 'string',
            description: '消息标题',
            nullable: true
        },
        content: {
            type: 'string',
            description: '消息内容',
            nullable: true
        },
        messageType: {
            '$ref': '#/components/schemas/MessageType'
        },
        messageTypeName: {
            type: 'string',
            nullable: true,
            readOnly: true
        },
        messageLevel: {
            '$ref': '#/components/schemas/MessageLevel'
        },
        messageLevelName: {
            type: 'string',
            nullable: true,
            readOnly: true
        },
        senderUserId: {
            type: 'string',
            description: '发送人',
            format: 'uuid'
        },
        senderUserName: {
            type: 'string',
            description: '发送人用户名',
            nullable: true
        },
        receiveUserId: {
            type: 'string',
            description: `订阅人
消息类型是广播消息时，订阅人为空`,
            format: 'uuid',
            nullable: true
        },
        receiveUserName: {
            type: 'string',
            description: `接收人用户名
消息类型是广播消息时，订接收人用户名为空`,
            nullable: true
        },
        read: {
            type: 'boolean',
            description: '是否已读'
        },
        readTime: {
            type: 'string',
            description: '已读时间',
            format: 'date-time',
            nullable: true
        },
        creationTime: {
            type: 'string',
            format: 'date-time'
        }
    },
    additionalProperties: false
} as const;

export const PagingNotificationOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PagingNotificationOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const PagingNotificationSubscriptionInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        notificationId: {
            type: 'string',
            format: 'uuid'
        },
        receiverUserId: {
            type: 'string',
            description: '接受者Id',
            format: 'uuid',
            nullable: true
        },
        receiverUserName: {
            type: 'string',
            description: '接受者名称',
            nullable: true
        },
        read: {
            type: 'boolean',
            description: '是否已读',
            nullable: true
        },
        startReadTime: {
            type: 'string',
            description: '已读开始时间',
            format: 'date-time',
            nullable: true
        },
        endReadTime: {
            type: 'string',
            description: '已读结束时间',
            format: 'date-time',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PagingNotificationSubscriptionOutputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        tenantId: {
            type: 'string',
            description: '租户id',
            format: 'uuid',
            nullable: true
        },
        notificationId: {
            type: 'string',
            description: '消息Id',
            format: 'uuid'
        },
        receiveUserId: {
            type: 'string',
            description: '接收人id',
            format: 'uuid'
        },
        receiveUserName: {
            type: 'string',
            description: '接收人用户名',
            nullable: true
        },
        read: {
            type: 'boolean',
            description: '是否已读'
        },
        readTime: {
            type: 'string',
            description: '已读时间',
            format: 'date-time'
        },
        title: {
            type: 'string',
            description: '消息标题',
            nullable: true
        },
        content: {
            type: 'string',
            description: '消息内容',
            nullable: true
        },
        messageType: {
            '$ref': '#/components/schemas/MessageType'
        },
        messageTypeName: {
            type: 'string',
            nullable: true,
            readOnly: true
        },
        messageLevel: {
            '$ref': '#/components/schemas/MessageLevel'
        },
        messageLevelName: {
            type: 'string',
            nullable: true,
            readOnly: true
        },
        senderUserId: {
            type: 'string',
            description: '发送人',
            format: 'uuid'
        },
        senderUserName: {
            type: 'string',
            description: '发送人用户名',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PagingNotificationSubscriptionOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PagingNotificationSubscriptionOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const PagingRoleListInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        filter: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PagingTenantInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        filter: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PagingUserListInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        filter: {
            type: 'string',
            description: '关键字',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ParameterApiDescriptionModelSchema = {
    type: 'object',
    properties: {
        nameOnMethod: {
            type: 'string',
            nullable: true
        },
        name: {
            type: 'string',
            nullable: true
        },
        jsonName: {
            type: 'string',
            nullable: true
        },
        type: {
            type: 'string',
            nullable: true
        },
        typeSimple: {
            type: 'string',
            nullable: true
        },
        isOptional: {
            type: 'boolean'
        },
        defaultValue: {
            nullable: true
        },
        constraintTypes: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        bindingSourceId: {
            type: 'string',
            nullable: true
        },
        descriptorName: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ParsingSequenceTypeEnumSchema = {
    enum: ['NativeOrder', 'ByteReversal', 'BCD'],
    type: 'string',
    description: '解析顺序枚举'
} as const;

export const PermissionOutputSchema = {
    type: 'object',
    properties: {
        grants: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        allGrants: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        permissions: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PermissionTreeDto'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const PermissionTreeDtoSchema = {
    type: 'object',
    properties: {
        title: {
            type: 'string',
            nullable: true
        },
        key: {
            type: 'string',
            nullable: true
        },
        children: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PermissionTreeDto'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ProductNodeTypeEnumSchema = {
    enum: ['Device', 'Gateway'],
    type: 'string',
    description: '产品节点类型'
} as const;

export const ProductProtocolEnumSchema = {
    enum: ['TLink', 'MQTT', 'LWM2M', 'HTTP', 'JTT808', 'TCP', 'TCPPrivate', 'UDPPrivate', 'MQTTGateway', 'SouthCloudAccess', 'MQTTSubDevice', 'BluetoothSubDevice', 'ZigBeeSubDevice', 'OtherSubDevice', 'Modbus', 'GB28181', 'GAT1400', 'EHome', 'UDP', 'TR069', 'GBT26875', 'YinTongTCP', 'COAP', 'FACP', 'ACCP', 'FIIA', 'SnapEx', 'CameraV', 'AIVP'],
    type: 'string',
    description: '产品协议'
} as const;

export const ProductStatusEnumSchema = {
    enum: ['Developing', 'InReview', 'ReviewFailed', 'Published', 'OffShelf'],
    type: 'string',
    description: '开发状态枚举'
} as const;

export const PropertyApiDescriptionModelSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            nullable: true
        },
        jsonName: {
            type: 'string',
            nullable: true
        },
        type: {
            type: 'string',
            nullable: true
        },
        typeSimple: {
            type: 'string',
            nullable: true
        },
        isRequired: {
            type: 'boolean'
        },
        minLength: {
            type: 'integer',
            format: 'int32',
            nullable: true
        },
        maxLength: {
            type: 'integer',
            format: 'int32',
            nullable: true
        },
        minimum: {
            type: 'string',
            nullable: true
        },
        maximum: {
            type: 'string',
            nullable: true
        },
        regex: {
            type: 'string',
            nullable: true
        },
        isNullable: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const QueryCTWingAepReceiveMessageInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        ioTDataType: {
            type: 'string',
            description: `数据类型，用于构建存储路径
 JiShe.ServicePro.Core.IoTDBDataTypeConst`,
            nullable: true
        },
        deviceType: {
            '$ref': '#/components/schemas/DeviceTypeEnum'
        },
        deviceAddress: {
            type: 'string',
            description: '通信设备地址、用于构建存储路径',
            nullable: true
        },
        startCreationTime: {
            type: 'string',
            description: '开始创建时间',
            format: 'date-time',
            nullable: true
        },
        endCreationTime: {
            type: 'string',
            description: '结束创建时间',
            format: 'date-time',
            nullable: true
        },
        isNeedPaging: {
            type: 'boolean',
            description: '是否需要分页， 默认为true'
        },
        ioTPlatformDeviceOpenInfo: {
            type: 'string',
            description: '物联网平台设备ID',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '查询CTWing接收消息'
} as const;

export const QueryCTWingAepReceiveMessageOutputSchema = {
    type: 'object',
    properties: {
        dataBaseName: {
            type: 'string',
            description: '数据库名称，用于构建存储路径,来自系统配置',
            nullable: true
        },
        ioTDataType: {
            type: 'string',
            description: `数据类型，用于构建存储路径
 JiShe.ServicePro.Core.IoTDBDataTypeConst`,
            nullable: true
        },
        deviceType: {
            type: 'string',
            description: `设备类型，用于构建存储路径
JiShe.ServicePro.Enums.DeviceTypeEnum`,
            nullable: true
        },
        deviceAddress: {
            type: 'string',
            description: '通信设备地址、用于构建存储路径',
            nullable: true
        },
        subDevice: {
            type: 'string',
            description: '子设备',
            nullable: true
        },
        timestamps: {
            type: 'integer',
            description: '时标，也就是业务时间戳，单位纳秒,必须通过DateTimeOffset获取',
            format: 'int64'
        },
        formattedTimestamps: {
            type: 'string',
            description: '时标格式化以后的本地时间',
            format: 'date-time',
            readOnly: true
        },
        timestampStr: {
            type: 'string',
            description: '字符串格式时标',
            nullable: true,
            readOnly: true
        },
        devicePath: {
            type: 'string',
            description: '设备路径,树模型使用，表模型会在数据插入的时候直接获取继承类的名称作为表明',
            nullable: true
        },
        platformTenantId: {
            type: 'string',
            description: '物联网平台租户Id',
            nullable: true
        },
        productId: {
            type: 'string',
            description: '物联网平台产品Id',
            nullable: true
        },
        serviceId: {
            type: 'string',
            description: '物联网平台服务Id',
            nullable: true
        },
        ioTPlatformDeviceOpenInfo: {
            type: 'string',
            description: '物联网平台设备ID',
            nullable: true
        },
        messageType: {
            type: 'string',
            description: '消息类型',
            nullable: true
        },
        protocol: {
            type: 'string',
            description: '通信协议',
            nullable: true
        },
        focusAddress: {
            type: 'string',
            description: '集中器地址',
            nullable: true
        },
        meterAddress: {
            type: 'string',
            description: '表地址',
            nullable: true
        },
        rawMessage: {
            type: 'string',
            description: '消息上报原始内容',
            nullable: true
        },
        receivedPayload: {
            type: 'string',
            description: '消息上报结果,主要是用于存储上报原始数据通过处理后的结果，并非报文解析结果',
            nullable: true
        },
        receivedTimestamps: {
            type: 'integer',
            description: '消息上报时间，单位毫秒，不是当前系统中的纳秒',
            format: 'int64'
        },
        formattedReceivedTimestamps: {
            type: 'string',
            description: '时标格式化以后的本地时间',
            format: 'date-time',
            readOnly: true
        },
        imsi: {
            type: 'string',
            description: 'IMSI',
            nullable: true
        },
        imei: {
            type: 'string',
            description: 'IMEI',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '查询CTWing接收消息'
} as const;

export const QueryCTWingAepReceiveMessageOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/QueryCTWingAepReceiveMessageOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const QueryOneNETReceiveMessageInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        ioTDataType: {
            type: 'string',
            description: `数据类型，用于构建存储路径
 JiShe.ServicePro.Core.IoTDBDataTypeConst`,
            nullable: true
        },
        deviceType: {
            '$ref': '#/components/schemas/DeviceTypeEnum'
        },
        deviceAddress: {
            type: 'string',
            description: '通信设备地址、用于构建存储路径',
            nullable: true
        },
        startCreationTime: {
            type: 'string',
            description: '开始创建时间',
            format: 'date-time',
            nullable: true
        },
        endCreationTime: {
            type: 'string',
            description: '结束创建时间',
            format: 'date-time',
            nullable: true
        },
        isNeedPaging: {
            type: 'boolean',
            description: '是否需要分页， 默认为true'
        },
        ioTPlatformDeviceOpenInfo: {
            type: 'string',
            description: '物联网平台设备ID',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '查询OneNET接收消息'
} as const;

export const QueryOneNETReceiveMessageOutputSchema = {
    type: 'object',
    properties: {
        dataBaseName: {
            type: 'string',
            description: '数据库名称，用于构建存储路径,来自系统配置',
            nullable: true
        },
        ioTDataType: {
            type: 'string',
            description: `数据类型，用于构建存储路径
 JiShe.ServicePro.Core.IoTDBDataTypeConst`,
            nullable: true
        },
        deviceType: {
            type: 'string',
            description: `设备类型，用于构建存储路径
JiShe.ServicePro.Enums.DeviceTypeEnum`,
            nullable: true
        },
        deviceAddress: {
            type: 'string',
            description: '通信设备地址、用于构建存储路径',
            nullable: true
        },
        subDevice: {
            type: 'string',
            description: '子设备',
            nullable: true
        },
        timestamps: {
            type: 'integer',
            description: '时标，也就是业务时间戳，单位纳秒,必须通过DateTimeOffset获取',
            format: 'int64'
        },
        formattedTimestamps: {
            type: 'string',
            description: '时标格式化以后的本地时间',
            format: 'date-time',
            readOnly: true
        },
        timestampStr: {
            type: 'string',
            description: '字符串格式时标',
            nullable: true,
            readOnly: true
        },
        devicePath: {
            type: 'string',
            description: '设备路径,树模型使用，表模型会在数据插入的时候直接获取继承类的名称作为表明',
            nullable: true
        },
        productId: {
            type: 'string',
            description: '物联网平台产品Id',
            nullable: true
        },
        ioTPlatformDeviceOpenInfo: {
            type: 'string',
            description: '物联网平台设备ID',
            nullable: true
        },
        messageType: {
            type: 'string',
            description: '消息类型',
            nullable: true
        },
        protocol: {
            type: 'string',
            description: '通信协议',
            nullable: true
        },
        rawMessage: {
            type: 'string',
            description: '消息上报原始内容',
            nullable: true
        },
        receivedPayload: {
            type: 'string',
            description: '消息上报结果,主要是用于存储上报原始数据通过处理后的结果，并非报文解析结果',
            nullable: true
        },
        receivedTimestamps: {
            type: 'integer',
            description: '消息上报时间，单位毫秒，不是当前系统中的纳秒',
            format: 'int64'
        },
        formattedReceivedTimestamps: {
            type: 'string',
            description: '时标格式化以后的本地时间',
            format: 'date-time',
            readOnly: true
        },
        isEncrypted: {
            type: 'boolean',
            description: '是否加密'
        },
        plaintextMessage: {
            type: 'string',
            description: '明文消息，加密推送情况下才有',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '查询OneNET接收消息'
} as const;

export const QueryOneNETReceiveMessageOutputPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/QueryOneNETReceiveMessageOutput'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const RefreshTokenInputSchema = {
    required: ['refreshToken'],
    type: 'object',
    properties: {
        userId: {
            type: 'string',
            format: 'uuid'
        },
        refreshToken: {
            minLength: 1,
            type: 'string'
        }
    },
    additionalProperties: false
} as const;

export const RefreshTokenOutputSchema = {
    type: 'object',
    properties: {
        success: {
            type: 'boolean'
        },
        message: {
            type: 'string',
            nullable: true
        },
        token: {
            type: 'string',
            nullable: true
        },
        refreshToken: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const RemoteServiceErrorInfoSchema = {
    type: 'object',
    properties: {
        code: {
            type: 'string',
            nullable: true
        },
        message: {
            type: 'string',
            nullable: true
        },
        details: {
            type: 'string',
            nullable: true
        },
        data: {
            type: 'object',
            additionalProperties: {},
            nullable: true
        },
        validationErrors: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/RemoteServiceValidationErrorInfo'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const RemoteServiceErrorResponseSchema = {
    type: 'object',
    properties: {
        error: {
            '$ref': '#/components/schemas/RemoteServiceErrorInfo'
        }
    },
    additionalProperties: false
} as const;

export const RemoteServiceValidationErrorInfoSchema = {
    type: 'object',
    properties: {
        message: {
            type: 'string',
            nullable: true
        },
        members: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const RemoteStreamContentSchema = {
    type: 'object',
    properties: {
        fileName: {
            type: 'string',
            nullable: true
        },
        contentType: {
            type: 'string',
            nullable: true
        },
        contentLength: {
            type: 'integer',
            format: 'int64',
            nullable: true,
            readOnly: true
        }
    },
    additionalProperties: false
} as const;

export const RemoveRoleToOrganizationUnitInputSchema = {
    type: 'object',
    properties: {
        roleId: {
            type: 'string',
            format: 'uuid'
        },
        organizationUnitId: {
            type: 'string',
            format: 'uuid'
        }
    },
    additionalProperties: false
} as const;

export const RemoveUserToOrganizationUnitInputSchema = {
    type: 'object',
    properties: {
        userId: {
            type: 'string',
            format: 'uuid'
        },
        organizationUnitId: {
            type: 'string',
            format: 'uuid'
        }
    },
    additionalProperties: false
} as const;

export const ResetPasswordInputSchema = {
    required: ['password'],
    type: 'object',
    properties: {
        userId: {
            type: 'string',
            format: 'uuid'
        },
        password: {
            maxLength: 128,
            minLength: 0,
            type: 'string'
        }
    },
    additionalProperties: false
} as const;

export const ResetTwoFactorInputSchema = {
    type: 'object',
    properties: {
        userId: {
            type: 'string',
            format: 'uuid'
        }
    },
    additionalProperties: false
} as const;

export const ResponeResultEnumSchema = {
    enum: ['Success', 'Fail', 'LoginOut', 'TimeOut', 'Exception', 'NotAllowed', 'NotLoggedIn', 'OK', 'NoData', 'BadRequest', 'Unauthorized', 'Forbidden', 'NotFound', 'AepInternalError', 'ServiceUnavailable', 'AsyncService', 'DeviceNotOnline', 'HandlerException', 'HandlerFail'],
    type: 'string',
    description: '响应结果枚举'
} as const;

export const ReturnValueApiDescriptionModelSchema = {
    type: 'object',
    properties: {
        type: {
            type: 'string',
            nullable: true
        },
        typeSimple: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const SelectDataDictionaryDetailInputSchema = {
    type: 'object',
    properties: {
        pageIndex: {
            type: 'integer',
            description: '当前页面.默认从1开始',
            format: 'int32'
        },
        pageSize: {
            type: 'integer',
            description: '每页多少条.每页显示多少记录',
            format: 'int32'
        },
        skipCount: {
            type: 'integer',
            description: '跳过多少条',
            format: 'int32',
            readOnly: true
        },
        sorting: {
            type: 'string',
            description: `排序
<example>
 name desc
</example>`,
            nullable: true
        },
        isPage: {
            type: 'boolean',
            description: '是否分页'
        },
        dataDictionaryId: {
            type: 'string',
            format: 'uuid'
        },
        filter: {
            type: 'string',
            nullable: true
        },
        typeCode: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const SelectResultSchema = {
    type: 'object',
    properties: {
        key: {
            type: 'string',
            description: '下拉框 键',
            nullable: true
        },
        value: {
            type: 'string',
            description: '下拉框 值',
            nullable: true
        },
        secondValue: {
            type: 'string',
            description: '下拉框 值2',
            nullable: true
        },
        thirdValue: {
            description: '下拉框 值3',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '下拉框选项元素'
} as const;

export const SelectResultListInputSchema = {
    required: ['typeName'],
    type: 'object',
    properties: {
        typeName: {
            minLength: 1,
            type: 'string',
            description: '类型名称'
        },
        thirdAttributeTypeName: {
            type: 'string',
            description: '第三级类型',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '获取下拉框数据'
} as const;

export const SendBroadCastMessageInputSchema = {
    type: 'object',
    properties: {
        title: {
            type: 'string',
            description: '消息标题',
            nullable: true
        },
        content: {
            type: 'string',
            description: '消息内容',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const SendCommonMessageInputSchema = {
    type: 'object',
    properties: {
        title: {
            type: 'string',
            description: '消息标题',
            nullable: true
        },
        content: {
            type: 'string',
            description: '消息内容',
            nullable: true
        },
        receiveUserId: {
            type: 'string',
            description: '发送人',
            format: 'uuid'
        },
        receiveUserName: {
            type: 'string',
            description: '发送人名称',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const ServiceProApplicationConfigurationDtoSchema = {
    type: 'object',
    properties: {
        oidcConfiguration: {
            '$ref': '#/components/schemas/ApplicationOidcConfigurationDto'
        },
        multiTenancy: {
            '$ref': '#/components/schemas/MultiTenancyInfoDto'
        }
    },
    additionalProperties: false
} as const;

export const SetBatchReadInputSchema = {
    type: 'object',
    properties: {
        ids: {
            type: 'array',
            items: {
                type: 'string',
                format: 'uuid'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const SetDataDictinaryDetailInputSchema = {
    required: ['isEnabled'],
    type: 'object',
    properties: {
        dataDictionaryId: {
            type: 'string',
            format: 'uuid'
        },
        dataDictionayDetailId: {
            type: 'string',
            format: 'uuid'
        },
        isEnabled: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const SetReadInputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        }
    },
    additionalProperties: false
} as const;

export const SettingItemOutputSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            description: '名称',
            nullable: true
        },
        displayName: {
            type: 'string',
            description: '显示名称',
            nullable: true
        },
        description: {
            type: 'string',
            description: '描述',
            nullable: true
        },
        value: {
            type: 'string',
            description: '值',
            nullable: true
        },
        type: {
            type: 'string',
            description: '前端控件类型',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const SettingOutputSchema = {
    type: 'object',
    properties: {
        group: {
            type: 'string',
            description: '分组',
            nullable: true
        },
        groupDisplayName: {
            type: 'string',
            description: '分组显示名称',
            nullable: true
        },
        settingItemOutput: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/SettingItemOutput'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const StringIdInputSchema = {
    required: ['id'],
    type: 'object',
    properties: {
        id: {
            minLength: 1,
            type: 'string'
        }
    },
    additionalProperties: false
} as const;

export const StringStringFromSelectorSchema = {
    type: 'object',
    properties: {
        value: {
            type: 'string',
            nullable: true,
            readOnly: true
        },
        label: {
            type: 'string',
            nullable: true,
            readOnly: true
        }
    },
    additionalProperties: false
} as const;

export const TenantCreateDtoSchema = {
    required: ['adminEmailAddress', 'adminPassword', 'name'],
    type: 'object',
    properties: {
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            nullable: true,
            readOnly: true
        },
        name: {
            maxLength: 64,
            minLength: 0,
            type: 'string'
        },
        adminEmailAddress: {
            maxLength: 256,
            minLength: 1,
            type: 'string',
            format: 'email'
        },
        adminPassword: {
            maxLength: 128,
            minLength: 1,
            type: 'string'
        }
    },
    additionalProperties: false
} as const;

export const TenantDtoSchema = {
    type: 'object',
    properties: {
        extraProperties: {
            type: 'object',
            additionalProperties: {},
            nullable: true,
            readOnly: true
        },
        id: {
            type: 'string',
            format: 'uuid'
        },
        name: {
            type: 'string',
            nullable: true
        },
        concurrencyStamp: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const TenantDtoPagedResultDtoSchema = {
    type: 'object',
    properties: {
        items: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/TenantDto'
            },
            nullable: true
        },
        totalCount: {
            type: 'integer',
            format: 'int64'
        }
    },
    additionalProperties: false
} as const;

export const TenantUserSharingStrategySchema = {
    enum: ['Isolated', 'Shared'],
    type: 'string'
} as const;

export const ThingModelIdentifierTypeEnumSchema = {
    enum: ['TAG', 'FIELD', 'ATTRIBUTE'],
    type: 'string',
    description: '设备物模型标识符类型枚举'
} as const;

export const TimeZoneSchema = {
    type: 'object',
    properties: {
        iana: {
            '$ref': '#/components/schemas/IanaTimeZone'
        },
        windows: {
            '$ref': '#/components/schemas/WindowsTimeZone'
        }
    },
    additionalProperties: false
} as const;

export const TimingDtoSchema = {
    type: 'object',
    properties: {
        timeZone: {
            '$ref': '#/components/schemas/TimeZone'
        }
    },
    additionalProperties: false
} as const;

export const TreeOutputSchema = {
    type: 'object',
    properties: {
        title: {
            type: 'string',
            nullable: true
        },
        key: {
            type: 'string',
            format: 'uuid'
        },
        children: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/TreeOutput'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const TupIsThroughEnumSchema = {
    enum: ['TransparentTransmission', 'NonTransparentTransmission', 'ScriptParsing'],
    type: 'string',
    description: '数据解析方式'
} as const;

export const TypeApiDescriptionModelSchema = {
    type: 'object',
    properties: {
        baseType: {
            type: 'string',
            nullable: true
        },
        isEnum: {
            type: 'boolean'
        },
        enumNames: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        enumValues: {
            type: 'array',
            items: {},
            nullable: true
        },
        genericArguments: {
            type: 'array',
            items: {
                type: 'string'
            },
            nullable: true
        },
        properties: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/PropertyApiDescriptionModel'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const UpdateDataDictinaryInputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        code: {
            type: 'string',
            nullable: true
        },
        displayText: {
            type: 'string',
            nullable: true
        },
        description: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const UpdateDetailInputSchema = {
    type: 'object',
    properties: {
        dataDictionaryId: {
            type: 'string',
            format: 'uuid'
        },
        id: {
            type: 'string',
            format: 'uuid'
        },
        displayText: {
            type: 'string',
            nullable: true
        },
        description: {
            type: 'string',
            nullable: true
        },
        order: {
            type: 'integer',
            format: 'int32'
        },
        extendedAttribute: {
            type: 'string',
            description: '扩展属性',
            nullable: true
        },
        extendedAttributeValue: {
            type: 'object',
            additionalProperties: {},
            description: '扩展属性值信息',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const UpdateDeviceEncryptionTypeForApiInputSchema = {
    required: ['id'],
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        encryptionType: {
            '$ref': '#/components/schemas/DeviceAuthenticationModeEnum'
        }
    },
    additionalProperties: false,
    description: '切换设备鉴权方式（一型一密 / 一机一密）入参'
} as const;

export const UpdateDeviceFirmwareInfoInputSchema = {
    required: ['firmwareFileId', 'firmwareFileName', 'firmwareHashCode', 'firmwareLength', 'firmwareVersion', 'id', 'ioTPlatform', 'ioTPlatformProductId', 'ioTPlatformProductName'],
    type: 'object',
    properties: {
        ioTPlatform: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品Id'
        },
        ioTPlatformProductName: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品名称'
        },
        firmwareVersion: {
            minLength: 1,
            type: 'string',
            description: '固件版本'
        },
        firmwareFileId: {
            type: 'string',
            description: '固件文件Id',
            format: 'uuid'
        },
        firmwareFileName: {
            minLength: 1,
            type: 'string',
            description: '固件文件名称'
        },
        firmwareHashCode: {
            minLength: 1,
            type: 'string',
            description: '固件哈希值'
        },
        firmwareLength: {
            type: 'integer',
            description: '固件文件长度',
            format: 'int64'
        },
        id: {
            type: 'string',
            description: '数据Id',
            format: 'uuid'
        }
    },
    additionalProperties: false,
    description: '更新固件信息'
} as const;

export const UpdateDeviceSecKeyForApiInputSchema = {
    required: ['id'],
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        secKey: {
            type: 'string',
            description: '设备接入鉴权密码明文，长度不超过32个字符；缺省时由服务端自动生成',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '更新设备密码入参'
} as const;

export const UpdateFeatureDtoSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            nullable: true
        },
        value: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const UpdateFeatureInputSchema = {
    type: 'object',
    properties: {
        providerName: {
            type: 'string',
            nullable: true
        },
        providerKey: {
            type: 'string',
            nullable: true
        },
        updateFeaturesDto: {
            '$ref': '#/components/schemas/UpdateFeaturesDto'
        }
    },
    additionalProperties: false
} as const;

export const UpdateFeaturesDtoSchema = {
    type: 'object',
    properties: {
        features: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/UpdateFeatureDto'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const UpdateIoTPlatformProductThingModelInfoInputSchema = {
    required: ['ioTPlatformProductId', 'ioTPlatformType'],
    type: 'object',
    properties: {
        ioTPlatformType: {
            '$ref': '#/components/schemas/IoTPlatformTypeEnum'
        },
        ioTPlatformProductId: {
            minLength: 1,
            type: 'string',
            description: '物联网平台中对应的产品Id'
        }
    },
    additionalProperties: false,
    description: '平台产品属性更新输入'
} as const;

export const UpdateLanguageInputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '语言Id',
            format: 'uuid'
        },
        cultureName: {
            type: 'string',
            description: '语言名称',
            nullable: true
        },
        uiCultureName: {
            type: 'string',
            description: 'Ui语言名称',
            nullable: true
        },
        displayName: {
            type: 'string',
            description: '显示名称',
            nullable: true
        },
        flagIcon: {
            type: 'string',
            description: '图标',
            nullable: true
        },
        isEnabled: {
            type: 'boolean',
            description: '是否启用'
        }
    },
    additionalProperties: false,
    description: '删除语言'
} as const;

export const UpdateLanguageTextInputSchema = {
    required: ['cultureName', 'name', 'resourceName', 'value'],
    type: 'object',
    properties: {
        resourceName: {
            minLength: 1,
            type: 'string',
            description: '资源名称'
        },
        cultureName: {
            minLength: 1,
            type: 'string',
            description: '语言名称'
        },
        name: {
            minLength: 1,
            type: 'string',
            description: '名称'
        },
        value: {
            minLength: 1,
            type: 'string',
            description: '值'
        }
    },
    additionalProperties: false,
    description: '删除语言文本'
} as const;

export const UpdateMenuInputSchema = {
    required: ['hideInMenu', 'keepAlive', 'name', 'order', 'path', 'title'],
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '菜单Id',
            format: 'uuid'
        },
        name: {
            minLength: 1,
            type: 'string',
            description: '唯一编码'
        },
        title: {
            minLength: 1,
            type: 'string',
            description: '标题'
        },
        icon: {
            type: 'string',
            description: '图标',
            nullable: true
        },
        keepAlive: {
            type: 'boolean',
            description: '是否缓存'
        },
        hideInMenu: {
            type: 'boolean',
            description: '是否显示'
        },
        order: {
            type: 'integer',
            description: '排序',
            format: 'int32'
        },
        path: {
            minLength: 1,
            type: 'string',
            description: '路由地址'
        },
        menuType: {
            '$ref': '#/components/schemas/MenuType'
        },
        openType: {
            '$ref': '#/components/schemas/OpenType'
        },
        url: {
            type: 'string',
            description: '内外链地址',
            nullable: true
        },
        component: {
            type: 'string',
            description: '组件地址',
            nullable: true
        },
        enabled: {
            type: 'boolean'
        },
        policy: {
            type: 'string',
            description: '权限',
            nullable: true
        }
    },
    additionalProperties: false,
    description: '更新菜单'
} as const;

export const UpdateOrganizationUnitInputSchema = {
    type: 'object',
    properties: {
        displayName: {
            type: 'string',
            nullable: true
        },
        id: {
            type: 'string',
            format: 'uuid'
        }
    },
    additionalProperties: false
} as const;

export const UpdatePermissionDtoSchema = {
    type: 'object',
    properties: {
        name: {
            type: 'string',
            nullable: true
        },
        isGranted: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const UpdatePermissionsDtoSchema = {
    type: 'object',
    properties: {
        permissions: {
            type: 'array',
            items: {
                '$ref': '#/components/schemas/UpdatePermissionDto'
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const UpdateRoleInputSchema = {
    type: 'object',
    properties: {
        roleId: {
            type: 'string',
            format: 'uuid'
        },
        roleInfo: {
            '$ref': '#/components/schemas/IdentityRoleUpdateDto'
        }
    },
    additionalProperties: false
} as const;

export const UpdateRolePermissionsInputSchema = {
    type: 'object',
    properties: {
        providerName: {
            type: 'string',
            nullable: true
        },
        providerKey: {
            type: 'string',
            nullable: true
        },
        updatePermissionsDto: {
            '$ref': '#/components/schemas/UpdatePermissionsDto'
        }
    },
    additionalProperties: false
} as const;

export const UpdateSettingInputSchema = {
    type: 'object',
    properties: {
        values: {
            type: 'object',
            additionalProperties: {
                type: 'string',
                nullable: true
            },
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const UpdateStatusInputSchema = {
    required: ['id', 'upgradeStatus'],
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '设备升级记录Id',
            format: 'uuid'
        },
        upgradeStatus: {
            '$ref': '#/components/schemas/DeviceUpgradeStatusTypeEnum'
        }
    },
    additionalProperties: false,
    description: '更新升级状态'
} as const;

export const UpdateTenantInputSchema = {
    type: 'object',
    properties: {
        id: {
            type: 'string',
            format: 'uuid'
        },
        name: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;

export const UpdateTextTemplateInputSchema = {
    required: ['code', 'content', 'cultureName', 'name'],
    type: 'object',
    properties: {
        id: {
            type: 'string',
            description: '模板Id',
            format: 'uuid'
        },
        name: {
            minLength: 1,
            type: 'string',
            description: '名称'
        },
        code: {
            minLength: 1,
            type: 'string',
            description: '编码'
        },
        content: {
            minLength: 1,
            type: 'string',
            description: '内容'
        },
        cultureName: {
            minLength: 1,
            type: 'string',
            description: '语言'
        }
    },
    additionalProperties: false,
    description: '更新模板'
} as const;

export const UpdateUserInputSchema = {
    type: 'object',
    properties: {
        userId: {
            type: 'string',
            format: 'uuid'
        },
        userInfo: {
            '$ref': '#/components/schemas/IdentityUserUpdateDto'
        }
    },
    additionalProperties: false
} as const;

export const UserLoginInfoSchema = {
    required: ['password', 'userNameOrEmailAddress'],
    type: 'object',
    properties: {
        userNameOrEmailAddress: {
            maxLength: 255,
            minLength: 0,
            type: 'string'
        },
        password: {
            maxLength: 32,
            minLength: 0,
            type: 'string',
            format: 'password'
        },
        rememberMe: {
            type: 'boolean'
        }
    },
    additionalProperties: false
} as const;

export const WindowsTimeZoneSchema = {
    type: 'object',
    properties: {
        timeZoneId: {
            type: 'string',
            nullable: true
        }
    },
    additionalProperties: false
} as const;