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

import * as z from "zod/v3";

export type V2KeysRerollKeyRequestBody = {
  /**
   * The database identifier of the key to reroll.
   *
   * @remarks
   *
   * This is the unique ID returned when creating or listing keys, NOT the actual API key token.
   * You can find this ID in:
   * - The response from `keys.createKey`
   * - Key verification responses
   * - The Unkey dashboard
   * - API key listing endpoints
   */
  keyId: string;
  /**
   * Duration in milliseconds until the ORIGINAL key is revoked, starting from now.
   *
   * @remarks
   *
   * This parameter controls the overlap period for key rotation:
   * - Set to `0` to revoke the original key immediately
   * - Positive values keep the original key active for the specified duration
   * - Allows graceful migration by giving users time to update their credentials
   *
   * Common overlap periods:
   * - Immediate revocation: 0
   * - 1 hour grace period: 3600000
   * - 24 hours grace period: 86400000
   * - 7 days grace period: 604800000
   * - 30 days grace period: 2592000000
   */
  expiration: number;
};

/** @internal */
export type V2KeysRerollKeyRequestBody$Outbound = {
  keyId: string;
  expiration: number;
};

/** @internal */
export const V2KeysRerollKeyRequestBody$outboundSchema: z.ZodType<
  V2KeysRerollKeyRequestBody$Outbound,
  z.ZodTypeDef,
  V2KeysRerollKeyRequestBody
> = z.object({
  keyId: z.string(),
  expiration: z.number().int(),
});

export function v2KeysRerollKeyRequestBodyToJSON(
  v2KeysRerollKeyRequestBody: V2KeysRerollKeyRequestBody,
): string {
  return JSON.stringify(
    V2KeysRerollKeyRequestBody$outboundSchema.parse(v2KeysRerollKeyRequestBody),
  );
}
