trycourier 5.0.0 → 6.1.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 (103) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +24 -0
  3. data/README.md +1 -1
  4. data/lib/courier/internal/type/union.rb +7 -7
  5. data/lib/courier/models/apn.rb +19 -0
  6. data/lib/courier/models/automation_run_list_item.rb +57 -0
  7. data/lib/courier/models/automation_run_list_response.rb +25 -0
  8. data/lib/courier/models/automation_run_step.rb +64 -0
  9. data/lib/courier/models/automation_run_steps_response.rb +17 -0
  10. data/lib/courier/models/automations/run_list_params.rb +71 -0
  11. data/lib/courier/models/automations/run_list_steps_params.rb +22 -0
  12. data/lib/courier/models/create_journey_request.rb +2 -2
  13. data/lib/courier/models/expo.rb +1 -0
  14. data/lib/courier/models/journey_audience_trigger_node.rb +77 -0
  15. data/lib/courier/models/journey_node.rb +8 -2
  16. data/lib/courier/models/journey_response.rb +2 -2
  17. data/lib/courier/models/journey_run.rb +66 -0
  18. data/lib/courier/models/journey_run_list_item.rb +50 -0
  19. data/lib/courier/models/journey_run_list_response.rb +33 -0
  20. data/lib/courier/models/journey_run_response.rb +22 -0
  21. data/lib/courier/models/journey_run_step.rb +65 -0
  22. data/lib/courier/models/journey_run_steps_response.rb +17 -0
  23. data/lib/courier/models/journey_segment_trigger_node.rb +5 -1
  24. data/lib/courier/models/journey_webhook_trigger_node.rb +85 -0
  25. data/lib/courier/models/journeys/run_list_params.rb +71 -0
  26. data/lib/courier/models/journeys/run_list_steps_params.rb +22 -0
  27. data/lib/courier/models/journeys/run_retrieve_params.rb +22 -0
  28. data/lib/courier/models/multiple_tokens.rb +26 -3
  29. data/lib/courier/models/user_profile.rb +8 -4
  30. data/lib/courier/models/users/topic_preference.rb +21 -1
  31. data/lib/courier/models.rb +26 -2
  32. data/lib/courier/resources/automations/runs.rb +80 -0
  33. data/lib/courier/resources/automations.rb +6 -0
  34. data/lib/courier/resources/journeys/runs.rb +104 -0
  35. data/lib/courier/resources/journeys.rb +8 -2
  36. data/lib/courier/resources/notifications.rb +0 -22
  37. data/lib/courier/version.rb +1 -1
  38. data/lib/courier.rb +20 -1
  39. data/rbi/courier/models/apn.rbi +18 -0
  40. data/rbi/courier/models/automation_run_list_item.rbi +87 -0
  41. data/rbi/courier/models/automation_run_list_response.rbi +47 -0
  42. data/rbi/courier/models/automation_run_step.rbi +96 -0
  43. data/rbi/courier/models/automation_run_steps_response.rbi +28 -0
  44. data/rbi/courier/models/automations/run_list_params.rbi +114 -0
  45. data/rbi/courier/models/automations/run_list_steps_params.rbi +40 -0
  46. data/rbi/courier/models/create_journey_request.rbi +6 -0
  47. data/rbi/courier/models/expo.rbi +1 -0
  48. data/rbi/courier/models/journey_audience_trigger_node.rbi +162 -0
  49. data/rbi/courier/models/journey_node.rbi +2 -0
  50. data/rbi/courier/models/journey_response.rbi +2 -0
  51. data/rbi/courier/models/journey_run.rbi +97 -0
  52. data/rbi/courier/models/journey_run_list_item.rbi +79 -0
  53. data/rbi/courier/models/journey_run_list_response.rbi +58 -0
  54. data/rbi/courier/models/journey_run_response.rbi +33 -0
  55. data/rbi/courier/models/journey_run_step.rbi +97 -0
  56. data/rbi/courier/models/journey_run_steps_response.rbi +28 -0
  57. data/rbi/courier/models/journey_segment_trigger_node.rbi +9 -1
  58. data/rbi/courier/models/journey_webhook_trigger_node.rbi +174 -0
  59. data/rbi/courier/models/journeys/run_list_params.rbi +111 -0
  60. data/rbi/courier/models/journeys/run_list_steps_params.rbi +40 -0
  61. data/rbi/courier/models/journeys/run_retrieve_params.rbi +40 -0
  62. data/rbi/courier/models/multiple_tokens.rbi +32 -4
  63. data/rbi/courier/models/user_profile.rbi +14 -3
  64. data/rbi/courier/models/users/topic_preference.rbi +33 -3
  65. data/rbi/courier/models.rbi +26 -2
  66. data/rbi/courier/resources/automations/runs.rbi +69 -0
  67. data/rbi/courier/resources/automations.rbi +5 -0
  68. data/rbi/courier/resources/journeys/runs.rbi +87 -0
  69. data/rbi/courier/resources/journeys.rbi +9 -0
  70. data/rbi/courier/resources/notifications.rbi +0 -16
  71. data/sig/courier/models/apn.rbs +11 -0
  72. data/sig/courier/models/automation_run_list_item.rbs +46 -0
  73. data/sig/courier/models/automation_run_list_response.rbs +24 -0
  74. data/sig/courier/models/automation_run_step.rbs +53 -0
  75. data/sig/courier/models/automation_run_steps_response.rbs +14 -0
  76. data/sig/courier/models/automations/run_list_params.rbs +65 -0
  77. data/sig/courier/models/automations/run_list_steps_params.rbs +22 -0
  78. data/sig/courier/models/journey_audience_trigger_node.rbs +66 -0
  79. data/sig/courier/models/journey_node.rbs +2 -0
  80. data/sig/courier/models/journey_run.rbs +53 -0
  81. data/sig/courier/models/journey_run_list_item.rbs +46 -0
  82. data/sig/courier/models/journey_run_list_response.rbs +34 -0
  83. data/sig/courier/models/journey_run_response.rbs +13 -0
  84. data/sig/courier/models/journey_run_step.rbs +53 -0
  85. data/sig/courier/models/journey_run_steps_response.rbs +14 -0
  86. data/sig/courier/models/journey_segment_trigger_node.rbs +2 -1
  87. data/sig/courier/models/journey_webhook_trigger_node.rbs +73 -0
  88. data/sig/courier/models/journeys/run_list_params.rbs +65 -0
  89. data/sig/courier/models/journeys/run_list_steps_params.rbs +25 -0
  90. data/sig/courier/models/journeys/run_retrieve_params.rbs +25 -0
  91. data/sig/courier/models/multiple_tokens.rbs +14 -4
  92. data/sig/courier/models/user_profile.rbs +4 -4
  93. data/sig/courier/models/users/topic_preference.rbs +17 -3
  94. data/sig/courier/models.rbs +26 -2
  95. data/sig/courier/resources/automations/runs.rbs +24 -0
  96. data/sig/courier/resources/automations.rbs +2 -0
  97. data/sig/courier/resources/journeys/runs.rbs +29 -0
  98. data/sig/courier/resources/journeys.rbs +2 -0
  99. data/sig/courier/resources/notifications.rbs +0 -5
  100. metadata +62 -5
  101. data/lib/courier/models/notification_duplicate_params.rb +0 -20
  102. data/rbi/courier/models/notification_duplicate_params.rbi +0 -38
  103. data/sig/courier/models/notification_duplicate_params.rbs +0 -20
