svix 2.2.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -1
  3. data/Gemfile.lock +1 -25
  4. data/lib/svix/api/destination.rb +75 -0
  5. data/lib/svix/api/destination_transformation.rb +30 -0
  6. data/lib/svix/api_internal/destination.rb +14 -0
  7. data/lib/svix/api_internal/destination_autoconfig.rb +22 -0
  8. data/lib/svix/api_internal/endpoint.rb +4 -2
  9. data/lib/svix/api_internal/{endpoint_auto_config.rb → endpoint_auto_config_deprecated.rb} +1 -1
  10. data/lib/svix/api_internal/endpoint_autoconfig.rb +30 -0
  11. data/lib/svix/autoconfig.rb +53 -19
  12. data/lib/svix/autoconfig_consumer.rb +70 -9
  13. data/lib/svix/models/adobe_sign_config.rb +3 -3
  14. data/lib/svix/models/adobe_sign_config_out.rb +2 -2
  15. data/lib/svix/models/aggregate_event_types_out.rb +6 -6
  16. data/lib/svix/models/airwallex_config.rb +3 -3
  17. data/lib/svix/models/airwallex_config_out.rb +2 -2
  18. data/lib/svix/models/api_token_out.rb +8 -8
  19. data/lib/svix/models/app_portal_access_in.rb +8 -8
  20. data/lib/svix/models/app_portal_access_out.rb +4 -4
  21. data/lib/svix/models/app_usage_stats_in.rb +5 -5
  22. data/lib/svix/models/app_usage_stats_out.rb +7 -7
  23. data/lib/svix/models/application_in.rb +6 -6
  24. data/lib/svix/models/application_out.rb +9 -9
  25. data/lib/svix/models/application_patch.rb +4 -4
  26. data/lib/svix/models/application_token_expire_in.rb +4 -4
  27. data/lib/svix/models/auto_config_sink_type.rb +4 -8
  28. data/lib/svix/models/auto_config_subscription_out.rb +67 -0
  29. data/lib/svix/models/azure_blob_storage_config_in.rb +5 -5
  30. data/lib/svix/models/azure_blob_storage_config_out.rb +4 -4
  31. data/lib/svix/models/azure_blob_storage_config_patch.rb +5 -5
  32. data/lib/svix/models/background_task_out.rb +7 -7
  33. data/lib/svix/models/big_query_config_in.rb +6 -6
  34. data/lib/svix/models/big_query_config_out.rb +5 -5
  35. data/lib/svix/models/big_query_config_patch.rb +6 -6
  36. data/lib/svix/models/bulk_expunge_contents_in.rb +3 -3
  37. data/lib/svix/models/bulk_expunge_contents_out.rb +3 -3
  38. data/lib/svix/models/bulk_replay_in.rb +9 -9
  39. data/lib/svix/models/checkbook_config.rb +3 -3
  40. data/lib/svix/models/checkbook_config_out.rb +2 -2
  41. data/lib/svix/models/clickhouse_config_in.rb +7 -7
  42. data/lib/svix/models/clickhouse_config_out.rb +6 -6
  43. data/lib/svix/models/clickhouse_config_patch.rb +7 -7
  44. data/lib/svix/models/connector_in.rb +12 -12
  45. data/lib/svix/models/connector_out.rb +17 -17
  46. data/lib/svix/models/connector_patch.rb +7 -7
  47. data/lib/svix/models/connector_upsert_in.rb +10 -10
  48. data/lib/svix/models/create_stream_events_in.rb +4 -4
  49. data/lib/svix/models/create_stream_events_out.rb +2 -2
  50. data/lib/svix/models/cron_config.rb +5 -5
  51. data/lib/svix/models/destination_in.rb +204 -0
  52. data/lib/svix/models/destination_out.rb +224 -0
  53. data/lib/svix/models/destination_patch.rb +190 -0
  54. data/lib/svix/models/destination_status.rb +31 -0
  55. data/lib/svix/models/destination_status_in.rb +29 -0
  56. data/lib/svix/models/destination_transform_in.rb +49 -0
  57. data/lib/svix/models/destination_transformation_out.rb +52 -0
  58. data/lib/svix/models/docusign_config.rb +3 -3
  59. data/lib/svix/models/docusign_config_out.rb +2 -2
  60. data/lib/svix/models/easypost_config.rb +3 -3
  61. data/lib/svix/models/easypost_config_out.rb +2 -2
  62. data/lib/svix/models/empty_response.rb +2 -2
  63. data/lib/svix/models/endpoint_headers_in.rb +3 -3
  64. data/lib/svix/models/endpoint_headers_out.rb +4 -4
  65. data/lib/svix/models/endpoint_headers_patch_in.rb +4 -4
  66. data/lib/svix/models/endpoint_in.rb +12 -12
  67. data/lib/svix/models/endpoint_message_out.rb +13 -13
  68. data/lib/svix/models/endpoint_out.rb +13 -13
  69. data/lib/svix/models/endpoint_patch.rb +5 -5
  70. data/lib/svix/models/endpoint_secret_out.rb +3 -3
  71. data/lib/svix/models/endpoint_secret_rotate_in.rb +4 -4
  72. data/lib/svix/models/endpoint_stats.rb +7 -7
  73. data/lib/svix/models/endpoint_transformation_in.rb +4 -4
  74. data/lib/svix/models/endpoint_transformation_out.rb +6 -6
  75. data/lib/svix/models/endpoint_transformation_patch.rb +2 -2
  76. data/lib/svix/models/endpoint_upsert_in.rb +10 -10
  77. data/lib/svix/models/environment_in.rb +5 -5
  78. data/lib/svix/models/environment_out.rb +7 -7
  79. data/lib/svix/models/event_bridge_config_in.rb +7 -7
  80. data/lib/svix/models/event_bridge_config_out.rb +6 -6
  81. data/lib/svix/models/event_bridge_config_patch.rb +7 -7
  82. data/lib/svix/models/event_example_in.rb +4 -4
  83. data/lib/svix/models/event_in.rb +4 -4
  84. data/lib/svix/models/event_out.rb +5 -5
  85. data/lib/svix/models/event_stream_out.rb +5 -5
  86. data/lib/svix/models/event_type_from_open_api.rb +8 -8
  87. data/lib/svix/models/event_type_import_open_api_in.rb +6 -6
  88. data/lib/svix/models/event_type_import_open_api_out.rb +3 -3
  89. data/lib/svix/models/event_type_import_open_api_out_data.rb +4 -4
  90. data/lib/svix/models/event_type_in.rb +9 -9
  91. data/lib/svix/models/event_type_out.rb +12 -12
  92. data/lib/svix/models/event_type_patch.rb +3 -3
  93. data/lib/svix/models/event_type_upsert_in.rb +8 -8
  94. data/lib/svix/models/expunge_all_contents_out.rb +6 -6
  95. data/lib/svix/models/fifo_endpoint_config_in.rb +52 -0
  96. data/lib/svix/models/github_config.rb +3 -3
  97. data/lib/svix/models/github_config_out.rb +2 -2
  98. data/lib/svix/models/google_cloud_pub_sub_config_in.rb +5 -5
  99. data/lib/svix/models/google_cloud_pub_sub_config_out.rb +4 -4
  100. data/lib/svix/models/google_cloud_pub_sub_config_patch.rb +5 -5
  101. data/lib/svix/models/google_cloud_storage_config_in.rb +4 -4
  102. data/lib/svix/models/google_cloud_storage_config_out.rb +3 -3
  103. data/lib/svix/models/google_cloud_storage_config_patch.rb +4 -4
  104. data/lib/svix/models/http_sink_headers_patch_in.rb +3 -3
  105. data/lib/svix/models/hubspot_config.rb +3 -3
  106. data/lib/svix/models/hubspot_config_out.rb +2 -2
  107. data/lib/svix/models/ingest_endpoint_headers_in.rb +3 -3
  108. data/lib/svix/models/ingest_endpoint_headers_out.rb +4 -4
  109. data/lib/svix/models/ingest_endpoint_in.rb +10 -10
  110. data/lib/svix/models/ingest_endpoint_out.rb +11 -11
  111. data/lib/svix/models/ingest_endpoint_secret_in.rb +4 -4
  112. data/lib/svix/models/ingest_endpoint_secret_out.rb +3 -3
  113. data/lib/svix/models/ingest_endpoint_transformation_out.rb +5 -5
  114. data/lib/svix/models/ingest_endpoint_transformation_patch.rb +2 -2
  115. data/lib/svix/models/ingest_endpoint_upsert_in.rb +8 -8
  116. data/lib/svix/models/ingest_source_consumer_portal_access_in.rb +4 -4
  117. data/lib/svix/models/ingest_source_in.rb +14 -13
  118. data/lib/svix/models/ingest_source_out.rb +18 -17
  119. data/lib/svix/models/integration_in.rb +4 -4
  120. data/lib/svix/models/integration_key_out.rb +3 -3
  121. data/lib/svix/models/integration_out.rb +7 -7
  122. data/lib/svix/models/integration_update.rb +4 -4
  123. data/lib/svix/models/list_response_application_out.rb +6 -6
  124. data/lib/svix/models/list_response_background_task_out.rb +6 -6
  125. data/lib/svix/models/list_response_connector_out.rb +6 -6
  126. data/lib/svix/models/list_response_destination_out.rb +58 -0
  127. data/lib/svix/models/list_response_endpoint_message_out.rb +6 -6
  128. data/lib/svix/models/list_response_endpoint_out.rb +6 -6
  129. data/lib/svix/models/list_response_event_type_out.rb +6 -6
  130. data/lib/svix/models/list_response_ingest_endpoint_out.rb +6 -6
  131. data/lib/svix/models/list_response_ingest_source_out.rb +6 -6
  132. data/lib/svix/models/list_response_integration_out.rb +6 -6
  133. data/lib/svix/models/list_response_message_attempt_out.rb +6 -6
  134. data/lib/svix/models/list_response_message_endpoint_out.rb +6 -6
  135. data/lib/svix/models/list_response_message_out.rb +6 -6
  136. data/lib/svix/models/list_response_operational_webhook_endpoint_out.rb +6 -6
  137. data/lib/svix/models/list_response_stream_event_type_out.rb +6 -6
  138. data/lib/svix/models/list_response_stream_out.rb +6 -6
  139. data/lib/svix/models/list_response_stream_sink_out.rb +6 -6
  140. data/lib/svix/models/merge_config.rb +46 -0
  141. data/lib/svix/models/merge_config_out.rb +43 -0
  142. data/lib/svix/models/message_attempt_out.rb +14 -14
  143. data/lib/svix/models/message_endpoint_out.rb +15 -15
  144. data/lib/svix/models/message_in.rb +21 -12
  145. data/lib/svix/models/message_out.rb +10 -10
  146. data/lib/svix/models/message_precheck_in.rb +4 -4
  147. data/lib/svix/models/message_precheck_out.rb +3 -3
  148. data/lib/svix/models/meta_config.rb +4 -4
  149. data/lib/svix/models/meta_config_out.rb +2 -2
  150. data/lib/svix/models/nango_config.rb +3 -3
  151. data/lib/svix/models/nango_config_out.rb +2 -2
  152. data/lib/svix/models/open_claw_config.rb +3 -3
  153. data/lib/svix/models/open_claw_config_out.rb +2 -2
  154. data/lib/svix/models/operational_webhook_endpoint_headers_in.rb +3 -3
  155. data/lib/svix/models/operational_webhook_endpoint_headers_out.rb +4 -4
  156. data/lib/svix/models/operational_webhook_endpoint_in.rb +11 -11
  157. data/lib/svix/models/operational_webhook_endpoint_out.rb +12 -12
  158. data/lib/svix/models/operational_webhook_endpoint_secret_in.rb +4 -4
  159. data/lib/svix/models/operational_webhook_endpoint_secret_out.rb +3 -3
  160. data/lib/svix/models/operational_webhook_endpoint_upsert_in.rb +9 -9
  161. data/lib/svix/models/orum_io_config.rb +3 -3
  162. data/lib/svix/models/orum_io_config_out.rb +3 -3
  163. data/lib/svix/models/otel_tracing_config_in.rb +4 -4
  164. data/lib/svix/models/otel_tracing_config_out.rb +4 -4
  165. data/lib/svix/models/otel_tracing_config_patch.rb +3 -3
  166. data/lib/svix/models/panda_doc_config.rb +3 -3
  167. data/lib/svix/models/panda_doc_config_out.rb +2 -2
  168. data/lib/svix/models/poller_v2_commit_in.rb +3 -3
  169. data/lib/svix/models/poller_v2_message_out.rb +12 -12
  170. data/lib/svix/models/poller_v2_poll_out.rb +4 -4
  171. data/lib/svix/models/polling_endpoint_consumer_seek_in.rb +3 -3
  172. data/lib/svix/models/polling_endpoint_consumer_seek_out.rb +3 -3
  173. data/lib/svix/models/polling_endpoint_message_out.rb +11 -11
  174. data/lib/svix/models/polling_endpoint_out.rb +5 -5
  175. data/lib/svix/models/port_io_config.rb +3 -3
  176. data/lib/svix/models/port_io_config_out.rb +2 -2
  177. data/lib/svix/models/postgres_config_in.rb +65 -0
  178. data/lib/svix/models/postgres_config_out.rb +52 -0
  179. data/lib/svix/models/postgres_config_patch.rb +55 -0
  180. data/lib/svix/models/rabbit_mq_config_in.rb +4 -4
  181. data/lib/svix/models/rabbit_mq_config_out.rb +3 -3
  182. data/lib/svix/models/rabbit_mq_config_patch.rb +4 -4
  183. data/lib/svix/models/recover_in.rb +4 -4
  184. data/lib/svix/models/recover_out.rb +6 -6
  185. data/lib/svix/models/redshift_config_in.rb +11 -11
  186. data/lib/svix/models/redshift_config_out.rb +10 -10
  187. data/lib/svix/models/redshift_config_patch.rb +7 -7
  188. data/lib/svix/models/replay_in.rb +4 -4
  189. data/lib/svix/models/replay_out.rb +6 -6
  190. data/lib/svix/models/rotate_poller_token_in.rb +4 -4
  191. data/lib/svix/models/rotate_token_out.rb +3 -3
  192. data/lib/svix/models/rutter_config.rb +3 -3
  193. data/lib/svix/models/rutter_config_out.rb +2 -2
  194. data/lib/svix/models/s3_config_in.rb +21 -11
  195. data/lib/svix/models/s3_config_out.rb +13 -7
  196. data/lib/svix/models/s3_config_patch.rb +14 -8
  197. data/lib/svix/models/segment_config.rb +3 -3
  198. data/lib/svix/models/segment_config_out.rb +2 -2
  199. data/lib/svix/models/shopify_config.rb +3 -3
  200. data/lib/svix/models/shopify_config_out.rb +2 -2
  201. data/lib/svix/models/sink_http_config_in.rb +5 -5
  202. data/lib/svix/models/sink_http_config_out.rb +4 -4
  203. data/lib/svix/models/sink_http_config_patch.rb +3 -3
  204. data/lib/svix/models/sink_in_common.rb +10 -10
  205. data/lib/svix/models/sink_secret_out.rb +3 -3
  206. data/lib/svix/models/sink_transform_in.rb +3 -3
  207. data/lib/svix/models/sink_transformation_out.rb +4 -4
  208. data/lib/svix/models/slack_config.rb +3 -3
  209. data/lib/svix/models/slack_config_out.rb +2 -2
  210. data/lib/svix/models/snowflake_config_in.rb +8 -8
  211. data/lib/svix/models/snowflake_config_out.rb +7 -7
  212. data/lib/svix/models/snowflake_config_patch.rb +8 -8
  213. data/lib/svix/models/sns_config_in.rb +7 -7
  214. data/lib/svix/models/sns_config_out.rb +5 -5
  215. data/lib/svix/models/sns_config_patch.rb +6 -6
  216. data/lib/svix/models/sqs_config_in.rb +7 -7
  217. data/lib/svix/models/sqs_config_out.rb +6 -6
  218. data/lib/svix/models/sqs_config_patch.rb +6 -6
  219. data/lib/svix/models/status.rb +29 -0
  220. data/lib/svix/models/stream_event_type_in.rb +7 -7
  221. data/lib/svix/models/stream_event_type_out.rb +9 -9
  222. data/lib/svix/models/stream_event_type_patch.rb +2 -2
  223. data/lib/svix/models/stream_in.rb +5 -5
  224. data/lib/svix/models/stream_out.rb +8 -8
  225. data/lib/svix/models/stream_patch.rb +4 -4
  226. data/lib/svix/models/stream_portal_access_in.rb +5 -5
  227. data/lib/svix/models/stream_sink_in.rb +19 -18
  228. data/lib/svix/models/stream_sink_out.rb +42 -24
  229. data/lib/svix/models/stream_sink_patch.rb +15 -14
  230. data/lib/svix/models/stream_token_expire_in.rb +4 -4
  231. data/lib/svix/models/stripe_config.rb +3 -3
  232. data/lib/svix/models/stripe_config_out.rb +2 -2
  233. data/lib/svix/models/subscribe_in.rb +4 -4
  234. data/lib/svix/models/svix_config.rb +3 -3
  235. data/lib/svix/models/svix_config_out.rb +2 -2
  236. data/lib/svix/models/tailscale_config.rb +7 -4
  237. data/lib/svix/models/tailscale_config_out.rb +2 -2
  238. data/lib/svix/models/telnyx_config.rb +3 -3
  239. data/lib/svix/models/telnyx_config_out.rb +3 -3
  240. data/lib/svix/models/vapi_config.rb +3 -3
  241. data/lib/svix/models/vapi_config_out.rb +2 -2
  242. data/lib/svix/models/veriff_config.rb +3 -3
  243. data/lib/svix/models/veriff_config_out.rb +2 -2
  244. data/lib/svix/models/vgs_config.rb +3 -3
  245. data/lib/svix/models/vgs_config_out.rb +2 -2
  246. data/lib/svix/models/zoom_config.rb +3 -3
  247. data/lib/svix/models/zoom_config_out.rb +2 -2
  248. data/lib/svix/svix.rb +7 -0
  249. data/lib/svix/svix_http_client.rb +1 -1
  250. data/lib/svix/version.rb +1 -1
  251. data/lib/svix.rb +16 -0
  252. metadata +24 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8dd0d5cc88df2b3c7b72c3ae4e4013eababe33b9f065fa6d6ddd9ecb3f553eb7
