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

import * as z from "zod/v3";

export type V2PermissionsListRolesRequestBody = {
  /**
   * Maximum number of roles to return in a single response.
   *
   * @remarks
   * Use smaller values for faster response times and better UI performance.
   * Use larger values when you need to process many roles efficiently.
   * Results exceeding this limit will be paginated with a cursor for continuation.
   */
  limit?: number | undefined;
  /**
   * Pagination cursor from a previous response to fetch the next page of roles.
   *
   * @remarks
   * Include this when you need to retrieve additional roles beyond the first page.
   * Each response containing more results will include a cursor value that can be used here.
   * Leave empty or omit this field to start from the beginning of the role list.
   */
  cursor?: string | undefined;
};

/** @internal */
export type V2PermissionsListRolesRequestBody$Outbound = {
  limit: number;
  cursor?: string | undefined;
};

/** @internal */
export const V2PermissionsListRolesRequestBody$outboundSchema: z.ZodType<
  V2PermissionsListRolesRequestBody$Outbound,
  z.ZodTypeDef,
  V2PermissionsListRolesRequestBody
> = z.object({
  limit: z.number().int().default(100),
  cursor: z.string().optional(),
});

export function v2PermissionsListRolesRequestBodyToJSON(
  v2PermissionsListRolesRequestBody: V2PermissionsListRolesRequestBody,
): string {
  return JSON.stringify(
    V2PermissionsListRolesRequestBody$outboundSchema.parse(
      v2PermissionsListRolesRequestBody,
    ),
  );
}