@@ -0,0 +1,104 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Courier
4
+ module Resources
5
+ class Journeys
6
+ # Build, version, publish, invoke, and cancel multi-step notification workflows,
7
+ # along with the templates scoped to them.
8
+ class Runs
9
+ # Fetch one Journey run by id. Returns `404` for an unknown run, a run belonging
10
+ # to another workspace, a run past the 95-day retention window, or an Automation
11
+ # run id — the same body in every case, so the response never reveals whether a
12
+ # run exists elsewhere.
13
+ #
14
+ # @overload retrieve(run_id, request_options: {})
15
+ #
16
+ # @param run_id [String] A unique identifier representing the Journey run.
17
+ #
18
+ # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil]
19
+ #
20
+ # @return [Courier::Models::JourneyRunResponse]
21
+ #
22
+ # @see Courier::Models::Journeys::RunRetrieveParams
23
+ def retrieve(run_id, params = {})
24
+ @client.request(
25
+ method: :get,
26
+ path: ["journeys/runs/%1$s", run_id],
27
+ model: Courier::JourneyRunResponse,
28
+ options: params[:request_options]
29
+ )
30
+ end
31
+
32
+ # Some parameter documentations has been truncated, see
33
+ # {Courier::Models::Journeys::RunListParams} for more details.
34
+ #
35
+ # List runs of the workspace's Journeys, newest first, filtered by status,
36
+ # Journey, or date range and paged by cursor. Runs of v2 Automations are listed by
37
+ # `GET /automations/runs` instead — the two surfaces never return each other's
38
+ # runs. Runs are retained for 95 days.
39
+ #
40
+ # @overload list(cursor: nil, end_date: nil, limit: nil, start_date: nil, status: nil, template_id: nil, request_options: {})
41
+ #
42
+ # @param cursor [String] A cursor token for pagination. Use the `next_cursor` from the previous response
43
+ #
44
+ # @param end_date [String] An inclusive upper bound on `created_at`, in the same format as `start_date`.
45
+ #
46
+ # @param limit [String] The number of runs to return per page, between `1` and `50`. Defaults to `20`. V
47
+ #
48
+ # @param start_date [String] An inclusive lower bound on `created_at`, as an ISO 8601 date or timestamp (e.g.
49
+ #
50
+ # @param status [String] A comma-separated list of run statuses to filter on, e.g. `PROCESSED,ERROR`.
51
+ #
52
+ # @param template_id [String] A comma-separated list of Journey ids to filter on.
53
+ #
54
+ # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil]
55
+ #
56
+ # @return [Courier::Models::JourneyRunListResponse]
57
+ #
58
+ # @see Courier::Models::Journeys::RunListParams
59
+ def list(params = {})
60
+ parsed, options = Courier::Journeys::RunListParams.dump_request(params)
61
+ query = Courier::Internal::Util.encode_query_params(parsed)
62
+ @client.request(
63
+ method: :get,
64
+ path: "journeys/runs",
65
+ query: query,
66
+ model: Courier::JourneyRunListResponse,
67
+ options: options
68
+ )
69
+ end
70
+
71
+ # List the per-node state of one Journey run, in full — this endpoint is not
72
+ # paginated. Each step's `node_id` is the id of the node in the published Journey,
73
+ # so a step maps directly onto the Journey graph. `message_id` is present on send
74
+ # steps that produced a message; follow it to `GET /messages/{message_id}` for
75
+ # delivery status.
76
+ #
77
+ # @overload list_steps(run_id, request_options: {})
78
+ #
79
+ # @param run_id [String] A unique identifier representing the Journey run.
80
+ #
81
+ # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil]
82
+ #
83
+ # @return [Courier::Models::JourneyRunStepsResponse]
84
+ #
85
+ # @see Courier::Models::Journeys::RunListStepsParams
86
+ def list_steps(run_id, params = {})
87
+ @client.request(
88
+ method: :get,
89
+ path: ["journeys/runs/%1$s/steps", run_id],
90
+ model: Courier::JourneyRunStepsResponse,
91
+ options: params[:request_options]
92
+ )
93
+ end
94
+
95
+ # @api private
96
+ #
97
+ # @param client [Courier::Client]
98
+ def initialize(client:)
99
+ @client = client
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
@@ -10,6 +10,11 @@ module Courier
10
10
  # @return [Courier::Resources::Journeys::Templates]
