Class: Courier::Resources::Notifications
- Inherits:
-
Object
- Object
- Courier::Resources::Notifications
- Defined in:
- lib/courier/resources/notifications.rb,
lib/courier/resources/notifications/checks.rb,
lib/courier/resources/notifications/previews.rb,
lib/courier/resources/notifications/previews/runs.rb,
sig/courier/resources/notifications.rbs,
sig/courier/resources/notifications/checks.rbs,
sig/courier/resources/notifications/previews.rbs,
sig/courier/resources/notifications/previews/runs.rbs
Overview
Create, update, version, publish, and localize notification templates and their content.
Defined Under Namespace
Instance Attribute Summary collapse
-
#checks ⇒ Courier::Resources::Notifications::Checks
readonly
Create, update, version, publish, and localize notification templates and their content.
- #previews ⇒ Courier::Resources::Notifications::Previews readonly
Instance Method Summary collapse
-
#archive(id, request_options: {}) ⇒ nil
Archives a notification template, preventing new sends from referencing it.
-
#create(notification:, state: nil, idempotency_key: nil, x_idempotency_expiration: nil, request_options: {}) ⇒ Courier::Models::NotificationTemplateResponse
Some parameter documentations has been truncated, see Models::NotificationCreateParams for more details.
-
#get_metrics(id, end_: nil, granularity: nil, lookback: nil, start: nil, request_options: {}) ⇒ Courier::Models::NotificationMetricsResponse
Some parameter documentations has been truncated, see Models::NotificationGetMetricsParams for more details.
-
#initialize(client:) ⇒ Notifications
constructor
private
A new instance of Notifications.
-
#list(cursor: nil, event_id: nil, notes: nil, tags: nil, request_options: {}) ⇒ Courier::Models::NotificationListResponse
Some parameter documentations has been truncated, see Models::NotificationListParams for more details.
-
#list_versions(id, cursor: nil, limit: nil, request_options: {}) ⇒ Courier::Models::NotificationTemplateVersionListResponse
Returns a notification template's published versions, most recent first, for comparison or rollback.
-
#publish(id, version: nil, idempotency_key: nil, x_idempotency_expiration: nil, request_options: {}) ⇒ nil
Some parameter documentations has been truncated, see Models::NotificationPublishParams for more details.
-
#put_content(id, content:, state: nil, request_options: {}) ⇒ Courier::Models::NotificationContentMutationResponse
Replaces all Elemental content in a template, overwriting every existing element.
-
#put_element(element_id, id:, type:, channels: nil, data: nil, if_: nil, loop_: nil, ref: nil, state: nil, request_options: {}) ⇒ Courier::Models::NotificationContentMutationResponse
Replaces one Elemental element in a template, addressed by its element id.
-
#put_locale(locale_id, id:, elements:, state: nil, request_options: {}) ⇒ Courier::Models::NotificationContentMutationResponse
Sets locale-specific content overrides for a template.
-
#replace(id, notification:, state: nil, request_options: {}) ⇒ Courier::Models::NotificationTemplateResponse
Some parameter documentations has been truncated, see Models::NotificationReplaceParams for more details.
-
#retrieve(id, version: nil, request_options: {}) ⇒ Courier::Models::NotificationTemplateResponse
Some parameter documentations has been truncated, see Models::NotificationRetrieveParams for more details.
-
#retrieve_content(id, version: nil, request_options: {}) ⇒ Courier::Models::NotificationContentGetResponse, Courier::Models::NotificationGetContent
Some parameter documentations has been truncated, see Models::NotificationRetrieveContentParams for more details.
Constructor Details
#initialize(client:) ⇒ Notifications
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Notifications.
425 426 427 428 429 |
# File 'lib/courier/resources/notifications.rb', line 425 def initialize(client:) @client = client @checks = Courier::Resources::Notifications::Checks.new(client: client) @previews = Courier::Resources::Notifications::Previews.new(client: client) end |
Instance Attribute Details
#checks ⇒ Courier::Resources::Notifications::Checks (readonly)
Create, update, version, publish, and localize notification templates and their content.
11 12 13 |
# File 'lib/courier/resources/notifications.rb', line 11 def checks @checks end |
#previews ⇒ Courier::Resources::Notifications::Previews (readonly)
14 15 16 |
# File 'lib/courier/resources/notifications.rb', line 14 def previews @previews end |
Instance Method Details
#archive(id, request_options: {}) ⇒ nil
Archives a notification template, preventing new sends from referencing it. The template stays retrievable for its version history.
135 136 137 138 139 140 141 142 |
# File 'lib/courier/resources/notifications.rb', line 135 def archive(id, params = {}) @client.request( method: :delete, path: ["notifications/%1$s", id], model: NilClass, options: params[:request_options] ) end |
#create(notification:, state: nil, idempotency_key: nil, x_idempotency_expiration: nil, request_options: {}) ⇒ Courier::Models::NotificationTemplateResponse
Some parameter documentations has been truncated, see Models::NotificationCreateParams for more details.
Create a notification template. Requires all fields in the notification object. Templates are created in draft state by default.
Content must place its elements inside a channel block —
{ "type": "channel", "channel": "email", "elements": [...] } — or the request
returns 400. The template designer renders only the channel block matching the
tab it draws, so content stored without one cannot be opened. An empty
elements array is accepted, and the requirement applies to creation only:
PUT /notifications/{id} still accepts unwrapped content. Note this endpoint
takes versioned content only — the { title, body } shorthand accepted by
/send is rejected here with an invalid_request_error on
notification.content.version.
47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/courier/resources/notifications.rb', line 47 def create(params) parsed, = Courier::NotificationCreateParams.dump_request(params) header_params = {idempotency_key: "idempotency-key", x_idempotency_expiration: "x-idempotency-expiration"} @client.request( method: :post, path: "notifications", headers: parsed.slice(*header_params.keys).transform_keys(header_params), body: parsed.except(*header_params.keys), model: Courier::NotificationTemplateResponse, options: ) end |
#get_metrics(id, end_: nil, granularity: nil, lookback: nil, start: nil, request_options: {}) ⇒ Courier::Models::NotificationMetricsResponse
Some parameter documentations has been truncated, see Models::NotificationGetMetricsParams for more details.
Fetch the delivery funnel for one Notification Template as a time series — sent, delivered, opened, clicked, errors, and undeliverable — broken out per provider and channel inside each bucket. Sum the entries in a bucket for its totals; there is no bucket-level total.
Choose the window absolutely with start and end, or relatively with
lookback (an ISO 8601 duration). start and end take precedence when both
are supplied, and a request carrying neither defaults to lookback=P30D. The
window is snapped outwards onto the granularity grid so every bucket it
overlaps is returned whole, and the snapped boundaries come back as start and
end — align a chart on those rather than on what was requested. Every boundary
is UTC; there is no timezone support.
Every bucket in the window is returned, including the quiet ones, whose data
array is empty, so a series is directly plottable with no gap filling
client-side. An unknown template id returns 200 with an all-empty series
rather than 404, and messages sent without a Notification Template never
appear here.
Available in the US region only.
185 186 187 188 189 190 191 192 193 194 195 |
# File 'lib/courier/resources/notifications.rb', line 185 def get_metrics(id, params = {}) parsed, = Courier::NotificationGetMetricsParams.dump_request(params) query = Courier::Internal::Util.encode_query_params(parsed) @client.request( method: :get, path: ["notifications/%1$s/metrics", id], query: query.transform_keys(end_: "end"), model: Courier::NotificationMetricsResponse, options: ) end |
#list(cursor: nil, event_id: nil, notes: nil, tags: nil, request_options: {}) ⇒ Courier::Models::NotificationListResponse
Some parameter documentations has been truncated, see Models::NotificationListParams for more details.
Lists the workspace's notification templates. Each carries a name, tags, brand, routing, and its draft or published state.
111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/courier/resources/notifications.rb', line 111 def list(params = {}) parsed, = Courier::NotificationListParams.dump_request(params) query = Courier::Internal::Util.encode_query_params(parsed) @client.request( method: :get, path: "notifications", query: query, model: Courier::Models::NotificationListResponse, options: ) end |
#list_versions(id, cursor: nil, limit: nil, request_options: {}) ⇒ Courier::Models::NotificationTemplateVersionListResponse
Returns a notification template's published versions, most recent first, for comparison or rollback. Paged.
213 214 215 216 217 218 219 220 221 222 223 |
# File 'lib/courier/resources/notifications.rb', line 213 def list_versions(id, params = {}) parsed, = Courier::NotificationListVersionsParams.dump_request(params) query = Courier::Internal::Util.encode_query_params(parsed) @client.request( method: :get, path: ["notifications/%1$s/versions", id], query: query, model: Courier::NotificationTemplateVersionListResponse, options: ) end |
#publish(id, version: nil, idempotency_key: nil, x_idempotency_expiration: nil, request_options: {}) ⇒ nil
Some parameter documentations has been truncated, see Models::NotificationPublishParams for more details.
Publish a notification template. Publishes the current draft by default. Pass a version in the request body to publish a specific historical version.
246 247 248 249 250 251 252 253 254 255 256 257 258 |
# File 'lib/courier/resources/notifications.rb', line 246 def publish(id, params = {}) parsed, = Courier::NotificationPublishParams.dump_request(params) header_params = {idempotency_key: "idempotency-key", x_idempotency_expiration: "x-idempotency-expiration"} @client.request( method: :post, path: ["notifications/%1$s/publish", id], headers: parsed.slice(*header_params.keys).transform_keys(header_params), body: parsed.except(*header_params.keys), model: NilClass, options: ) end |
#put_content(id, content:, state: nil, request_options: {}) ⇒ Courier::Models::NotificationContentMutationResponse
Replaces all Elemental content in a template, overwriting every existing element. Supported for V2 templates only, not V1 blocks and channels.
276 277 278 279 280 281 282 283 284 285 |
# File 'lib/courier/resources/notifications.rb', line 276 def put_content(id, params) parsed, = Courier::NotificationPutContentParams.dump_request(params) @client.request( method: :put, path: ["notifications/%1$s/content", id], body: parsed, model: Courier::NotificationContentMutationResponse, options: ) end |
#put_element(element_id, id:, type:, channels: nil, data: nil, if_: nil, loop_: nil, ref: nil, state: nil, request_options: {}) ⇒ Courier::Models::NotificationContentMutationResponse
Replaces one Elemental element in a template, addressed by its element id. Supported for V2 templates only, not V1 blocks and channels.
315 316 317 318 319 320 321 322 323 324 325 326 327 328 |
# File 'lib/courier/resources/notifications.rb', line 315 def put_element(element_id, params) parsed, = Courier::NotificationPutElementParams.dump_request(params) id = parsed.delete(:id) do raise ArgumentError.new("missing required path argument #{_1}") end @client.request( method: :put, path: ["notifications/%1$s/elements/%2$s", id, element_id], body: parsed, model: Courier::NotificationContentMutationResponse, options: ) end |
#put_locale(locale_id, id:, elements:, state: nil, request_options: {}) ⇒ Courier::Models::NotificationContentMutationResponse
Sets locale-specific content overrides for a template. Each override must reference an element that already exists in the default content.
348 349 350 351 352 353 354 355 356 357 358 359 360 361 |
# File 'lib/courier/resources/notifications.rb', line 348 def put_locale(locale_id, params) parsed, = Courier::NotificationPutLocaleParams.dump_request(params) id = parsed.delete(:id) do raise ArgumentError.new("missing required path argument #{_1}") end @client.request( method: :put, path: ["notifications/%1$s/locales/%2$s", id, locale_id], body: parsed, model: Courier::NotificationContentMutationResponse, options: ) end |
#replace(id, notification:, state: nil, request_options: {}) ⇒ Courier::Models::NotificationTemplateResponse
Some parameter documentations has been truncated, see Models::NotificationReplaceParams for more details.
Replaces a notification template in full, so send every field rather than only the ones you want changed. Publish separately to make it live.
382 383 384 385 386 387 388 389 390 391 |
# File 'lib/courier/resources/notifications.rb', line 382 def replace(id, params) parsed, = Courier::NotificationReplaceParams.dump_request(params) @client.request( method: :put, path: ["notifications/%1$s", id], body: parsed, model: Courier::NotificationTemplateResponse, options: ) end |
#retrieve(id, version: nil, request_options: {}) ⇒ Courier::Models::NotificationTemplateResponse
Some parameter documentations has been truncated, see Models::NotificationRetrieveParams for more details.
Retrieve a notification template by ID. Returns the published version by default. Pass version=draft to retrieve an unpublished template.
78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/courier/resources/notifications.rb', line 78 def retrieve(id, params = {}) parsed, = Courier::NotificationRetrieveParams.dump_request(params) query = Courier::Internal::Util.encode_query_params(parsed) @client.request( method: :get, path: ["notifications/%1$s", id], query: query, model: Courier::NotificationTemplateResponse, options: ) end |
#retrieve_content(id, version: nil, request_options: {}) ⇒ Courier::Models::NotificationContentGetResponse, Courier::Models::NotificationGetContent
Some parameter documentations has been truncated, see Models::NotificationRetrieveContentParams for more details.
Returns a template's content and checksum. V2 templates return Elemental elements, while V1 templates return blocks and channels instead.
410 411 412 413 414 415 416 417 418 419 420 |
# File 'lib/courier/resources/notifications.rb', line 410 def retrieve_content(id, params = {}) parsed, = Courier::NotificationRetrieveContentParams.dump_request(params) query = Courier::Internal::Util.encode_query_params(parsed) @client.request( method: :get, path: ["notifications/%1$s/content", id], query: query, model: Courier::Models::NotificationRetrieveContentResponse, options: ) end |