/*
 * 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 PatchV2ObjectsObjectRecordsRecordIdDataRequest = {
  /**
   * An object with an attribute `api_slug` or `attribute_id` as the key, and a single value (for single-select attributes), or an array of values (for single or multi-select attributes) as the values. For complete documentation on values for all attribute types, please see our [attribute type docs](/docs/attribute-types).
   */
  values: { [k: string]: any };
};

export type PatchV2ObjectsObjectRecordsRecordIdRequestBody = {
  data: PatchV2ObjectsObjectRecordsRecordIdDataRequest;
};

export type PatchV2ObjectsObjectRecordsRecordIdRequest = {
  object: string;
  recordId: string;
  requestBody: PatchV2ObjectsObjectRecordsRecordIdRequestBody;
};

export type PatchV2ObjectsObjectRecordsRecordIdId = {
  /**
   * 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 PatchV2ObjectsObjectRecordsRecordIdDataResponse = {
  id: PatchV2ObjectsObjectRecordsRecordIdId;
  /**
   * 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 PatchV2ObjectsObjectRecordsRecordIdResponse = {
  data: PatchV2ObjectsObjectRecordsRecordIdDataResponse;
};

/** @internal */
export const PatchV2ObjectsObjectRecordsRecordIdDataRequest$inboundSchema:
  z.ZodType<
    PatchV2ObjectsObjectRecordsRecordIdDataRequest,
    z.ZodTypeDef,
    unknown
  > = z.object({
    values: z.record(z.any()),
  });

/** @internal */
export type PatchV2ObjectsObjectRecordsRecordIdDataRequest$Outbound = {
  values: { [k: string]: any };
};

/** @internal */
export const PatchV2ObjectsObjectRecordsRecordIdDataRequest$outboundSchema:
  z.ZodType<
    PatchV2ObjectsObjectRecordsRecordIdDataRequest$Outbound,
    z.ZodTypeDef,
    PatchV2ObjectsObjectRecordsRecordIdDataRequest
  > = z.object({
    values: z.record(z.any()),
  });

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

export function patchV2ObjectsObjectRecordsRecordIdDataRequestToJSON(
  patchV2ObjectsObjectRecordsRecordIdDataRequest:
    PatchV2ObjectsObjectRecordsRecordIdDataRequest,
): string {
  return JSON.stringify(
    PatchV2ObjectsObjectRecordsRecordIdDataRequest$outboundSchema.parse(
      patchV2ObjectsObjectRecordsRecordIdDataRequest,
    ),
  );
}

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

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

/** @internal */
export type PatchV2ObjectsObjectRecordsRecordIdRequestBody$Outbound = {
  data: PatchV2ObjectsObjectRecordsRecordIdDataRequest$Outbound;
};

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

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

export function patchV2ObjectsObjectRecordsRecordIdRequestBodyToJSON(
  patchV2ObjectsObjectRecordsRecordIdRequestBody:
    PatchV2ObjectsObjectRecordsRecordIdRequestBody,
): string {
  return JSON.stringify(
    PatchV2ObjectsObjectRecordsRecordIdRequestBody$outboundSchema.parse(
      patchV2ObjectsObjectRecordsRecordIdRequestBody,
    ),
  );
}

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

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

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

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

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

export function patchV2ObjectsObjectRecordsRecordIdRequestToJSON(
  patchV2ObjectsObjectRecordsRecordIdRequest:
    PatchV2ObjectsObjectRecordsRecordIdRequest,
): string {
  return JSON.stringify(
    PatchV2ObjectsObjectRecordsRecordIdRequest$outboundSchema.parse(
      patchV2ObjectsObjectRecordsRecordIdRequest,
    ),
  );
}

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

/** @internal */
export const PatchV2ObjectsObjectRecordsRecordIdId$inboundSchema: z.ZodType<
  PatchV2ObjectsObjectRecordsRecordIdId,
  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 PatchV2ObjectsObjectRecordsRecordIdId$Outbound = {
  workspace_id: string;
  object_id: string;
  record_id: string;
};

/** @internal */
export const PatchV2ObjectsObjectRecordsRecordIdId$outboundSchema: z.ZodType<
  PatchV2ObjectsObjectRecordsRecordIdId$Outbound,
  z.ZodTypeDef,
  PatchV2ObjectsObjectRecordsRecordIdId
> = 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 PatchV2ObjectsObjectRecordsRecordIdId$ {
  /** @deprecated use `PatchV2ObjectsObjectRecordsRecordIdId$inboundSchema` instead. */
  export const inboundSchema =
    PatchV2ObjectsObjectRecordsRecordIdId$inboundSchema;
  /** @deprecated use `PatchV2ObjectsObjectRecordsRecordIdId$outboundSchema` instead. */
  export const outboundSchema =
    PatchV2ObjectsObjectRecordsRecordIdId$outboundSchema;
  /** @deprecated use `PatchV2ObjectsObjectRecordsRecordIdId$Outbound` instead. */
  export type Outbound = PatchV2ObjectsObjectRecordsRecordIdId$Outbound;
}

export function patchV2ObjectsObjectRecordsRecordIdIdToJSON(
  patchV2ObjectsObjectRecordsRecordIdId: PatchV2ObjectsObjectRecordsRecordIdId,
): string {
  return JSON.stringify(
    PatchV2ObjectsObjectRecordsRecordIdId$outboundSchema.parse(
      patchV2ObjectsObjectRecordsRecordIdId,
    ),
  );
}

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

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

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

/** @internal */
export const PatchV2ObjectsObjectRecordsRecordIdDataResponse$outboundSchema:
  z.ZodType<
    PatchV2ObjectsObjectRecordsRecordIdDataResponse$Outbound,
    z.ZodTypeDef,
    PatchV2ObjectsObjectRecordsRecordIdDataResponse
  > = z.object({
    id: z.lazy(() => PatchV2ObjectsObjectRecordsRecordIdId$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 PatchV2ObjectsObjectRecordsRecordIdDataResponse$ {
  /** @deprecated use `PatchV2ObjectsObjectRecordsRecordIdDataResponse$inboundSchema` instead. */
  export const inboundSchema =
    PatchV2ObjectsObjectRecordsRecordIdDataResponse$inboundSchema;
  /** @deprecated use `PatchV2ObjectsObjectRecordsRecordIdDataResponse$outboundSchema` instead. */
  export const outboundSchema =
    PatchV2ObjectsObjectRecordsRecordIdDataResponse$outboundSchema;
  /** @deprecated use `PatchV2ObjectsObjectRecordsRecordIdDataResponse$Outbound` instead. */
  export type Outbound =
    PatchV2ObjectsObjectRecordsRecordIdDataResponse$Outbound;
}

export function patchV2ObjectsObjectRecordsRecordIdDataResponseToJSON(
  patchV2ObjectsObjectRecordsRecordIdDataResponse:
    PatchV2ObjectsObjectRecordsRecordIdDataResponse,
): string {
  return JSON.stringify(
    PatchV2ObjectsObjectRecordsRecordIdDataResponse$outboundSchema.parse(
      patchV2ObjectsObjectRecordsRecordIdDataResponse,
    ),
  );
}

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

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

/** @internal */
export type PatchV2ObjectsObjectRecordsRecordIdResponse$Outbound = {
  data: PatchV2ObjectsObjectRecordsRecordIdDataResponse$Outbound;
};

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

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

export function patchV2ObjectsObjectRecordsRecordIdResponseToJSON(
  patchV2ObjectsObjectRecordsRecordIdResponse:
    PatchV2ObjectsObjectRecordsRecordIdResponse,
): string {
  return JSON.stringify(
    PatchV2ObjectsObjectRecordsRecordIdResponse$outboundSchema.parse(
      patchV2ObjectsObjectRecordsRecordIdResponse,
    ),
  );
}

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