4
- data.tar.gz: 5a5243d7a46f930208a2cccc423f427a565f657765109dfe05a4f4172cda80fb
3
+ metadata.gz: 80a5c538c52aca1bfdc78b0c292d1b98026e33d52d34d046018cb29f46299045
4
+ data.tar.gz: ef7c60c07d70db846465d98192659f868fc64525b272c067e33994b5d32e4a7c
5
5
  SHA512:
6
- metadata.gz: 9da60778c0231331f4d8ac6a52f2cec1f29466a94d27adec701d407eb3fa613f3e75c6ff60f3f125e7e4951873fd4abf225b115093dee07970bf975f589327db
7
- data.tar.gz: 16f4ddbb41c6744205843c174907bdd8ce66bf4987ce6c07530c8ab9117328d4601792e0f645bf6b9763793861443f78d468e23aef223b950be091bc12388397
6
+ metadata.gz: c575396bda140b62d3f6d033f57b3fdfe87752a372e2bfdc009da887a7a7d9cbc16d47cc0e428d93bdaa0e17686f86e13ba522f4037dd299421ee4215ea340cf
7
+ data.tar.gz: 7857cacda9161bcce17b0b3a0a96ffaf046b2db17e856f3ecc8932c5effd9f13e7efe774e284f2fa9780a50256fa247999e44c21d94b27c0847974870d6226b3
data/Gemfile CHANGED
@@ -3,6 +3,5 @@ source "https://rubygems.org"
3
3
  gem 'base64'
