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

import * as z from "zod";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";

export type GetV2ObjectsObjectRecordsRecordIdRequest = {
  object: string;
  recordId: string;
};

export type GetV2ObjectsObjectRecordsRecordIdId = {
  /**
   * A UUID identifying the workspace this record belongs to.
   */
  workspaceId: string;
  /**
   * A UUID identifying the object this record belongs to.
   */
  objectId: string;
  /**
   * A UUID identifying this record.
   */
  recordId: string;
};

export type GetV2ObjectsObjectRecordsRecordIdData = {
  id: GetV2ObjectsObjectRecordsRecordIdId;
  /**
   * When this record was created.
   */
  createdAt: string;
  /**
   * A record type with an attribute `api_slug` as the key, and an array of value objects as the values.
   */
  values: { [k: string]: any };
};

/**
 * Success
 */
export type GetV2ObjectsObjectRecordsRecordIdResponse = {
  data: GetV2ObjectsObjectRecordsRecordIdData;
};

/** @internal */
export const GetV2ObjectsObjectRecordsRecordIdRequest$inboundSchema: z.ZodType<
  GetV2ObjectsObjectRecordsRecordIdRequest,
  z.ZodTypeDef,
  unknown
> = z.object({
  object: z.string(),
  record_id: z.string(),
}).transform((v) => {
  return remap$(v, {
    "record_id": "recordId",
  });
});

/** @internal */
export type GetV2ObjectsObjectRecordsRecordIdRequest$Outbound = {
  object: string;
  record_id: string;
};

/** @internal */
export const GetV2ObjectsObjectRecordsRecordIdRequest$outboundSchema: z.ZodType<
  GetV2ObjectsObjectRecordsRecordIdRequest$Outbound,
  z.ZodTypeDef,
  GetV2ObjectsObjectRecordsRecordIdRequest
> = z.object({
  object: z.string(),
  recordId: z.string(),
}).transform((v) => {
  return remap$(v, {
    recordId: "record_id",
  });
});

/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export namespace GetV2ObjectsObjectRecordsRecordIdRequest$ {
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdRequest$inboundSchema` instead. */
  export const inboundSchema =
    GetV2ObjectsObjectRecordsRecordIdRequest$inboundSchema;
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdRequest$outboundSchema` instead. */
  export const outboundSchema =
    GetV2ObjectsObjectRecordsRecordIdRequest$outboundSchema;
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdRequest$Outbound` instead. */
  export type Outbound = GetV2ObjectsObjectRecordsRecordIdRequest$Outbound;
}

export function getV2ObjectsObjectRecordsRecordIdRequestToJSON(
  getV2ObjectsObjectRecordsRecordIdRequest:
    GetV2ObjectsObjectRecordsRecordIdRequest,
): string {
  return JSON.stringify(
    GetV2ObjectsObjectRecordsRecordIdRequest$outboundSchema.parse(
      getV2ObjectsObjectRecordsRecordIdRequest,
    ),
  );
}

export function getV2ObjectsObjectRecordsRecordIdRequestFromJSON(
  jsonString: string,
): SafeParseResult<
  GetV2ObjectsObjectRecordsRecordIdRequest,
  SDKValidationError
> {
  return safeParse(
    jsonString,
    (x) =>
      GetV2ObjectsObjectRecordsRecordIdRequest$inboundSchema.parse(
        JSON.parse(x),
      ),
    `Failed to parse 'GetV2ObjectsObjectRecordsRecordIdRequest' from JSON`,
  );
}

/** @internal */
export const GetV2ObjectsObjectRecordsRecordIdId$inboundSchema: z.ZodType<
  GetV2ObjectsObjectRecordsRecordIdId,
  z.ZodTypeDef,
  unknown
> = z.object({
  workspace_id: z.string(),
  object_id: z.string(),
  record_id: z.string(),
}).transform((v) => {
  return remap$(v, {
    "workspace_id": "workspaceId",
    "object_id": "objectId",
    "record_id": "recordId",
  });
});

/** @internal */
export type GetV2ObjectsObjectRecordsRecordIdId$Outbound = {
  workspace_id: string;
  object_id: string;
  record_id: string;
};

/** @internal */
export const GetV2ObjectsObjectRecordsRecordIdId$outboundSchema: z.ZodType<
  GetV2ObjectsObjectRecordsRecordIdId$Outbound,
  z.ZodTypeDef,
  GetV2ObjectsObjectRecordsRecordIdId
> = z.object({
  workspaceId: z.string(),
  objectId: z.string(),
  recordId: z.string(),
}).transform((v) => {
  return remap$(v, {
    workspaceId: "workspace_id",
    objectId: "object_id",
    recordId: "record_id",
  });
});

/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export namespace GetV2ObjectsObjectRecordsRecordIdId$ {
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdId$inboundSchema` instead. */
  export const inboundSchema =
    GetV2ObjectsObjectRecordsRecordIdId$inboundSchema;
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdId$outboundSchema` instead. */
  export const outboundSchema =
    GetV2ObjectsObjectRecordsRecordIdId$outboundSchema;
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdId$Outbound` instead. */
  export type Outbound = GetV2ObjectsObjectRecordsRecordIdId$Outbound;
}

export function getV2ObjectsObjectRecordsRecordIdIdToJSON(
  getV2ObjectsObjectRecordsRecordIdId: GetV2ObjectsObjectRecordsRecordIdId,
): string {
  return JSON.stringify(
    GetV2ObjectsObjectRecordsRecordIdId$outboundSchema.parse(
      getV2ObjectsObjectRecordsRecordIdId,
    ),
  );
}

