/* * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT. */ import * as z from "zod/v3"; 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"; import { GCPPubSubConfig, GCPPubSubConfig$inboundSchema, GCPPubSubConfig$Outbound, GCPPubSubConfig$outboundSchema, } from "./gcppubsubconfig.js"; import { GCPPubSubCredentials, GCPPubSubCredentials$inboundSchema, GCPPubSubCredentials$Outbound, GCPPubSubCredentials$outboundSchema, } from "./gcppubsubcredentials.js"; import { Topics, Topics$inboundSchema, Topics$Outbound, Topics$outboundSchema, } from "./topics.js"; export type DestinationGCPPubSub = { /** * Control plane generated ID or user provided ID for the destination. */ id: string; /** * Type of the destination. */ type: "gcp_pubsub"; /** * "*" or an array of enabled topics. */ topics: Topics; /** * Optional JSON schema filter for event matching. Events must match this filter to be delivered to this destination. * * @remarks * Supports operators: $eq, $neq, $gt, $gte, $lt, $lte, $in, $nin, $startsWith, $endsWith, $exist, $or, $and, $not. * If null or empty, all events matching the topic filter will be delivered. * To remove an existing filter when updating a destination, set filter to an empty object `{}`. */ filter?: { [k: string]: any } | null | undefined; /** * ISO Date when the destination was disabled, or null if enabled. */ disabledAt: Date | null; /** * ISO Date when the destination was created. */ createdAt: Date; /** * ISO Date when the destination was last updated. */ updatedAt: Date; config: GCPPubSubConfig; credentials: GCPPubSubCredentials; /** * Static key-value pairs merged into event metadata on every attempt. */ deliveryMetadata?: { [k: string]: string } | null | undefined; /** * Arbitrary contextual information stored with the destination. */ metadata?: { [k: string]: string } | null | undefined; /** * A human-readable representation of the destination target (project/topic). Read-only. */ target?: string | undefined; /** * A URL link to the destination target (GCP Console link to the topic). Read-only. */ targetUrl?: string | null | undefined; }; /** @internal */ export const DestinationGCPPubSub$inboundSchema: z.ZodType< DestinationGCPPubSub, z.ZodTypeDef, unknown > = z.object({ id: z.string(), type: z.literal("gcp_pubsub"), topics: Topics$inboundSchema, filter: z.nullable(z.record(z.any())).optional(), disabled_at: z.nullable( z.string().datetime({ offset: true }).transform(v => new Date(v)), ), created_at: z.string().datetime({ offset: true }).transform(v => new Date(v)), updated_at: z.string().datetime({ offset: true }).transform(v => new Date(v)), config: GCPPubSubConfig$inboundSchema, credentials: GCPPubSubCredentials$inboundSchema, delivery_metadata: z.nullable(z.record(z.string())).optional(), metadata: z.nullable(z.record(z.string())).optional(), target: z.string().optional(), target_url: z.nullable(z.string()).optional(), }).transform((v) => { return remap$(v, { "disabled_at": "disabledAt", "created_at": "createdAt", "updated_at": "updatedAt", "delivery_metadata": "deliveryMetadata", "target_url": "targetUrl", }); }); /** @internal */ export type DestinationGCPPubSub$Outbound = { id: string; type: "gcp_pubsub"; topics: Topics$Outbound; filter?: { [k: string]: any } | null | undefined; disabled_at: string | null; created_at: string; updated_at: string; config: GCPPubSubConfig$Outbound; credentials: GCPPubSubCredentials$Outbound; delivery_metadata?: { [k: string]: string } | null | undefined; metadata?: { [k: string]: string } | null | undefined; target?: string | undefined; target_url?: string | null | undefined; }; /** @internal */ export const DestinationGCPPubSub$outboundSchema: z.ZodType< DestinationGCPPubSub$Outbound, z.ZodTypeDef, DestinationGCPPubSub > = z.object({ id: z.string(), type: z.literal("gcp_pubsub"), topics: Topics$outboundSchema, filter: z.nullable(z.record(z.any())).optional(), disabledAt: z.nullable(z.date().transform(v => v.toISOString())), createdAt: z.date().transform(v => v.toISOString()), updatedAt: z.date().transform(v => v.toISOString()), config: GCPPubSubConfig$outboundSchema, credentials: GCPPubSubCredentials$outboundSchema, deliveryMetadata: z.nullable(z.record(z.string())).optional(), metadata: z.nullable(z.record(z.string())).optional(), target: z.string().optional(), targetUrl: z.nullable(z.string()).optional(), }).transform((v) => { return remap$(v, { disabledAt: "disabled_at", createdAt: "created_at", updatedAt: "updated_at", deliveryMetadata: "delivery_metadata", targetUrl: "target_url", }); }); export function destinationGCPPubSubToJSON( destinationGCPPubSub: DestinationGCPPubSub, ): string { return JSON.stringify( DestinationGCPPubSub$outboundSchema.parse(destinationGCPPubSub), ); } export function destinationGCPPubSubFromJSON( jsonString: string, ): SafeParseResult { return safeParse( jsonString, (x) => DestinationGCPPubSub$inboundSchema.parse(JSON.parse(x)), `Failed to parse 'DestinationGCPPubSub' from JSON`, ); }