4
4
  gem 'logger'
5
5
  gem 'ostruct'
6
- gem "irb"
7
6
 
8
7
  gemspec
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- svix (2.2.0)
4
+ svix (2.4.0)
5
5
  base64 (~> 0.3.0)
6
6
  logger (~> 1.0)
7
7
 
@@ -16,33 +16,11 @@ GEM
16
16
  bigdecimal
17
17
  rexml
18
18
  diff-lcs (1.6.2)
19
- erb (6.0.7)
20
19
  hashdiff (1.2.1)
21
- io-console (0.9.2)
22
- irb (1.18.0)
23
- pp (>= 0.6.0)
24
- prism (>= 1.3.0)
25
- rdoc (>= 4.0.0)
26
- reline (>= 0.4.2)
27
20
  logger (1.7.0)
28
21
  ostruct (0.6.3)
29
- pp (0.6.4)
30
- prettyprint
31
- prettyprint (0.2.0)
32
- prism (1.9.0)
33
22
  public_suffix (7.0.5)
34
23
  rake (13.4.1)
35
- rbs (4.1.3)
36
- logger
37
- prism (>= 1.6.0)
38
- tsort
39
- rdoc (8.0.0)
40
- erb
41
- prism (>= 1.6.0)
42
- rbs (>= 4.0.0)
43
- tsort
44
- reline (0.7.0)
45
- io-console (~> 0.5)
46
24
  rexml (3.4.4)
