@@ -263,7 +263,7 @@ components:
263263key_template :
264264type :string
265265description :JMESPath expression for generating S3 object keys. Default is join('', [time.rfc3339_nano, '_', metadata."event-id", '.json']).
266- example :" join('/' , [time.year, time.month, time.day, metadata.` \ " event-id\" ` , '.json']) "
266+ example :' join('' / '' , [time.year, time.month, time.day, metadata."event-id" ,'' .json'' ]) '
267267storage_class :
268268type :string
269269description :The storage class for the S3 objects (e.g., STANDARD, INTELLIGENT_TIERING, GLACIER, etc.). Defaults to "STANDARD".
@@ -284,6 +284,30 @@ components:
284284type :string
285285description :Optional AWS Session Token (for temporary credentials).
286286example :" AQoDYXdzEPT//////////wEXAMPLE..."
287+ GCPPubSubConfig :
288+ type :object
289+ required :[project_id, topic]
290+ properties :
291+ project_id :
292+ type :string
293+ description :The GCP project ID.
294+ example :" my-project-123"
295+ topic :
296+ type :string
297+ description :The Pub/Sub topic name.
298+ example :" events-topic"
299+ endpoint :
300+ type :string
301+ description :Optional. Custom endpoint URL (e.g., localhost:8085 for emulator).
302+ example :" pubsub.googleapis.com:443"
303+ GCPPubSubCredentials :
304+ type :object
305+ required :[service_account_json]
306+ properties :
307+ service_account_json :
308+ type :string
309+ description :Service account key JSON. The entire JSON key file content as a string.
310+ example :' {"type":"service_account","project_id":"my-project","private_key_id":"key123","private_key":"-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----\n","client_email":"my-service@my-project.iam.gserviceaccount.com"}'
287311
288312# Type-Specific Destination Schemas (for Responses)
289313DestinationWebhook :
@@ -667,6 +691,60 @@ components:
667691credentials :
668692key :" AKIAIOSFODNN7EXAMPLE"
669693secret :" wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
694+ DestinationGCPPubSub :
695+ type :object
696+ # Properties duplicated from DestinationBase
697+ required :[id, type, topics, config, credentials, created_at, disabled_at]
698+ properties :
699+ id :
700+ type :string
701+ description :Control plane generated ID or user provided ID for the destination.
702+ example :" des_12345"
703+ type :
704+ type :string
705+ description :Type of the destination.
706+ enum :[gcp_pubsub]
707+ example :" gcp_pubsub"
708+ topics :
709+ $ref :" #/components/schemas/Topics"
710+ disabled_at :
711+ type :string
712+ format :date-time
713+ nullable :true
714+ description :ISO Date when the destination was disabled, or null if enabled.
715+ example :null
716+ created_at :
717+ type :string
718+ format :date-time
719+ description :ISO Date when the destination was created.
720+ example :" 2024-01-01T00:00:00Z"
721+ config :
722+ $ref :" #/components/schemas/GCPPubSubConfig"
723+ credentials :
724+ $ref :" #/components/schemas/GCPPubSubCredentials"
725+ target :
726+ type :string
727+ description :A human-readable representation of the destination target (project/topic). Read-only.
728+ readOnly :true
729+ example :" my-project-123/events-topic"
730+ target_url :
731+ type :string
732+ format :url
733+ nullable :true
734+ description :A URL link to the destination target (GCP Console link to the topic). Read-only.
735+ readOnly :true
736+ example :" https://console.cloud.google.com/cloudpubsub/topic/detail/events-topic?project=my-project-123"
737+ example :
738+ id :" des_gcp_pubsub_123"
739+ type :" gcp_pubsub"
740+ topics :["order.created", "order.updated"]
741+ disabled_at :null
742+ created_at :" 2024-03-10T14:30:00Z"
743+ config :
744+ project_id :" my-project-123"
745+ topic :" events-topic"
746+ credentials :
747+ service_account_json :' {"type":"service_account","project_id":"my-project-123",...}'
670748
671749# Polymorphic Destination Schema (for Responses)
672750Destination :
@@ -678,6 +756,7 @@ components:
678756 -$ref :" #/components/schemas/DestinationAWSKinesis"
679757 -$ref :" #/components/schemas/DestinationAzureServiceBus"
680758 -$ref :" #/components/schemas/DestinationAWSS3"
759+ -$ref :" #/components/schemas/DestinationGCPPubSub"
681760discriminator :
682761propertyName :type
683762mapping :
@@ -688,6 +767,7 @@ components:
688767aws_kinesis :" #/components/schemas/DestinationAWSKinesis"
689768azure_servicebus :" #/components/schemas/DestinationAzureServiceBus"
690769aws_s3 :" #/components/schemas/DestinationAWSS3"
770+ gcp_pubsub :" #/components/schemas/DestinationGCPPubSub"
691771
692772DestinationCreateWebhook :
693773type :object
@@ -817,6 +897,24 @@ components:
817897$ref :" #/components/schemas/AWSS3Config"
818898credentials :
819899$ref :" #/components/schemas/AWSS3Credentials"
900+ DestinationCreateGCPPubSub :
901+ type :object
902+ required :[type, topics, config, credentials]
903+ properties :
904+ id :
905+ type :string
906+ description :Optional user-provided ID. A UUID will be generated if empty.
907+ example :" user-provided-id"
908+ type :
909+ type :string
910+ description :Type of the destination. Must be 'gcp_pubsub'.
911+ enum :[gcp_pubsub]
912+ topics :
913+ $ref :" #/components/schemas/Topics"
914+ config :
915+ $ref :" #/components/schemas/GCPPubSubConfig"
916+ credentials :
917+ $ref :" #/components/schemas/GCPPubSubCredentials"
820918
821919# Polymorphic Destination Creation Schema (for Request Bodies)
822920DestinationCreate :
@@ -828,6 +926,7 @@ components:
828926 -$ref :" #/components/schemas/DestinationCreateAWSKinesis"
829927 -$ref :" #/components/schemas/DestinationCreateAzureServiceBus"
830928 -$ref :" #/components/schemas/DestinationCreateAWSS3"
929+ -$ref :" #/components/schemas/DestinationCreateGCPPubSub"
831930discriminator :
832931propertyName :type
833932mapping :
@@ -838,6 +937,7 @@ components:
838937aws_kinesis :" #/components/schemas/DestinationCreateAWSKinesis"
839938azure_servicebus :" #/components/schemas/DestinationCreateAzureServiceBus"
840939aws_s3 :" #/components/schemas/DestinationCreateAWSS3"
940+ gcp_pubsub :" #/components/schemas/DestinationCreateGCPPubSub"
841941
842942# Type-Specific Destination Update Schemas (for Request Bodies)
843943WebhookCredentialsUpdate :
@@ -905,6 +1005,16 @@ components:
9051005$ref :" #/components/schemas/AWSKinesisConfig" # stream_name/region required here, but PATCH means optional
9061006credentials :
9071007$ref :" #/components/schemas/AWSKinesisCredentials" # key/secret required here, but PATCH means optional
1008+ DestinationUpdateAzureServiceBus :
1009+ type :object
1010+ # Properties duplicated from DestinationUpdateBase
1011+ properties :
1012+ topics :
1013+ $ref :" #/components/schemas/Topics"
1014+ config :
1015+ $ref :" #/components/schemas/AzureServiceBusConfig" # name required here, but PATCH means optional
1016+ credentials :
1017+ $ref :" #/components/schemas/AzureServiceBusCredentials" # connection_string required here, but PATCH means optional
9081018
9091019DestinationUpdateAWSS3 :
9101020type :object
@@ -916,6 +1026,16 @@ components:
9161026$ref :" #/components/schemas/AWSS3Config" # bucket/region required here, but PATCH means optional
9171027credentials :
9181028$ref :" #/components/schemas/AWSS3Credentials" # key/secret required here, but PATCH means optional
1029+ DestinationUpdateGCPPubSub :
1030+ type :object
1031+ # Properties duplicated from DestinationUpdateBase
1032+ properties :
1033+ topics :
1034+ $ref :" #/components/schemas/Topics"
1035+ config :
1036+ $ref :" #/components/schemas/GCPPubSubConfig" # project_id/topic required here, but PATCH means optional
1037+ credentials :
1038+ $ref :" #/components/schemas/GCPPubSubCredentials" # service_account_json required here, but PATCH means optional
9191039
9201040# Polymorphic Destination Update Schema (for Request Bodies)
9211041DestinationUpdate :
@@ -925,7 +1045,9 @@ components:
9251045 -$ref :" #/components/schemas/DestinationUpdateRabbitMQ"
9261046 -$ref :" #/components/schemas/DestinationUpdateHookdeck"
9271047 -$ref :" #/components/schemas/DestinationUpdateAWSKinesis"
1048+ -$ref :" #/components/schemas/DestinationUpdateAzureServiceBus"
9281049 -$ref :" #/components/schemas/DestinationUpdateAWSS3"
1050+ -$ref :" #/components/schemas/DestinationUpdateGCPPubSub"
9291051# Event Schemas
9301052PublishRequest :
9311053type :object
@@ -996,10 +1118,15 @@ components:
9961118example :" 2024-01-01T00:00:00Z"
9971119metadata :
9981120type :object
1121+ nullable :true
9991122description :Key-value string pairs of metadata associated with the event.
10001123additionalProperties :
10011124type :string
10021125example :{ "source": "crm" }
1126+ status :
1127+ type :string
1128+ enum :[success, failed]
1129+ example :" success"
10031130data :
10041131type :object
10051132description :Freeform JSON data of the event.
@@ -1338,11 +1465,31 @@ paths:
13381465schema :
13391466oneOf :
13401467 -type :string
1341- enum :[webhook, aws_sqs, rabbitmq, hookdeck, aws_kinesis, aws_s3]
1468+ enum :
1469+ [
1470+ webhook,
1471+ aws_sqs,
1472+ rabbitmq,
1473+ hookdeck,
1474+ aws_kinesis,
1475+ azure_servicebus,
1476+ aws_s3,
1477+ gcp_pubsub,
1478+ ]
13421479 -type :array
13431480items :
13441481type :string
1345- enum :[webhook, aws_sqs, rabbitmq, hookdeck, aws_kinesis, aws_s3]
1482+ enum :
1483+ [
1484+ webhook,
1485+ aws_sqs,
1486+ rabbitmq,
1487+ hookdeck,
1488+ aws_kinesis,
1489+ azure_servicebus,
1490+ aws_s3,
1491+ gcp_pubsub,
1492+ ]
13461493description :Filter destinations by type(s).
13471494 -name :topics
13481495in :query