11
11
  attr_reader :templates
12
12
 
13
+ # Build, version, publish, invoke, and cancel multi-step notification workflows,
14
+ # along with the templates scoped to them.
15
+ # @return [Courier::Resources::Journeys::Runs]
16
+ attr_reader :runs
17
+
13
18
  # Some parameter documentations has been truncated, see
14
19
  # {Courier::Models::JourneyCreateParams} for more details.
15
20
  #
@@ -20,7 +25,7 @@ module Courier
20
25
  #
21
26
  # @param name [String] Body param
22
27
  #
23
- # @param nodes [Array<Courier::Models::JourneyAPIInvokeTriggerNode, Courier::Models::JourneySegmentTriggerNode, Courier::Models::JourneySendNode, Courier::Models::JourneyDelayDurationNode, Courier::Models::JourneyDelayUntilNode, Courier::Models::JourneyFetchGetDeleteNode, Courier::Models::JourneyFetchPostPutNode, Courier::Models::JourneyAINode, Courier::Models::JourneyThrottleStaticNode, Courier::Models::JourneyThrottleDynamicNode, Courier::Models::JourneyNode::JourneyBatchNode, Courier::Models::JourneyNode::JourneyAddToDigestNode, Courier::Models::JourneyExitNode, Courier::Models::JourneyNode::JourneyBranchNode>] Body param
28
+ # @param nodes [Array<Courier::Models::JourneyAPIInvokeTriggerNode, Courier::Models::JourneySegmentTriggerNode, Courier::Models::JourneyAudienceTriggerNode, Courier::Models::JourneyWebhookTriggerNode, Courier::Models::JourneySendNode, Courier::Models::JourneyDelayDurationNode, Courier::Models::JourneyDelayUntilNode, Courier::Models::JourneyFetchGetDeleteNode, Courier::Models::JourneyFetchPostPutNode, Courier::Models::JourneyAINode, Courier::Models::JourneyThrottleStaticNode, Courier::Models::JourneyThrottleDynamicNode, Courier::Models::JourneyNode::JourneyBatchNode, Courier::Models::JourneyNode::JourneyAddToDigestNode, Courier::Models::JourneyExitNode, Courier::Models::JourneyNode::JourneyBranchNode>] Body param
24
29
  #