export function getV2ObjectsObjectRecordsRecordIdIdFromJSON(
  jsonString: string,
): SafeParseResult<GetV2ObjectsObjectRecordsRecordIdId, SDKValidationError> {
  return safeParse(
    jsonString,
    (x) =>
      GetV2ObjectsObjectRecordsRecordIdId$inboundSchema.parse(JSON.parse(x)),
    `Failed to parse 'GetV2ObjectsObjectRecordsRecordIdId' from JSON`,
  );
}

/** @internal */
export const GetV2ObjectsObjectRecordsRecordIdData$inboundSchema: z.ZodType<
  GetV2ObjectsObjectRecordsRecordIdData,
  z.ZodTypeDef,
  unknown
> = z.object({
  id: z.lazy(() => GetV2ObjectsObjectRecordsRecordIdId$inboundSchema),
  created_at: z.string(),
  values: z.record(z.any()),
}).transform((v) => {
  return remap$(v, {
    "created_at": "createdAt",
  });
});

/** @internal */
export type GetV2ObjectsObjectRecordsRecordIdData$Outbound = {
  id: GetV2ObjectsObjectRecordsRecordIdId$Outbound;
  created_at: string;
  values: { [k: string]: any };
};

/** @internal */
export const GetV2ObjectsObjectRecordsRecordIdData$outboundSchema: z.ZodType<
  GetV2ObjectsObjectRecordsRecordIdData$Outbound,
  z.ZodTypeDef,
  GetV2ObjectsObjectRecordsRecordIdData
> = z.object({
  id: z.lazy(() => GetV2ObjectsObjectRecordsRecordIdId$outboundSchema),
  createdAt: z.string(),
  values: z.record(z.any()),
}).transform((v) => {
  return remap$(v, {
    createdAt: "created_at",
  });
});

/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export namespace GetV2ObjectsObjectRecordsRecordIdData$ {
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdData$inboundSchema` instead. */
  export const inboundSchema =
    GetV2ObjectsObjectRecordsRecordIdData$inboundSchema;
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdData$outboundSchema` instead. */
  export const outboundSchema =
    GetV2ObjectsObjectRecordsRecordIdData$outboundSchema;
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdData$Outbound` instead. */
  export type Outbound = GetV2ObjectsObjectRecordsRecordIdData$Outbound;
}

export function getV2ObjectsObjectRecordsRecordIdDataToJSON(
  getV2ObjectsObjectRecordsRecordIdData: GetV2ObjectsObjectRecordsRecordIdData,
): string {
  return JSON.stringify(
    GetV2ObjectsObjectRecordsRecordIdData$outboundSchema.parse(
      getV2ObjectsObjectRecordsRecordIdData,
    ),
  );
}

export function getV2ObjectsObjectRecordsRecordIdDataFromJSON(
  jsonString: string,
): SafeParseResult<GetV2ObjectsObjectRecordsRecordIdData, SDKValidationError> {
  return safeParse(
    jsonString,
    (x) =>
      GetV2ObjectsObjectRecordsRecordIdData$inboundSchema.parse(JSON.parse(x)),
    `Failed to parse 'GetV2ObjectsObjectRecordsRecordIdData' from JSON`,
  );
}

/** @internal */
export const GetV2ObjectsObjectRecordsRecordIdResponse$inboundSchema: z.ZodType<
  GetV2ObjectsObjectRecordsRecordIdResponse,
  z.ZodTypeDef,
  unknown
> = z.object({
  data: z.lazy(() => GetV2ObjectsObjectRecordsRecordIdData$inboundSchema),
});

/** @internal */
export type GetV2ObjectsObjectRecordsRecordIdResponse$Outbound = {
  data: GetV2ObjectsObjectRecordsRecordIdData$Outbound;
};

/** @internal */
export const GetV2ObjectsObjectRecordsRecordIdResponse$outboundSchema:
  z.ZodType<
    GetV2ObjectsObjectRecordsRecordIdResponse$Outbound,
    z.ZodTypeDef,
    GetV2ObjectsObjectRecordsRecordIdResponse
  > = z.object({
    data: z.lazy(() => GetV2ObjectsObjectRecordsRecordIdData$outboundSchema),
  });

/**
 * @internal
 * @deprecated This namespace will be removed in future versions. Use schemas and types that are exported directly from this module.
 */
export namespace GetV2ObjectsObjectRecordsRecordIdResponse$ {
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdResponse$inboundSchema` instead. */
  export const inboundSchema =
    GetV2ObjectsObjectRecordsRecordIdResponse$inboundSchema;
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdResponse$outboundSchema` instead. */
  export const outboundSchema =
    GetV2ObjectsObjectRecordsRecordIdResponse$outboundSchema;
  /** @deprecated use `GetV2ObjectsObjectRecordsRecordIdResponse$Outbound` instead. */
  export type Outbound = GetV2ObjectsObjectRecordsRecordIdResponse$Outbound;
}

export function getV2ObjectsObjectRecordsRecordIdResponseToJSON(
  getV2ObjectsObjectRecordsRecordIdResponse:
    GetV2ObjectsObjectRecordsRecordIdResponse,
): string {
  return JSON.stringify(
    GetV2ObjectsObjectRecordsRecordIdResponse$outboundSchema.parse(
      getV2ObjectsObjectRecordsRecordIdResponse,
    ),
  );
}

export function getV2ObjectsObjectRecordsRecordIdResponseFromJSON(
  jsonString: string,
): SafeParseResult<
  GetV2ObjectsObjectRecordsRecordIdResponse,
  SDKValidationError
> {
  return safeParse(
    jsonString,
    (x) =>
      GetV2ObjectsObjectRecordsRecordIdResponse$inboundSchema.parse(
        JSON.parse(x),
      ),
    `Failed to parse 'GetV2ObjectsObjectRecordsRecordIdResponse' from JSON`,
  );
}
