/*
 * 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 PutV2ObjectsObjectRecordsRecordIdDataRequest = {
  /**
   * 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 PutV2ObjectsObjectRecordsRecordIdRequestBody = {
  data: PutV2ObjectsObjectRecordsRecordIdDataRequest;
};

export type PutV2ObjectsObjectRecordsRecordIdRequest = {
  object: string;
  recordId: string;
  requestBody: PutV2ObjectsObjectRecordsRecordIdRequestBody;
};

export type PutV2ObjectsObjectRecordsRecordIdId = {
  /**
   * 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 PutV2ObjectsObjectRecordsRecordIdDataResponse = {
  id: PutV2ObjectsObjectRecordsRecordIdId;
  /**
   * 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 PutV2ObjectsObjectRecordsRecordIdResponse = {
  data: PutV2ObjectsObjectRecordsRecordIdDataResponse;
};

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

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

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

export function putV2ObjectsObjectRecordsRecordIdDataRequestToJSON(
  putV2ObjectsObjectRecordsRecordIdDataRequest:
    PutV2ObjectsObjectRecordsRecordIdDataRequest,
): string {
  return JSON.stringify(
    PutV2ObjectsObjectRecordsRecordIdDataRequest$outboundSchema.parse(
      putV2ObjectsObjectRecordsRecordIdDataRequest,
    ),
  );
}

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

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

/** @internal */
export type PutV2ObjectsObjectRecordsRecordIdRequestBody$Outbound = {
  data: PutV2ObjectsObjectRecordsRecordIdDataRequest$Outbound;
};

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

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

export function putV2ObjectsObjectRecordsRecordIdRequestBodyToJSON(
  putV2ObjectsObjectRecordsRecordIdRequestBody:
    PutV2ObjectsObjectRecordsRecordIdRequestBody,
): string {
  return JSON.stringify(
    PutV2ObjectsObjectRecordsRecordIdRequestBody$outboundSchema.parse(
      putV2ObjectsObjectRecordsRecordIdRequestBody,
    ),
  );
}

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

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

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

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

export function putV2ObjectsObjectRecordsRecordIdRequestToJSON(
  putV2ObjectsObjectRecordsRecordIdRequest:
    PutV2ObjectsObjectRecordsRecordIdRequest,
): string {
  return JSON.stringify(
    PutV2ObjectsObjectRecordsRecordIdRequest$outboundSchema.parse(
      putV2ObjectsObjectRecordsRecordIdRequest,
    ),
  );
}

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

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

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

export function putV2ObjectsObjectRecordsRecordIdIdToJSON(
  putV2ObjectsObjectRecordsRecordIdId: PutV2ObjectsObjectRecordsRecordIdId,
): string {
  return JSON.stringify(
    PutV2ObjectsObjectRecordsRecordIdId$outboundSchema.parse(
      putV2ObjectsObjectRecordsRecordIdId,
    ),
  );
}

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

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

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

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

export function putV2ObjectsObjectRecordsRecordIdDataResponseToJSON(
  putV2ObjectsObjectRecordsRecordIdDataResponse:
    PutV2ObjectsObjectRecordsRecordIdDataResponse,
): string {
  return JSON.stringify(
    PutV2ObjectsObjectRecordsRecordIdDataResponse$outboundSchema.parse(
      putV2ObjectsObjectRecordsRecordIdDataResponse,
    ),
  );
}

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

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

/** @internal */
export type PutV2ObjectsObjectRecordsRecordIdResponse$Outbound = {
  data: PutV2ObjectsObjectRecordsRecordIdDataResponse$Outbound;
};

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

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

export function putV2ObjectsObjectRecordsRecordIdResponseToJSON(
  putV2ObjectsObjectRecordsRecordIdResponse:
    PutV2ObjectsObjectRecordsRecordIdResponse,
): string {
  return JSON.stringify(
    PutV2ObjectsObjectRecordsRecordIdResponse$outboundSchema.parse(
      putV2ObjectsObjectRecordsRecordIdResponse,
    ),
  );
}

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