25
30
  # @param enabled [Boolean] Body param
26
31
  #
@@ -263,7 +268,7 @@ module Courier
263
268
  #
264
269
  # @param name [String]
265
270
  #
266
- # @param nodes [Array<Courier::Models::JourneyAPIInvokeTriggerNode, Courier::Models::JourneySegmentTriggerNode, Courier::Models::JourneySendNode, Courier::Models::JourneyDelayDurationNode, Courier::Models::JourneyDelayUntilNode, Courier::Models::JourneyFetchGetDeleteNode, Courier::Models::JourneyFetchPostPutNode, Courier::Models::JourneyAINode, Courier::Models::JourneyThrottleStaticNode, Courier::Models::JourneyThrottleDynamicNode, Courier::Models::JourneyNode::JourneyBatchNode, Courier::Models::JourneyNode::JourneyAddToDigestNode, Courier::Models::JourneyExitNode, Courier::Models::JourneyNode::JourneyBranchNode>]
271
+ # @param nodes [Array<Courier::Models::JourneyAPIInvokeTriggerNode, Courier::Models::JourneySegmentTriggerNode, Courier::Models::JourneyAudienceTriggerNode, Courier::Models::JourneyWebhookTriggerNode, Courier::Models::JourneySendNode, Courier::Models::JourneyDelayDurationNode, Courier::Models::JourneyDelayUntilNode, Courier::Models::JourneyFetchGetDeleteNode, Courier::Models::JourneyFetchPostPutNode, Courier::Models::JourneyAINode, Courier::Models::JourneyThrottleStaticNode, Courier::Models::JourneyThrottleDynamicNode, Courier::Models::JourneyNode::JourneyBatchNode, Courier::Models::JourneyNode::JourneyAddToDigestNode, Courier::Models::JourneyExitNode, Courier::Models::JourneyNode::JourneyBranchNode>]
267
272
  #
268
273
  # @param enabled [Boolean]
269
274
  #
@@ -291,6 +296,7 @@ module Courier
291
296
  def initialize(client:)
292
297
  @client = client
293
298
  @templates = Courier::Resources::Journeys::Templates.new(client: client)
299
+ @runs = Courier::Resources::Journeys::Runs.new(client: client)
294
300
  end
295
301
  end
296
302
  end
@@ -123,28 +123,6 @@ module Courier
123
123
  )
124
124
  end
125
125
 
126
- # Copies a notification template within the same workspace and environment,
127
- # appending " COPY" to the title. The copy is standalone and independently
128
- # editable.
129
- #
130
- # @overload duplicate(id, request_options: {})
131
- #
132
- # @param id [String] Template ID (nt\_ prefix).
133
- #
134
- # @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}, nil]
135
- #
136
- # @return [Courier::Models::NotificationTemplateResponse]
137
- #
138
- # @see Courier::Models::NotificationDuplicateParams
139
- def duplicate(id, params = {})
140
- @client.request(
141
- method: :post,
142
- path: ["notifications/%1$s/duplicate", id],
143
- model: Courier::NotificationTemplateResponse,
144
- options: params[:request_options]
145
- )
146
- end
147
-
148
126
  # Returns a notification template's published versions, most recent first, for
149
127
  # comparison or rollback. Paged.
150
128
  #
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Courier
4
- VERSION = "5.0.0"
4
+ VERSION = "6.1.0"
5
5
  end
data/lib/courier.rb CHANGED
@@ -91,6 +91,7 @@ require_relative "courier/models/workspace_preference_topic_replace_request"
91
91
  require_relative "courier/models/airship_profile"
92
92
  require_relative "courier/models/airship_profile_audience"
93
93
  require_relative "courier/models/alignment"
94
+ require_relative "courier/models/apn"
94
95
  require_relative "courier/models/associated_notification_list_response"