47
25
  rspec (3.13.2)
48
26
  rspec-core (~> 3.13.0)
@@ -58,7 +36,6 @@ GEM
58
36
  rspec-support (~> 3.13.0)
59
37
  rspec-support (3.13.7)
60
38
  subprocess (1.5.7)
61
- tsort (0.2.0)
62
39
  webmock (3.26.2)
63
40
  addressable (>= 2.8.0)
64
41
  crack (>= 0.3.2)
@@ -69,7 +46,6 @@ PLATFORMS
69
46
 
70
47
  DEPENDENCIES
71
48
  base64
72
- irb
73
49
  logger
74
50
  ostruct
75
51
  rake (~> 13.0)
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+ # This file is @generated
3
+
4
+ require "net/http"
5
+
6
+ module Svix
7
+ class Destination
8
+ attr_accessor :transformation
9
+ def initialize(client)
10
+ @client = client
11
+ @transformation = DestinationTransformation.new(client)
12
+ end
13
+
14
+ def list(app_id, options = {})
15
+ options = options.transform_keys(&:to_s)
16
+ res = @client.execute_request(
17
+ "GET",
18
+ "/api/v1/app/#{app_id}/destination",
19
+ query_params: {
20
+ "limit" => options["limit"],
21
+ "iterator" => options["iterator"],
22
+ "order" => options["order"]
23
+ }
24
+ )
25
+ ListResponseDestinationOut.deserialize(res)
26
+ end
27
+
28
+ def create(app_id, destination_in, options = {})
29
+ options = options.transform_keys(&:to_s)
30
+ res = @client.execute_request(
31
+ "POST",
32
+ "/api/v1/app/#{app_id}/destination",
33
+ headers: {
34
+ "idempotency-key" => options["idempotency-key"]
35
+ },
36
+ body: destination_in
37
+ )
38
+ DestinationOut.deserialize(res)
39
+ end
40
+
41
+ def get(app_id, destination_id)
42
+ res = @client.execute_request(
43
+ "GET",
44
+ "/api/v1/app/#{app_id}/destination/#{destination_id}"
45
+ )
46
+ DestinationOut.deserialize(res)
47
+ end
48
+
49
+ def upsert(app_id, destination_id, destination_in)
50
+ res = @client.execute_request(
51
+ "PUT",
52
+ "/api/v1/app/#{app_id}/destination/#{destination_id}",
53
+ body: destination_in
54
+ )
55
+ DestinationOut.deserialize(res)
56
+ end
57
+
58
+ def delete(app_id, destination_id)
59
+ @client.execute_request(
60
+ "DELETE",
61
+ "/api/v1/app/#{app_id}/destination/#{destination_id}"
62
+ )
63
+ end
64
+
65
+ def patch(app_id, destination_id, destination_patch)
66
+ res = @client.execute_request(
67
+ "PATCH",
68
+ "/api/v1/app/#{app_id}/destination/#{destination_id}",
69
+ body: destination_patch
70
+ )
71
+ DestinationOut.deserialize(res)
72
+ end
73
+
74
+ end
75
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+ # This file is @generated
3
+
4
+ require "net/http"
5
+
6
+ module Svix
7
+ class DestinationTransformation
8
+ def initialize(client)
9
+ @client = client
10
+ end
11
+
12
+ def get(app_id, destination_id)
13
+ res = @client.execute_request(
14
+ "GET",
15
+ "/api/v1/app/#{app_id}/destination/#{destination_id}/transformation"
16
+ )
17
+ DestinationTransformationOut.deserialize(res)
18
+ end
19
+
20
+ def patch(app_id, destination_id, destination_transform_in)
21
+ res = @client.execute_request(
22
+ "PATCH",
23
+ "/api/v1/app/#{app_id}/destination/#{destination_id}/transformation",
24
+ body: destination_transform_in
25
+ )
26
+ EmptyResponse.deserialize(res)
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+ # This file is @generated
3
+
4
+ require "net/http"
5
+
6
+ module Svix
7
+ class Destination
8
+ attr_accessor :autoconfig
9
+ def initialize(client)
10
+ @client = client
11
+ @autoconfig = DestinationAutoconfig.new(client)
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+ # This file is @generated
3
+
4
+ require "net/http"
5
+
6
+ module Svix
7
+ class DestinationAutoconfig
8
+ def initialize(client)
9
+ @client = client
10
+ end
11
+
12
+ def subscribe(app_id, autoconfig_id, destination_in)
13
+ res = @client.execute_request(
14
+ "PUT",
15
+ "/api/v1/app/#{app_id}/autoconfig/#{autoconfig_id}/destination",
16
+ body: destination_in
17
+ )
18
+ DestinationOut.deserialize(res)
19
+ end
20
+
21
+ end
22
+ end
@@ -5,10 +5,12 @@ require "net/http"
5
5
 
