import {z} from 'zod' export type CreateApiWorkspacesWorkspaceActionsUnfavoriteArgs = {workspace: string}; export type CreateApiWorkspacesWorkspaceActionsUnfavoriteOptions = {baseUrl?: string | undefined, APIKey?: string | undefined, fetch?: typeof fetch | undefined}; export const workspace = z.object({attributes: z.object({"apply-schedule": z.string().nullable().optional(), "auto-apply": z.boolean().optional(), "auto-destroy-days": z.union([z.literal(1), z.literal(2), z.literal(7), z.literal(14), z.literal(30), z.literal(60), z.literal(90)]).nullable().optional(), "auto-destroy-status": z.string().nullable().optional(), "auto-destroy-time": z.string().nullable().optional(), "auto-queue-runs": z.enum(["always", "never", "skip_first", "on_create_only"]).optional(), "created-at": z.string().optional(), "deletion-protection-changed-by-email": z.string().nullable().optional(), "deletion-protection-enabled": z.boolean().optional(), "destroy-schedule": z.string().nullable().optional(), "environment-type": z.enum(["production", "staging", "testing", "development", "unmapped"]).optional(), "execution-mode": z.enum(["remote", "local"]).optional(), favorite: z.boolean().optional(), "force-latest-run": z.boolean().optional(), "has-resources": z.boolean().optional(), hooks: z.object({"post-apply": z.string().nullable().optional(), "post-plan": z.string().nullable().optional(), "pre-apply": z.string().nullable().optional(), "pre-init": z.string().nullable().optional(), "pre-plan": z.string().nullable().optional()}).nullable().optional(), "iac-platform": z.enum(["terraform", "opentofu"]).optional(), "lock-reason": z.string().nullable().optional(), locked: z.boolean().optional(), name: z.string().max(255), operations: z.boolean().optional(), permissions: z.object({}).optional(), "remote-backend": z.boolean().optional(), "remote-state-sharing": z.boolean().optional(), "run-operation-timeout": z.number().int().nullable().optional(), "schedule-paused": z.boolean().optional(), "terraform-version": z.string().optional(), terragrunt: z.object({"include-external-dependencies": z.boolean().optional(), "use-run-all": z.boolean().optional(), version: z.string()}).nullable().optional(), "updated-at": z.string().nullable().optional(), "updated-by-email": z.string().nullable().optional(), "var-files": z.array(z.string()).nullable().optional(), "vcs-repo": z.object({branch: z.string().nullable().optional(), "dry-runs-enabled": z.boolean().optional(), identifier: z.string(), "ingress-submodules": z.boolean().optional(), path: z.string().nullable().optional(), "trigger-patterns": z.string().nullable().optional(), "trigger-prefixes": z.array(z.string()).nullable().optional(), "version-constraint": z.string().nullable().optional()}).nullable().optional(), "vcs-repo-error": z.object({message: z.string().optional(), "status-code": z.number().int().optional()}).nullable().optional(), "vcs-repo-inaccessible": z.boolean().optional(), "working-directory": z.string().max(255).nullable().optional()}), id: z.string().optional(), links: z.object({self: z.string().optional()}).optional(), relationships: z.object({"agent-pool": z.object({data: z.object({id: z.string(), type: z.enum(["agent-pools", ""])}).nullable()}).optional(), "configuration-version": z.object({data: z.object({id: z.string(), type: z.enum(["configuration-versions", ""])}).nullable()}).optional(), "created-by": z.object({data: z.object({id: z.string(), type: z.enum(["users", ""])}).nullable()}).optional(), "current-run": z.object({data: z.object({id: z.string(), type: z.enum(["runs", ""])}).nullable()}).optional(), "drift-report": z.object({data: z.object({id: z.string(), type: z.enum(["drift-reports", ""])}).nullable()}).optional(), environment: z.object({data: z.object({id: z.string(), type: z.enum(["environments", ""])})}), "latest-configuration-version": z.object({data: z.object({id: z.string(), type: z.enum(["configuration-versions", ""])}).nullable()}).optional(), "latest-run": z.object({data: z.object({id: z.string(), type: z.enum(["runs", ""])}).nullable()}).optional(), "locked-by": z.object({data: z.object({id: z.string(), type: z.enum(["users", ""])}).nullable()}).optional(), "locked-by-run": z.object({data: z.object({id: z.string(), type: z.enum(["runs", ""])}).nullable()}).optional(), module: z.object({data: z.object({id: z.string(), type: z.enum(["modules", ""])}).nullable()}).optional(), "module-version": z.object({data: z.object({id: z.string(), type: z.enum(["module-versions", ""])}).nullable()}).optional(), "readme-id": z.object({data: z.object({id: z.string(), type: z.enum(["workspace-readme", ""])}).nullable()}).optional(), "runner-image-version": z.object({data: z.object({id: z.string(), type: z.enum(["container-image-versions", ""])}).nullable()}).optional(), "ssh-key": z.object({data: z.object({id: z.string(), type: z.enum(["account-ssh-keys", ""])}).nullable()}).optional(), tags: z.object({data: z.array(z.object({id: z.string(), type: z.enum(["tags", ""])})).nullable()}).optional(), "updated-by": z.object({data: z.object({id: z.string(), type: z.enum(["users", ""])}).nullable()}).optional(), "vcs-provider": z.object({data: z.object({id: z.string(), type: z.enum(["vcs-providers", ""])}).nullable()}).optional()}), type: z.literal("workspaces")}); export const workspaceDocument = z.object({data: workspace.optional(), included: z.array(z.object({})).optional(), meta: z.object({}).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 }; /** * Unfavorite a workspace * * POST /workspaces/{workspace}/actions/unfavorite */ export const createApiWorkspacesWorkspaceActionsUnfavorite = async (args: CreateApiWorkspacesWorkspaceActionsUnfavoriteArgs, options?: CreateApiWorkspacesWorkspaceActionsUnfavoriteOptions) => { const {baseUrl = "https://example.scalr.io/api/iacp/v3", fetch: fetchFn = fetch, APIKey} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('accept', "application/vnd.api+json") if (APIKey !== undefined) headers.set('authorization', `Bearer ${APIKey}`) const url = `${baseUrl.replace(/\/+$/, '')}/workspaces/${encodeURIComponent(String(args.workspace))}/actions/unfavorite${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(workspaceDocument, await res.json()) };