95
96
  require_relative "courier/models/audience"
96
97
  require_relative "courier/models/audience_delete_params"
@@ -112,8 +113,14 @@ require_relative "courier/models/auth_issue_token_params"
112
113
  require_relative "courier/models/auth_issue_token_response"
113
114
  require_relative "courier/models/automation_invoke_response"
114
115
  require_relative "courier/models/automation_list_params"
116
+ require_relative "courier/models/automation_run_list_item"
117
+ require_relative "courier/models/automation_run_list_response"
118
+ require_relative "courier/models/automation_run_step"
119
+ require_relative "courier/models/automation_run_steps_response"
115
120
  require_relative "courier/models/automations/invoke_invoke_ad_hoc_params"
116
121
  require_relative "courier/models/automations/invoke_invoke_by_template_params"
122
+ require_relative "courier/models/automations/run_list_params"
123
+ require_relative "courier/models/automations/run_list_steps_params"
117
124
  require_relative "courier/models/automation_template"
118
125
  require_relative "courier/models/automation_template_list_response"
119
126
  require_relative "courier/models/aws_sns"
@@ -193,6 +200,7 @@ require_relative "courier/models/journey"
193
200
  require_relative "courier/models/journey_ai_node"
194
201
  require_relative "courier/models/journey_api_invoke_trigger_node"
195
202
  require_relative "courier/models/journey_archive_params"
203
+ require_relative "courier/models/journey_audience_trigger_node"
196
204
  require_relative "courier/models/journey_cancel_params"
197
205
  require_relative "courier/models/journey_condition_atom"
198
206
  require_relative "courier/models/journey_condition_group"
@@ -215,6 +223,15 @@ require_relative "courier/models/journey_publish_params"
215
223
  require_relative "courier/models/journey_replace_params"
216
224
  require_relative "courier/models/journey_response"
217
225
  require_relative "courier/models/journey_retrieve_params"
226
+ require_relative "courier/models/journey_run"
227
+ require_relative "courier/models/journey_run_list_item"
228
+ require_relative "courier/models/journey_run_list_response"
229
+ require_relative "courier/models/journey_run_response"
230
+ require_relative "courier/models/journey_run_step"
231
+ require_relative "courier/models/journey_run_steps_response"
232
+ require_relative "courier/models/journeys/run_list_params"
233
+ require_relative "courier/models/journeys/run_list_steps_params"
234
+ require_relative "courier/models/journeys/run_retrieve_params"
218
235
  require_relative "courier/models/journeys/template_archive_params"
219
236
  require_relative "courier/models/journeys/template_create_params"
220
237
  require_relative "courier/models/journeys/template_list_params"
@@ -237,6 +254,7 @@ require_relative "courier/models/journey_throttle_dynamic_node"
237
254
  require_relative "courier/models/journey_throttle_static_node"
238
255
  require_relative "courier/models/journey_version_item"
239
256
  require_relative "courier/models/journey_versions_list_response"
257
+ require_relative "courier/models/journey_webhook_trigger_node"
240
258
  require_relative "courier/models/list_delete_params"
241
259
  require_relative "courier/models/list_filter"
242
260
  require_relative "courier/models/list_list_params"
@@ -279,7 +297,6 @@ require_relative "courier/models/notification_archive_params"
279
297
  require_relative "courier/models/notification_content_get_response"
280
298
  require_relative "courier/models/notification_content_mutation_response"
281
299
  require_relative "courier/models/notification_create_params"
282
- require_relative "courier/models/notification_duplicate_params"
283
300
  require_relative "courier/models/notification_get_content"
284
301
  require_relative "courier/models/notification_list_params"
285
302
  require_relative "courier/models/notification_list_response"
@@ -451,6 +468,7 @@ require_relative "courier/resources/audit_events"
451
468
  require_relative "courier/resources/auth"
452
469
  require_relative "courier/resources/automations"
453
470
  require_relative "courier/resources/automations/invoke"
471
+ require_relative "courier/resources/automations/runs"
454
472
  require_relative "courier/resources/brands"
455
473
  require_relative "courier/resources/broadcasts"
456
474
  require_relative "courier/resources/bulk"
@@ -458,6 +476,7 @@ require_relative "courier/resources/digests"
458
476
  require_relative "courier/resources/digests/schedules"
459
477
  require_relative "courier/resources/inbound"
460
478
  require_relative "courier/resources/journeys"
