UNPKG

@usegrant/sdk

Version:

TypeSafe TypeScript SDK for accessing the UseGrant REST API

1 lines 20.8 kB
{"version":3,"file":"schema-BX90jiDJ.cjs","names":[],"sources":["../src/schema.ts"],"sourcesContent":["import { z } from 'zod/v4';\n\nconst FOURTY_EIGHT_HOURS = 48 * 60 * 60 * 1000;\n\nexport const CreateProviderSchema = z.object({\n name: z\n .string()\n .describe('The name of the provider')\n .min(3, 'Name must be at least 3 characters long')\n .max(50, 'Name must be less than 50 characters long'),\n description: z\n .string()\n .describe('The description of the provider')\n .min(1, 'Description is required')\n .max(100, 'Description must be less than 100 characters long'),\n});\n\nexport const ConditionSchema = z.object({\n key: z\n .string('Please provide a condition key.')\n .describe('The key of the condition')\n .min(1, 'Please provide a condition key.')\n .max(10, 'Condition key must be at most 10 characters long.'),\n operator: z\n .enum(['stringEquals', 'stringLike', 'stringNotEquals', 'stringNotLike'])\n .describe('The operator of the condition'),\n value: z\n .string('Please provide a condition value.')\n .describe('The value of the condition')\n .min(1, 'Please provide a condition value.')\n .max(100, 'Condition value must be at most 100 characters long.'),\n});\n\nexport const CreateClientSchema = z.object({\n name: z\n .string()\n .describe('The name of the client')\n .min(3, 'Name must be at least 3 characters long')\n .max(50, 'Name must be less than 50 characters long'),\n audience: z\n .string()\n .describe('The audience of the client')\n .min(3, 'Audience must be at least 3 characters long')\n .max(100, 'Audience must be less than 100 characters long'),\n});\n\nexport const AddDomainSchema = z.object({\n domain: z\n .string('Please enter a domain name.')\n .regex(/^(?!:\\/\\/)([a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z]{2,}$/, 'Please enter a valid domain name.')\n .regex(/^(?!www\\.)/, 'Domain name cannot start with www.')\n .min(3, 'Domain name must be at least 3 characters long.')\n .max(255, 'Domain name must be less than 255 characters long.'),\n});\n\nexport const CreateTokenSchema = z.object({\n expiresIn: z\n .number()\n .describe('The number of seconds the token will be valid for')\n .max(FOURTY_EIGHT_HOURS, 'Expires in must be less than 48 hours')\n .optional(),\n useJwtType: z.boolean().describe('Whether to use at+jwt token type in the header').optional(),\n audienceAsArray: z.boolean().describe('Whether to use an array of audiences').optional(),\n forceDefaultDomain: z.boolean().describe('Whether to force the default domain').optional(),\n});\n\nexport const CreateTenantSchema = z.object({\n name: z.string().describe('The name of the tenant').min(3, 'Name must be at least 3 characters long'),\n description: z\n .string()\n .describe('The description of the tenant')\n .min(1, 'Description is required')\n .max(100, 'Description must be less than 200 characters long'),\n});\n\nexport const CreateTenantProviderSchema = z.object({\n url: z\n .url('Please provide a valid URL.')\n .describe('The URL of the provider')\n .transform((url) => url.replace(/\\/$/, '')),\n fingerprints: z\n .array(\n z\n .string('Please provide the provider fingerprint.')\n .describe('The fingerprint of the provider')\n .min(32, { message: 'Fingerprint must be at least 32 characters long.' })\n .max(64, { message: 'Fingerprint must be at most 64 characters long.' }),\n )\n .min(1, 'At least one fingerprint is required.')\n .max(5, 'At most 5 fingerprints are allowed.'),\n audience: z\n .string('Please provide the provider audience.')\n .describe('The audience of the provider')\n .min(3, 'Provider audience must be at least 3 characters long.')\n .max(100, 'Provider audience must be at most 100 characters long.')\n .trim(),\n earliestIssuanceTimeAllowed: z.coerce\n .number('Please provide the earliest issuance time allowed.')\n .describe('The earliest issuance time allowed in hours')\n .min(0, 'Earliest issuance time allowed must be at least 0.')\n .max(12, 'Earliest issuance time allowed must be at most 12.'),\n});\n\nexport const CreateTenantProviderPolicySchema = z.object({\n name: z\n .string('Please provide a name for the tenant provider policy.')\n .describe('The name of the tenant provider policy')\n .min(3, 'Name must be at least 3 characters long'),\n description: z\n .string('Please provide a description for the tenant provider policy.')\n .describe('The description of the tenant provider policy')\n .min(10, 'Description must be at least 10 characters long')\n .max(100, 'Description must be less than 100 characters long'),\n audience: z\n .string('Please provide the audience for the tenant provider policy.')\n .describe('The audience of the tenant provider policy')\n .min(3, 'Audience must be at least 3 characters long.')\n .max(100, 'Audience must be at most 100 characters long.')\n .trim(),\n conditions: z\n .array(ConditionSchema)\n .describe('The conditions of the tenant provider policy')\n .min(1, 'At least one condition is required.')\n .max(5, 'At most 5 conditions are allowed.'),\n});\n\nexport const ProviderSchema = z.object({\n id: z.string().describe('The ID of the provider'),\n name: z.string().describe('The name of the provider'),\n description: z.string().describe('The description of the provider'),\n createdAt: z.string().describe('The creation date of the provider'),\n updatedAt: z.string().describe('The last update date of the provider'),\n});\n\nexport const ClientSchema = z.object({\n id: z.string().describe('The ID of the client'),\n name: z.string().describe('The name of the client'),\n audience: z.string().describe('The audience of the client'),\n createdAt: z.string().describe('The creation date of the client'),\n updatedAt: z.string().describe('The last update date of the client'),\n});\n\nexport const DomainSchema = z.object({\n id: z.string().describe('The ID of the domain'),\n domain: z.string().describe('The domain of the domain'),\n verified: z.boolean().describe('Whether the domain is verified'),\n createdAt: z.string().describe('The creation date of the domain'),\n updatedAt: z.string().describe('The last update date of the domain'),\n});\n\nexport const TenantSchema = z.object({\n id: z.string().describe('The ID of the tenant'),\n name: z.string().describe('The name of the tenant'),\n description: z.string().describe('The description of the tenant'),\n createdAt: z.string().describe('The creation date of the tenant'),\n updatedAt: z.string().describe('The last update date of the tenant'),\n});\n\nexport const TenantProviderSchema = z.object({\n id: z.string().describe('The ID of the tenant provider'),\n url: z.string().describe('The URL of the tenant provider'),\n fingerprints: z.array(z.string()).describe('The fingerprints of the tenant provider'),\n audience: z.string().describe('The audience of the tenant provider'),\n earliestIssuanceTimeAllowed: z.number().describe('The earliest issuance time allowed for the tenant provider'),\n createdAt: z.string().describe('The creation date of the tenant provider'),\n updatedAt: z.string().describe('The last update date of the tenant provider'),\n});\n\nexport const TokenSchema = z.object({\n accessToken: z.string().describe('The access token'),\n expiresAt: z.string().describe('The expiration date of the access token'),\n type: z.literal('Bearer').describe('The type of the token'),\n});\n\nexport const ValidateTokenResponseSchema = z.object({\n exp: z.number().describe('The expiration date of the token'),\n});\n\nexport const TenantProviderPolicySchema = z.object({\n id: z.string().describe('The ID of the tenant provider policy'),\n name: z.string().describe('The name of the tenant provider policy'),\n description: z.string().describe('The description of the tenant provider policy'),\n audience: z.string().describe('The audience of the tenant provider policy'),\n conditions: z.array(ConditionSchema).describe('The conditions of the tenant provider policy'),\n createdAt: z.string().describe('The creation date of the tenant provider policy'),\n updatedAt: z.string().describe('The last update date of the tenant provider policy'),\n});\n\n// used for 204 response, ky returns empty string for 204 responses\n// https://github.com/sindresorhus/ky/blob/b49cd03d8673ea522a29bae4ef6b4672cf23201b/source/core/Ky.ts#L101\nexport const EmptyResponseSchema = z.string();\n\nexport const DomainValidationResponseSchema = z.object({\n domain: DomainSchema.describe('The domain object'),\n verified: z.boolean().describe('Whether the domain is verified'),\n message: z.string().describe('The message about the domain validation'),\n});\n\nexport const ProviderIdSchema = z\n .string()\n .describe('The ID of the provider')\n .min(1, { message: 'Provider ID is required.' });\nexport const ClientIdSchema = z.string().describe('The ID of the client').min(1, { message: 'Client ID is required.' });\nexport const DomainIdSchema = z.string().describe('The ID of the domain').min(1, { message: 'Domain ID is required.' });\nexport const TenantIdSchema = z.string().describe('The ID of the tenant').min(1, { message: 'Tenant ID is required.' });\nexport const TenantProviderIdSchema = z\n .string()\n .describe('The ID of the tenant provider')\n .min(1, { message: 'Tenant provider ID is required.' });\nexport const TenantProviderPolicyIdSchema = z\n .string()\n .describe('The ID of the tenant provider policy')\n .min(1, { message: 'Tenant provider policy ID is required.' });\n\nexport const GetProvidersFn = z.function({\n output: z.promise(z.array(ProviderSchema)),\n});\nexport const CreateProviderFn = z.function({\n input: [CreateProviderSchema],\n output: z.promise(ProviderSchema),\n});\nexport const GetProviderFn = z.function({\n input: [ProviderIdSchema],\n output: z.promise(ProviderSchema),\n});\nexport const DeleteProviderFn = z.function({\n input: [ProviderIdSchema],\n output: z.promise(EmptyResponseSchema),\n});\nexport const GetClientsFn = z.function({\n input: [ProviderIdSchema],\n output: z.promise(z.array(ClientSchema)),\n});\nexport const CreateClientFn = z.function({\n input: [ProviderIdSchema, CreateClientSchema],\n output: z.promise(ClientSchema),\n});\nexport const GetClientFn = z.function({\n input: [ProviderIdSchema, ClientIdSchema],\n output: z.promise(ClientSchema),\n});\nexport const DeleteClientFn = z.function({\n input: [ProviderIdSchema, ClientIdSchema],\n output: z.promise(EmptyResponseSchema),\n});\nexport const CreateTokenFn = z.function({\n input: [ProviderIdSchema, ClientIdSchema, CreateTokenSchema],\n output: z.promise(TokenSchema),\n});\nexport const GetTenantsFn = z.function({\n input: [],\n output: z.promise(z.array(TenantSchema)),\n});\n\nexport const AddDomainFn = z.function({\n input: [ProviderIdSchema, AddDomainSchema],\n output: z.promise(DomainSchema),\n});\nexport const DeleteDomainFn = z.function({\n input: [ProviderIdSchema, DomainIdSchema],\n output: z.promise(EmptyResponseSchema),\n});\nexport const GetDomainFn = z.function({\n input: [ProviderIdSchema, DomainIdSchema],\n output: z.promise(DomainSchema),\n});\nexport const GetDomainsFn = z.function({\n input: [ProviderIdSchema],\n output: z.promise(z.array(DomainSchema)),\n});\nexport const VerifyDomainFn = z.function({\n input: [ProviderIdSchema, DomainIdSchema],\n output: z.promise(DomainValidationResponseSchema),\n});\n\nexport const CreateTenantFn = z.function({\n input: [CreateTenantSchema],\n output: z.promise(TenantSchema),\n});\nexport const GetTenantFn = z.function({\n input: [TenantIdSchema],\n output: z.promise(TenantSchema),\n});\nexport const DeleteTenantFn = z.function({\n input: [TenantIdSchema],\n output: z.promise(EmptyResponseSchema),\n});\nexport const GetTenantProvidersFn = z.function({\n input: [TenantIdSchema],\n output: z.promise(z.array(TenantProviderSchema)),\n});\nexport const CreateTenantProviderFn = z.function({\n input: [TenantIdSchema, CreateTenantProviderSchema],\n output: z.promise(TenantProviderSchema),\n});\nexport const GetTenantProviderFn = z.function({\n input: [TenantIdSchema, TenantProviderIdSchema],\n output: z.promise(TenantProviderSchema),\n});\nexport const DeleteTenantProviderFn = z.function({\n input: [TenantIdSchema, TenantProviderIdSchema],\n output: z.promise(EmptyResponseSchema),\n});\n\nexport const CreateTenantProviderPolicyFn = z.function({\n input: [TenantIdSchema, TenantProviderIdSchema, CreateTenantProviderPolicySchema],\n output: z.promise(TenantProviderPolicySchema),\n});\nexport const GetTenantProviderPoliciesFn = z.function({\n input: [TenantIdSchema, TenantProviderIdSchema],\n output: z.promise(z.array(TenantProviderPolicySchema)),\n});\nexport const GetTenantProviderPolicyFn = z.function({\n input: [TenantIdSchema, TenantProviderIdSchema, TenantProviderPolicyIdSchema],\n output: z.promise(TenantProviderPolicySchema),\n});\nexport const DeleteTenantProviderPolicyFn = z.function({\n input: [TenantIdSchema, TenantProviderIdSchema, TenantProviderPolicyIdSchema],\n output: z.promise(EmptyResponseSchema),\n});\n\nexport const ValidateTokenFn = z.function({\n input: [TenantIdSchema, TenantProviderPolicyIdSchema, z.string()],\n output: z.promise(ValidateTokenResponseSchema),\n});\n"],"mappings":"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"}