6
6
  module Svix
7
7
  class Endpoint
8
- attr_accessor :auto_config
8
+ attr_accessor :auto_config_deprecated
9
+ attr_accessor :autoconfig
9
10
  def initialize(client)
10
11
  @client = client
11
- @auto_config = EndpointAutoConfig.new(client)
12
+ @auto_config_deprecated = EndpointAutoConfigDeprecated.new(client)
13
+ @autoconfig = EndpointAutoconfig.new(client)
12
14
  end
13
15
 
14
16
  def transformation_partial_update(app_id, endpoint_id, endpoint_transformation_in)
@@ -4,7 +4,7 @@
4
4
  require "net/http"
5
5
 
6
6
  module Svix
7
- class EndpointAutoConfig
7
+ class EndpointAutoConfigDeprecated
8
8
  def initialize(client)
9
9
  @client = client
10
10
  end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+ # This file is @generated
3
+
4
+ require "net/http"
5
+
6
+ module Svix
7
+ class EndpointAutoconfig
8
+ def initialize(client)
9
+ @client = client
10
+ end
11
+
12
+ def get(app_id, autoconfig_id)
13
+ res = @client.execute_request(
14
+ "GET",
15
+ "/api/v1/app/#{app_id}/autoconfig/#{autoconfig_id}"
16
+ )
17
+ AutoConfigSubscriptionOut.deserialize(res)
18
+ end
19
+
20
+ def subscribe(app_id, autoconfig_id, endpoint_in)
21
+ res = @client.execute_request(
22
+ "PUT",
23
+ "/api/v1/app/#{app_id}/autoconfig/#{autoconfig_id}/endpoint",
24
+ body: endpoint_in
25
+ )
26
+ EndpointOut.deserialize(res)
27
+ end
28
+
29
+ end
30
+ end
@@ -5,11 +5,14 @@ require "base64"
5
5
  require "uri"