479
+ require_relative "courier/resources/journeys/runs"
461
480
  require_relative "courier/resources/journeys/templates"
462
481
  require_relative "courier/resources/lists"
463
482
  require_relative "courier/resources/lists/subscriptions"
@@ -0,0 +1,18 @@
1
+ # typed: strong
2
+
3
+ module Courier
4
+ module Models
5
+ # Apple Push Notification device tokens. Supply either a single `token` or a
6
+ # `tokens` value. A bare string is rejected by the provider — the token must be
7
+ # wrapped in this object.
8
+ module Apn
9
+ extend Courier::Internal::Type::Union
10
+
11
+ Variants = T.type_alias { T.any(Courier::Token, Courier::MultipleTokens) }
12
+
13
+ sig { override.returns(T::Array[Courier::Apn::Variants]) }
14
+ def self.variants
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,87 @@
1
+ # typed: strong
2
+
3
+ module Courier
4
+ module Models
5
+ class AutomationRunListItem < Courier::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Courier::AutomationRunListItem, Courier::Internal::AnyHash)
9
+ end
10
+
11
+ # A unique identifier representing the run.
12
+ sig { returns(String) }
13
+ attr_accessor :run_id
14
+
15
+ # Internal provenance strings describing what started the run, e.g.
16
+ # `invoke/<template_id>` or `segment/page/Pricing Page`. Diagnostic only — the
17
+ # format is unstable and should not be parsed.
18
+ sig { returns(T::Array[String]) }
19
+ attr_accessor :source
20
+
21
+ # When the run started, as an ISO 8601 timestamp.
22
+ sig { returns(T.nilable(String)) }
23
+ attr_reader :created_at
24
+
25
+ sig { params(created_at: String).void }
26
+ attr_writer :created_at
27
+
28
+ # The state of the run: `PROCESSING`, `PROCESSED`, `WAITING`, `CANCELED`, `ERROR`,
29
+ # `THROTTLED`, or `NOT PROCESSED`. Not an enum — new values have been added
30
+ # before.
31
+ sig { returns(T.nilable(String)) }
32
+ attr_reader :status
33
+
34
+ sig { params(status: String).void }
35
+ attr_writer :status
36
+
37
+ # The id of the Automation Template this run belongs to.
38
+ sig { returns(T.nilable(String)) }
39
+ attr_reader :template_id
40
+
41
+ sig { params(template_id: String).void }
42
+ attr_writer :template_id
43
+
44
+ # An Automation run as it appears in a list response.
45
+ sig do
46
+ params(
47
+ run_id: String,
48
+ source: T::Array[String],
49
+ created_at: String,
50
+ status: String,
51
+ template_id: String
52
+ ).returns(T.attached_class)
53
+ end
54
+ def self.new(
55
+ # A unique identifier representing the run.
56
+ run_id:,
57
+ # Internal provenance strings describing what started the run, e.g.
58
+ # `invoke/<template_id>` or `segment/page/Pricing Page`. Diagnostic only — the
59
+ # format is unstable and should not be parsed.
60
+ source:,
61
+ # When the run started, as an ISO 8601 timestamp.
62
+ created_at: nil,
63
+ # The state of the run: `PROCESSING`, `PROCESSED`, `WAITING`, `CANCELED`, `ERROR`,
64
+ # `THROTTLED`, or `NOT PROCESSED`. Not an enum — new values have been added
65
+ # before.
66
+ status: nil,
67
+ # The id of the Automation Template this run belongs to.
68
+ template_id: nil
69
+ )
70
+ end
71
+
72
+ sig do
73
+ override.returns(
74
+ {
75
+ run_id: String,
76
+ source: T::Array[String],
77
+ created_at: String,
78
+ status: String,
79
+ template_id: String
80
+ }
81
+ )
82
+ end
83
+ def to_hash
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,47 @@
1
+ # typed: strong
2
+
3
+ module Courier
4
+ module Models
5
+ class AutomationRunListResponse < Courier::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Courier::AutomationRunListResponse, Courier::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(T::Array[Courier::AutomationRunListItem]) }
12
+ attr_accessor :runs
13
+
14
+ # Pass back as `cursor` to fetch the next page. Absent on the last page.
15
+ sig { returns(T.nilable(String)) }
16
+ attr_reader :next_cursor
17
+
18
+ sig { params(next_cursor: String).void }
19
+ attr_writer :next_cursor
20
+
21
+ # A page of Automation runs.
22
+ sig do
23
+ params(
24
+ runs: T::Array[Courier::AutomationRunListItem::OrHash],
25
+ next_cursor: String
26
+ ).returns(T.attached_class)
27
+ end
28
+ def self.new(
29
+ runs:,
30
+ # Pass back as `cursor` to fetch the next page. Absent on the last page.
31
+ next_cursor: nil
32
+ )
33
+ end
34
+
35
+ sig do
36
+ override.returns(
37
+ {
38
+ runs: T::Array[Courier::AutomationRunListItem],
39
+ next_cursor: String
40
+ }
41
+ )
42
+ end
43
+ def to_hash
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,96 @@
1
+ # typed: strong
2
+
3
+ module Courier
4
+ module Models
5
+ class AutomationRunStep < Courier::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Courier::AutomationRunStep, Courier::Internal::AnyHash)
9
+ end
10
+
11
+ # The kind of step that ran, e.g. `send`, `delay`, or `update-profile`.
12
+ sig { returns(String) }
13
+ attr_accessor :action
14
+
15
+ # The state of the step: the seven run statuses, plus `SKIPPED` and `COMPUTING`.
16
+ # Not an enum — new values have been added before.
17
+ sig { returns(String) }
18
+ attr_accessor :status
19
+
20
+ # When the step started, as an ISO 8601 timestamp.
21
+ sig { returns(T.nilable(String)) }
22
+ attr_reader :created_at
23
+
24
+ sig { params(created_at: String).void }
25
+ attr_writer :created_at
26
+
27
+ # The message this step produced, present on send steps. Pass it to
28
+ # `GET /messages/{message_id}` for delivery status. A send to a List or an
29
+ # Audience yields one id for the request, not one per recipient.
30
+ sig { returns(T.nilable(String)) }
31
+ attr_reader :message_id
32
+
33
+ sig { params(message_id: String).void }
34
+ attr_writer :message_id
35
+
36
+ # A unique identifier representing the step.
37
+ sig { returns(T.nilable(String)) }
38
+ attr_reader :step_id
39
+
40
+ sig { params(step_id: String).void }
41
+ attr_writer :step_id
42
+
43
+ # When the step last changed state, as an ISO 8601 timestamp.
44
+ sig { returns(T.nilable(String)) }
45
+ attr_reader :updated_at
46
+
47
+ sig { params(updated_at: String).void }
48
+ attr_writer :updated_at
49
+
50
+ # One executed step of an Automation run.
51
+ sig do
52
+ params(
53
+ action: String,
54
+ status: String,
55
+ created_at: String,
56
+ message_id: String,
57
+ step_id: String,
58
+ updated_at: String
59
+ ).returns(T.attached_class)
60
+ end
61
+ def self.new(
62
+ # The kind of step that ran, e.g. `send`, `delay`, or `update-profile`.
63
+ action:,
64
+ # The state of the step: the seven run statuses, plus `SKIPPED` and `COMPUTING`.
65
+ # Not an enum — new values have been added before.
66
+ status:,
67
+ # When the step started, as an ISO 8601 timestamp.
68
+ created_at: nil,
69
+ # The message this step produced, present on send steps. Pass it to
70
+ # `GET /messages/{message_id}` for delivery status. A send to a List or an
71
+ # Audience yields one id for the request, not one per recipient.
72
+ message_id: nil,
73
+ # A unique identifier representing the step.
74
+ step_id: nil,
75
+ # When the step last changed state, as an ISO 8601 timestamp.
76
+ updated_at: nil
77
+ )
78
+ end
79
+
80
+ sig do
81
+ override.returns(
82
+ {
83
+ action: String,
84
+ status: String,
85
+ created_at: String,
86
+ message_id: String,
87
+ step_id: String,
88
+ updated_at: String
89
+ }
90
+ )
91
+ end
92
+ def to_hash
93
+ end
94
+ end
95
+ end
96
+ end
@@ -0,0 +1,28 @@
1
+ # typed: strong
2
+
3
+ module Courier
4
+ module Models
5
+ class AutomationRunStepsResponse < Courier::Internal::Type::BaseModel
6
+ OrHash =
7
+ T.type_alias do
8
+ T.any(Courier::AutomationRunStepsResponse, Courier::Internal::AnyHash)
9
+ end
10
+
11
+ sig { returns(T::Array[Courier::AutomationRunStep]) }
12
+ attr_accessor :steps
13
+
14
+ # Every step of an Automation run. Not paginated.
15
+ sig do
16
+ params(steps: T::Array[Courier::AutomationRunStep::OrHash]).returns(
17
+ T.attached_class
18
+ )
19
+ end
20
+ def self.new(steps:)
21
+ end
22
+
23
+ sig { override.returns({ steps: T::Array[Courier::AutomationRunStep] }) }
24
+ def to_hash
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,114 @@
1
+ # typed: strong
2
+
3
+ module Courier
4
+ module Models
5
+ module Automations
6
+ class RunListParams < Courier::Internal::Type::BaseModel
7
+ extend Courier::Internal::Type::RequestParameters::Converter
8
+ include Courier::Internal::Type::RequestParameters
9
+
10
+ OrHash =
11
+ T.type_alias do
12
+ T.any(
13
+ Courier::Automations::RunListParams,
14
+ Courier::Internal::AnyHash
15
+ )
16
+ end
17
+
18
+ # A cursor token for pagination. Use the `next_cursor` from the previous response
19
+ # to fetch the next page of results. Treat it as opaque.
20
+ sig { returns(T.nilable(String)) }
21
+ attr_reader :cursor
22
+
23
+ sig { params(cursor: String).void }
24
+ attr_writer :cursor
25
+
26
+ # An inclusive upper bound on `created_at`, in the same format as `start_date`.
27
+ sig { returns(T.nilable(String)) }
28
+ attr_reader :end_date
29
+
30
+ sig { params(end_date: String).void }
31
+ attr_writer :end_date
32
+
33
+ # The number of runs to return per page, between `1` and `50`. Defaults to `20`.
34
+ # Values outside the range are clamped, and a non-numeric value falls back to
35
+ # `20`.
36
+ sig { returns(T.nilable(String)) }
37
+ attr_reader :limit
38
+
39
+ sig { params(limit: String).void }
40
+ attr_writer :limit
41
+
42
+ # An inclusive lower bound on `created_at`, as an ISO 8601 date or timestamp (e.g.
43
+ # `2026-08-18` or `2026-08-18T20:06:36.259Z`). Any other format returns `400`.
44
+ sig { returns(T.nilable(String)) }
45
+ attr_reader :start_date
46
+
47
+ sig { params(start_date: String).void }
48
+ attr_writer :start_date
49
+
50
+ # A comma-separated list of run statuses to filter on, e.g. `PROCESSED,ERROR`.
51
+ sig { returns(T.nilable(String)) }
52
+ attr_reader :status
53
+
54
+ sig { params(status: String).void }
55
+ attr_writer :status
56
+
57
+ # A comma-separated list of Automation Template ids to filter on.
58
+ sig { returns(T.nilable(String)) }
59
+ attr_reader :template_id
60
+
61
+ sig { params(template_id: String).void }
62
+ attr_writer :template_id
63
+
64
+ sig do
65
+ params(
66
+ cursor: String,
67
+ end_date: String,
68
+ limit: String,
69
+ start_date: String,
70
+ status: String,
71
+ template_id: String,
72
+ request_options: Courier::RequestOptions::OrHash
73
+ ).returns(T.attached_class)
74
+ end
75
+ def self.new(
76
+ # A cursor token for pagination. Use the `next_cursor` from the previous response
77
+ # to fetch the next page of results. Treat it as opaque.
78
+ cursor: nil,
79
+ # An inclusive upper bound on `created_at`, in the same format as `start_date`.
80
+ end_date: nil,
81
+ # The number of runs to return per page, between `1` and `50`. Defaults to `20`.
82
+ # Values outside the range are clamped, and a non-numeric value falls back to
83
+ # `20`.
84
+ limit: nil,
85
+ # An inclusive lower bound on `created_at`, as an ISO 8601 date or timestamp (e.g.
86
+ # `2026-08-18` or `2026-08-18T20:06:36.259Z`). Any other format returns `400`.
87
+ start_date: nil,
88
+ # A comma-separated list of run statuses to filter on, e.g. `PROCESSED,ERROR`.
89
+ status: nil,
90
+ # A comma-separated list of Automation Template ids to filter on.
91
+ template_id: nil,
92
+ request_options: {}
93
+ )
94
+ end
95
+
96
+ sig do
97
+ override.returns(
98
+ {
99
+ cursor: String,
100
+ end_date: String,
101
+ limit: String,
102
+ start_date: String,
103
+ status: String,
104
+ template_id: String,
105
+ request_options: Courier::RequestOptions
106
+ }
107
+ )
108
+ end
109
+ def to_hash
110
+ end
111
+ end
112
+ end
113
+ end
114
+ end