/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */

import * as z from "zod/v3";
import { ClosedEnum } from "../../types/enums.js";

/**
 * Filter workflows by their status. If provided, only workflows with the specified status will be returned.
 *
 * @remarks
 * - `active`: Returns only active workflows.
 * - `inactive`: Returns only inactive workflows.
 * - `publishing`: Returns workflows currently being published.
 * - `unpublishing`: Returns workflows currently being unpublished.
 * - `archived`: Returns workflows that have been archived.
 * - `archiving`: Returns workflows currently being archived.
 */
export const Status = {
  Active: "active",
  Inactive: "inactive",
  Publishing: "publishing",
  Unpublishing: "unpublishing",
  Archived: "archived",
  Archiving: "archiving",
} as const;
/**
 * Filter workflows by their status. If provided, only workflows with the specified status will be returned.
 *
 * @remarks
 * - `active`: Returns only active workflows.
 * - `inactive`: Returns only inactive workflows.
 * - `publishing`: Returns workflows currently being published.
 * - `unpublishing`: Returns workflows currently being unpublished.
 * - `archived`: Returns workflows that have been archived.
 * - `archiving`: Returns workflows currently being archived.
 */
export type Status = ClosedEnum<typeof Status>;

export type GetWorkflowsListRequest = {
  /**
   * The unique identifier of the account.
   */
  accountId?: string | undefined;
  /**
   * Filter workflows by their status. If provided, only workflows with the specified status will be returned.
   *
   * @remarks
   * - `active`: Returns only active workflows.
   * - `inactive`: Returns only inactive workflows.
   * - `publishing`: Returns workflows currently being published.
   * - `unpublishing`: Returns workflows currently being unpublished.
   * - `archived`: Returns workflows that have been archived.
   * - `archiving`: Returns workflows currently being archived.
   */
  status?: Status | undefined;
};

/** @internal */
export const Status$outboundSchema: z.ZodNativeEnum<typeof Status> = z
  .nativeEnum(Status);

/** @internal */
export type GetWorkflowsListRequest$Outbound = {
  accountId: string;
  status?: string | undefined;
};

/** @internal */
export const GetWorkflowsListRequest$outboundSchema: z.ZodType<
  GetWorkflowsListRequest$Outbound,
  z.ZodTypeDef,
  GetWorkflowsListRequest
> = z.object({
  accountId: z.string().default("00000000-0000-0000-0000-000000000000"),
  status: Status$outboundSchema.optional(),
});

export function getWorkflowsListRequestToJSON(
  getWorkflowsListRequest: GetWorkflowsListRequest,
): string {
  return JSON.stringify(
    GetWorkflowsListRequest$outboundSchema.parse(getWorkflowsListRequest),
  );
}