6
6
 
7
7
  require "svix/models/subscribe_in"
8
- require "svix/api_internal/endpoint_auto_config"
8
+ require "svix/api_internal/endpoint_auto_config_deprecated"
9
+ require "svix/api_internal/endpoint_autoconfig"
9
10
 
10
11
  module Svix
11
12
  class AutoConfig
12
13
  AUTOCONFIG_TOKEN_PREFIX_V1 = "auto_v1_"
14
+ AUTOCONFIG_TOKEN_PREFIX_V2 = "auto_v2_"
15
+ UNSUPPORTED_TOKEN_VERSION = "Unsupported token version. You might need to update the Svix SDK to use this token"
13
16
 
14
17
  class InvalidTokenError < StandardError; end
15
18
 
@@ -18,7 +21,8 @@ module Svix
18
21
  def initialize(token, endpoint_in)
19
22
  content = AutoConfig.decode_token!(token)
20
23
  @app_id = content.fetch("app_id")
21
- @endpoint_id = content.fetch("endpoint_id")
24
+ @endpoint_id = content["endpoint_id"]
25
+ @autoconfig_id = content["autoconfig_id"]
22
26
  @endpoint = endpoint_in
23
27
  @webhook = Webhook.new(content.fetch("endpoint_secret"))
24
28
  @client = SvixHttpClient.new(
@@ -28,11 +32,19 @@ module Svix
28
32
  end
29
33
 
30
34
  def subscribe
31
- EndpointAutoConfig.new(@client).update(
32
- @app_id,
33
- @endpoint_id,
34
- SubscribeIn.new("endpoint" => @endpoint)
35
- )
35
+ if @autoconfig_id
36
+ EndpointAutoconfig.new(@client).subscribe(
37
+ @app_id,
38
+ @autoconfig_id,
39
+ @endpoint
40
+ )
41
+ else
42
+ EndpointAutoConfigDeprecated.new(@client).update(
43
+ @app_id,
44
+ @endpoint_id,
45
+ SubscribeIn.new("endpoint" => @endpoint)
46
+ )
47
+ end
36
48
  end
37
49
 
38
50
  def verify(payload, headers)
@@ -41,26 +53,48 @@ module Svix
41
53
 
42
54
  class << self
43
55
  def decode_token!(token)
44
- unless token.is_a?(String) && token.start_with?(AUTOCONFIG_TOKEN_PREFIX_V1)
45
- raise InvalidTokenError
56
+ unless token.is_a?(String)
57
+ raise InvalidTokenError, UNSUPPORTED_TOKEN_VERSION
46
58
  end
47
59
 
48
- encoded = token.byteslice(AUTOCONFIG_TOKEN_PREFIX_V1.length..-1)
60
+ if token.start_with?(AUTOCONFIG_TOKEN_PREFIX_V1)
61
+ data = parse_token_payload!(token, AUTOCONFIG_TOKEN_PREFIX_V1)
62
+ {
63
+ "version" => "v1",
64
+ "app_id" => data.fetch("aid"),
65
+ "endpoint_id" => data.fetch("eid"),
66
+ "server_url" => data.fetch("surl"),
67
+ "endpoint_secret" => data.fetch("esec"),
68
+ "token_plaintext" => data.fetch("tok"),
69
+ }
70
+ elsif token.start_with?(AUTOCONFIG_TOKEN_PREFIX_V2)
71
+ data = parse_token_payload!(token, AUTOCONFIG_TOKEN_PREFIX_V2)
72
+ {
73
+ "version" => "v2",
74
+ "app_id" => data.fetch("aid"),
75
+ "autoconfig_id" => data.fetch("sid"),
76
+ "server_url" => data.fetch("surl"),
77
+ "endpoint_secret" => data.fetch("esec"),
78
+ "token_plaintext" => data.fetch("tok"),
79
+ }
80
+ else
81
+ raise InvalidTokenError, UNSUPPORTED_TOKEN_VERSION
82
+ end
83
+ rescue ArgumentError, JSON::ParserError, KeyError, TypeError
84
+ raise InvalidTokenError
85
+ end
86
+
87
+ private
88
+
89
+ def parse_token_payload!(token, prefix)
90
+ encoded = token.byteslice(prefix.length..-1)
49
91
  json = Base64.decode64(encoded)
50
92
  data = JSON.parse(json)
51
93
  unless data.is_a?(Hash)
52
94
  raise InvalidTokenError
53
95
  end
54
96
 
55
- {
56
- "app_id" => data.fetch("aid"),
57
- "endpoint_id" => data.fetch("eid"),
58
- "server_url" => data.fetch("surl"),
59
- "endpoint_secret" => data.fetch("esec"),
60
- "token_plaintext" => data.fetch("tok"),
61
- }
62
- rescue ArgumentError, JSON::ParserError, KeyError, TypeError
63
- raise InvalidTokenError
97
+ data
64
98
  end
65
99
  end
66
100
  end
@@ -1,10 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "uri"
4
+
3
5
  require "svix/models/auto_config_sink_type"
6
+ require "svix/models/auto_config_subscription_out"
7
+ require "svix/models/status"
8
+ require "svix/models/destination_in"
9
+ require "svix/models/destination_out"
4
10
  require "svix/models/poller_v2_commit_in"
5
11
  require "svix/models/sink_in_common"
12
+ require "svix/models/destination_status"
6
13
  require "svix/models/subscribe_in"
7
- require "svix/api_internal/endpoint_auto_config"
14
+ require "svix/api_internal/endpoint_auto_config_deprecated"
15
+ require "svix/api_internal/endpoint_autoconfig"
16
+ require "svix/api_internal/destination_autoconfig"
8
17
  require "svix/api_internal/message_pollerv2"
9
18
 
10
19
  module Svix
@@ -12,7 +21,8 @@ module Svix
12
21
  def initialize(token, sink_in)
13
22
  content = AutoConfig.decode_token!(token)
14
23
  @app_id = content.fetch("app_id")
15
- @sink_id = content.fetch("endpoint_id")
24
+ @sink_id = content["endpoint_id"]
25
+ @autoconfig_id = content["autoconfig_id"]
16
26
  @sink_in = sink_in
17
27
  @client = SvixHttpClient.new(
18
28
  content.fetch("token_plaintext"),
@@ -21,17 +31,28 @@ module Svix
21
31
  end
22
32
 
23
33
  def subscribe
24
- poller = AutoConfigSinkTypeConfig::Poller.new(@sink_in.serialize)
25
- subscribe_in = SubscribeIn.new(
26
- "sink" => AutoConfigSinkType.new("config" => poller)
27
- )
28
- EndpointAutoConfig.new(@client).update(@app_id, @sink_id, subscribe_in)
34
+ if @autoconfig_id
35
+ destination = DestinationAutoconfig.new(@client).subscribe(
36
+ @app_id,
37
+ @autoconfig_id,
38
+ sink_in_common_to_polling_destination(@sink_in)
39
+ )
40
+ @sink_id = destination.id
41
+ destination
42
+ else
43
+ poller = AutoConfigSinkTypeConfig::Poller.deserialize(@sink_in.serialize)
44
+ subscribe_in = SubscribeIn.new(
45
+ "sink" => AutoConfigSinkType.new("config" => poller)
46
+ )
47
+ endpoint = EndpointAutoConfigDeprecated.new(@client).update(@app_id, @sink_id, subscribe_in)
48
+ destination_out_from_v1_endpoint(endpoint)
49
+ end
29
50
  end
30
51
 
31
52
  def receive(consumer_id, options = {})
32
53
  MessagePollerv2.new(@client).consumer_poll(
33
54
  @app_id,
34
- @sink_id,
55
+ sink_id,
35
56
  consumer_id,
36
57
  options
37
58
  )
@@ -40,11 +61,51 @@ module Svix
40
61
  def commit(consumer_id, offset, options = {})
41
62
  MessagePollerv2.new(@client).consumer_commit(
42
63
  @app_id,
43
- @sink_id,
64
+ sink_id,
44
65
  consumer_id,
45
66
  PollerV2CommitIn.new("offset" => offset),
46
67
  options
47
68
  )
48
69
  end
70
+
71
+ private
72
+
73
+ def sink_id
74
+ return @sink_id if @sink_id
75
+
76
+ # Get the sink id from the autoconfig id (v2)
77
+ dest_id = EndpointAutoconfig.new(@client).get(@app_id, @autoconfig_id).dest_id
78
+ raise "autoconfig subscription is pending. Have you called subscribe()?" if dest_id.nil? || dest_id.empty?
79
+
80
+ dest_id
81
+ end
82
+
83
+ def destination_out_from_v1_endpoint(endpoint)
84
+ DestinationOut.new(
85
+ "id" => endpoint.id,
86
+ "uid" => endpoint.uid,
87
+ "status" => endpoint.disabled ? DestinationStatus::DISABLED : DestinationStatus::ENABLED,
88
+ "current_iterator" => "",
89
+ "created_at" => endpoint.created_at,
90
+ "updated_at" => endpoint.updated_at,
91
+ "batch_size" => 0,
92
+ "max_wait_secs" => 0,
93
+ "event_types" => endpoint.event_types,
94
+ "channels" => endpoint.channels,
95
+ "metadata" => endpoint.metadata,
96
+ "config" => DestinationOutConfig::PollingEndpoint.new
97
+ )
98
+ end
99
+
100
+ def sink_in_common_to_polling_destination(sink)
101
+ attrs = {
102
+ "config" => DestinationInConfig::PollingEndpoint.new
103
+ }
104
+ attrs["uid"] = sink.uid unless sink.uid.nil?
105
+ attrs["event_types"] = sink.event_types unless sink.event_types.nil?
106
+ attrs["channels"] = sink.channels unless sink.channels.nil?
107
+ attrs["metadata"] = sink.metadata unless sink.metadata.nil?
108
+ DestinationIn.new(attrs)
109
+ end
49
110
  end
50
111
  end
@@ -33,14 +33,14 @@ module Svix
33
33
 
34
34
  def serialize
35
35
  out = Hash.new
36
- out["clientId"] = Svix::serialize_primitive(@client_id) if @client_id
36
+ out["clientId"] = Svix::serialize_primitive(@client_id) unless @client_id.nil?
37
37
  out
38
38
  end
39
39
 
40
40
  # Serializes the object to a json string
41
41
  # @return String
42
- def to_json
43
- JSON.dump(serialize)
42
+ def to_json(*args)
43
+ serialize.to_json(*args)
44
44
  end
45
45
  end
46
46
  end
@@ -36,8 +36,8 @@ module Svix
36
36
 
37
37
  # Serializes the object to a json string
38
38
  # @return String
39
- def to_json
40
- JSON.dump(serialize)
39
+ def to_json(*args)
40
+ serialize.to_json(*args)
41
41
  end
42
42
  end
43
43
  end
@@ -43,17 +43,17 @@ module Svix
43
43
 
44
44
  def serialize
45
45
  out = Hash.new
46
- out["id"] = Svix::serialize_primitive(@id) if @id
47
- out["status"] = Svix::serialize_schema_ref(@status) if @status
48
- out["task"] = Svix::serialize_schema_ref(@task) if @task
49
- out["updatedAt"] = Svix::serialize_primitive(@updated_at) if @updated_at
46
+ out["id"] = Svix::serialize_primitive(@id) unless @id.nil?
47
+ out["status"] = Svix::serialize_schema_ref(@status) unless @status.nil?
48
+ out["task"] = Svix::serialize_schema_ref(@task) unless @task.nil?
49
+ out["updatedAt"] = Svix::serialize_primitive(@updated_at) unless @updated_at.nil?
50
50
  out
51
51
  end
52
52
 
53
53
  # Serializes the object to a json string
54
54
  # @return String
55
- def to_json
56
- JSON.dump(serialize)
55
+ def to_json(*args)
56
+ serialize.to_json(*args)
57
57
  end
58
58
  end
59
59
  end
@@ -33,14 +33,14 @@ module Svix
33
33
 
34
34
  def serialize
35
35
  out = Hash.new
36
- out["secret"] = Svix::serialize_primitive(@secret) if @secret
36
+ out["secret"] = Svix::serialize_primitive(@secret) unless @secret.nil?
37
37
  out
38
38
  end
39
39
 
40
40
  # Serializes the object to a json string
41
41
  # @return String
42
- def to_json
43
- JSON.dump(serialize)
42
+ def to_json(*args)
43
+ serialize.to_json(*args)
44
44
  end
45
45
  end
46
46
  end
@@ -36,8 +36,8 @@ module Svix
36
36
 
37
37
  # Serializes the object to a json string
38
38
  # @return String
39
- def to_json
40
- JSON.dump(serialize)
39
+ def to_json(*args)
40
+ serialize.to_json(*args)
41
41
  end
42
42
  end
43
43
  end
@@ -43,19 +43,19 @@ module Svix
43
43
 
44
44
  def serialize
45
45
  out = Hash.new
46
- out["token"] = Svix::serialize_primitive(@token) if @token
47
- out["id"] = Svix::serialize_primitive(@id) if @id
48
- out["name"] = Svix::serialize_primitive(@name) if @name
49
- out["createdAt"] = Svix::serialize_primitive(@created_at) if @created_at
50
- out["expiresAt"] = Svix::serialize_primitive(@expires_at) if @expires_at
51
- out["scopes"] = Svix::serialize_primitive(@scopes) if @scopes
46
+ out["token"] = Svix::serialize_primitive(@token) unless @token.nil?
47
+ out["id"] = Svix::serialize_primitive(@id) unless @id.nil?
48
+ out["name"] = Svix::serialize_primitive(@name) unless @name.nil?
49
+ out["createdAt"] = Svix::serialize_primitive(@created_at) unless @created_at.nil?
50
+ out["expiresAt"] = Svix::serialize_primitive(@expires_at) unless @expires_at.nil?
51
+ out["scopes"] = Svix::serialize_primitive(@scopes) unless @scopes.nil?
52
52
  out
53
53
  end
54
54
 
55
55
  # Serializes the object to a json string
56
56
  # @return String
57
- def to_json
58
- JSON.dump(serialize)
57
+ def to_json(*args)
58
+ serialize.to_json(*args)
59
59
  end
60
60
  end
61
61
  end
@@ -74,19 +74,19 @@ module Svix
74
74
 
75
75
  def serialize
76
76
  out = Hash.new
77
- out["application"] = Svix::serialize_schema_ref(@application) if @application
78
- out["readOnly"] = Svix::serialize_primitive(@read_only) if @read_only
79
- out["capabilities"] = @capabilities.map { |v| v.serialize } if @capabilities
80
- out["featureFlags"] = Svix::serialize_primitive(@feature_flags) if @feature_flags
81
- out["expiry"] = Svix::serialize_primitive(@expiry) if @expiry
82
- out["sessionId"] = Svix::serialize_primitive(@session_id) if @session_id
77
+ out["application"] = Svix::serialize_schema_ref(@application) unless @application.nil?
78
+ out["readOnly"] = Svix::serialize_primitive(@read_only) unless @read_only.nil?
79
+ out["capabilities"] = @capabilities.map { |v| v.serialize } unless @capabilities.nil?
80
+ out["featureFlags"] = Svix::serialize_primitive(@feature_flags) unless @feature_flags.nil?
81
+ out["expiry"] = Svix::serialize_primitive(@expiry) unless @expiry.nil?
82
+ out["sessionId"] = Svix::serialize_primitive(@session_id) unless @session_id.nil?
83
83
  out
84
84
  end
85
85
 
86
86
  # Serializes the object to a json string
87
87
  # @return String
88
- def to_json
89
- JSON.dump(serialize)
88
+ def to_json(*args)
89
+ serialize.to_json(*args)
90
90
  end
91
91
  end
92
92
  end
@@ -35,15 +35,15 @@ module Svix
35
35
 
36
36
  def serialize
37
37
  out = Hash.new
38
- out["url"] = Svix::serialize_primitive(@url) if @url
39
- out["token"] = Svix::serialize_primitive(@token) if @token
38
+ out["url"] = Svix::serialize_primitive(@url) unless @url.nil?
39
+ out["token"] = Svix::serialize_primitive(@token) unless @token.nil?
40
40
  out
41
41
  end
42
42
 
43
43
  # Serializes the object to a json string
44
44
  # @return String
45
- def to_json
46
- JSON.dump(serialize)
45
+ def to_json(*args)
46
+ serialize.to_json(*args)
47
47
  end
48
48
  end
49
49
  end