import {z} from 'zod' export type GetApiApiTenantProfileTenantProfileIdArgs = {tenantProfileId: string}; export type GetApiApiTenantProfileTenantProfileIdOptions = {baseUrl?: string | undefined, fetch?: typeof fetch | undefined}; export const tenantProfileId = z.object({id: z.string(), entityType: z.literal("TENANT_PROFILE")}); export const defaultTenantProfileConfiguration = z.object({type: z.string(), maxDevices: z.number().int().optional(), maxAssets: z.number().int().optional(), maxCustomers: z.number().int().optional(), maxUsers: z.number().int().optional(), maxDashboards: z.number().int().optional(), maxRuleChains: z.number().int().optional(), maxEdges: z.number().int().optional(), maxResourcesInBytes: z.number().int().optional(), maxOtaPackagesInBytes: z.number().int().optional(), maxResourceSize: z.number().int().optional(), transportTenantMsgRateLimit: z.string().optional(), transportTenantTelemetryMsgRateLimit: z.string().optional(), transportTenantTelemetryDataPointsRateLimit: z.string().optional(), transportDeviceMsgRateLimit: z.string().optional(), transportDeviceTelemetryMsgRateLimit: z.string().optional(), transportDeviceTelemetryDataPointsRateLimit: z.string().optional(), transportGatewayMsgRateLimit: z.string().optional(), transportGatewayTelemetryMsgRateLimit: z.string().optional(), transportGatewayTelemetryDataPointsRateLimit: z.string().optional(), transportGatewayDeviceMsgRateLimit: z.string().optional(), transportGatewayDeviceTelemetryMsgRateLimit: z.string().optional(), transportGatewayDeviceTelemetryDataPointsRateLimit: z.string().optional(), tenantEntityExportRateLimit: z.string().optional(), tenantEntityImportRateLimit: z.string().optional(), tenantNotificationRequestsRateLimit: z.string().optional(), tenantNotificationRequestsPerRuleRateLimit: z.string().optional(), maxTransportMessages: z.number().int().optional(), maxTransportDataPoints: z.number().int().optional(), maxREExecutions: z.number().int().optional(), maxJSExecutions: z.number().int().optional(), maxTbelExecutions: z.number().int().optional(), maxDPStorageDays: z.number().int().optional(), maxRuleNodeExecutionsPerMessage: z.number().int().optional(), maxDebugModeDurationMinutes: z.number().int().optional(), maxEmails: z.number().int().optional(), smsEnabled: z.boolean().optional(), maxSms: z.number().int().optional(), maxCreatedAlarms: z.number().int().optional(), tenantServerRestLimitsConfiguration: z.string().optional(), customerServerRestLimitsConfiguration: z.string().optional(), maxWsSessionsPerTenant: z.number().int().optional(), maxWsSessionsPerCustomer: z.number().int().optional(), maxWsSessionsPerRegularUser: z.number().int().optional(), maxWsSessionsPerPublicUser: z.number().int().optional(), wsMsgQueueLimitPerSession: z.number().int().optional(), maxWsSubscriptionsPerTenant: z.number().int().optional(), maxWsSubscriptionsPerCustomer: z.number().int().optional(), maxWsSubscriptionsPerRegularUser: z.number().int().optional(), maxWsSubscriptionsPerPublicUser: z.number().int().optional(), wsUpdatesPerSessionRateLimit: z.string().optional(), cassandraReadQueryTenantCoreRateLimits: z.string().optional(), cassandraWriteQueryTenantCoreRateLimits: z.string().optional(), cassandraReadQueryTenantRuleEngineRateLimits: z.string().optional(), cassandraWriteQueryTenantRuleEngineRateLimits: z.string().optional(), edgeEventRateLimits: z.string().optional(), edgeEventRateLimitsPerEdge: z.string().optional(), edgeUplinkMessagesRateLimits: z.string().optional(), edgeUplinkMessagesRateLimitsPerEdge: z.string().optional(), defaultStorageTtlDays: z.number().int().optional(), alarmsTtlDays: z.number().int().optional(), rpcTtlDays: z.number().int().optional(), queueStatsTtlDays: z.number().int().optional(), ruleEngineExceptionsTtlDays: z.number().int().optional(), warnThreshold: z.number().optional(), maxCalculatedFieldsPerEntity: z.number().int().optional(), maxArgumentsPerCF: z.number().int().optional(), minAllowedScheduledUpdateIntervalInSecForCF: z.number().int().optional(), maxRelationLevelPerCfArgument: z.number().int().optional(), maxRelatedEntitiesToReturnPerCfArgument: z.number().int().optional(), maxDataPointsPerRollingArg: z.number().int().optional(), maxStateSizeInKBytes: z.number().int().optional(), maxSingleValueArgumentSizeInKBytes: z.number().int().optional(), minAllowedDeduplicationIntervalInSecForCF: z.number().int().optional(), minAllowedAggregationIntervalInSecForCF: z.number().int().optional(), intermediateAggregationIntervalInSecForCF: z.number().int().optional(), cfReevaluationCheckInterval: z.number().int().optional(), alarmsReevaluationInterval: z.number().int().optional()}); export const submitStrategy = z.object({type: z.enum(["BURST", "BATCH", "SEQUENTIAL_BY_ORIGINATOR", "SEQUENTIAL_BY_TENANT", "SEQUENTIAL"]).optional(), batchSize: z.number().int().optional()}); export const processingStrategy = z.object({type: z.enum(["SKIP_ALL_FAILURES", "SKIP_ALL_FAILURES_AND_TIMED_OUT", "RETRY_ALL", "RETRY_FAILED", "RETRY_TIMED_OUT", "RETRY_FAILED_AND_TIMED_OUT"]).optional(), retries: z.number().int().optional(), failurePercentage: z.number().optional(), pauseBetweenRetries: z.number().int().optional(), maxPauseBetweenRetries: z.number().int().optional()}); export const jsonNode = z.unknown(); export const tenantProfileQueueConfiguration = z.object({name: z.string().optional(), topic: z.string().optional(), pollInterval: z.number().int().optional(), partitions: z.number().int().optional(), consumerPerPartition: z.boolean().optional(), packProcessingTimeout: z.number().int().optional(), submitStrategy: submitStrategy.optional(), processingStrategy: processingStrategy.optional(), additionalInfo: jsonNode.optional()}); export const tenantProfileData = z.object({configuration: defaultTenantProfileConfiguration.optional(), queueConfiguration: z.array(tenantProfileQueueConfiguration).optional()}); export const tenantProfile = z.object({id: tenantProfileId.optional(), createdTime: z.number().int().optional(), name: z.string().optional(), description: z.string().optional(), isolatedTbRuleEngine: z.boolean().optional(), profileData: tenantProfileData.optional(), default: z.boolean().optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * Get Tenant Profile (getTenantProfileById) * * GET /api/tenantProfile/{tenantProfileId} */ export const getApiApiTenantProfileTenantProfileId = async (args: GetApiApiTenantProfileTenantProfileIdArgs, options?: GetApiApiTenantProfileTenantProfileIdOptions) => { const {baseUrl = "https://demo.thingsboard.io", fetch: fetchFn = fetch} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/json") const url = `${baseUrl.replace(/\/+$/, '')}/api/tenantProfile/${encodeURIComponent(String(args.tenantProfileId))}${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "GET", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(tenantProfile, await res.json()) };