Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "4.22.0"
".": "4.23.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 136
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/courier/courier-47bd7f89519b4aa68b039b9a03888b689fac9d6ee763d26be0b267bbb0b2ddaa.yml
openapi_spec_hash: 67ff63b23cbfb19beac58d6e471836d3
config_hash: b30c4b3086cd9f3da06a63b256d8c189
configured_endpoints: 147
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/courier/courier-ca32540df5bca42c8113de4004e7751b74bb440e3d73267e7cbad84dd3c3e82a.yml
openapi_spec_hash: 5576c8cf8e5be1f250b5dd1eb6d30571
config_hash: c6cefb51165221f01d442a42ac4a13b9
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## 4.23.0 (2026-07-29)

Full Changelog: [v4.22.0...v4.23.0](https://github.com/trycourier/courier-ruby/compare/v4.22.0...v4.23.0)

### Features

* **broadcasts:** document Broadcasts CRUD REST API ([#170](https://github.com/trycourier/courier-ruby/issues/170)) ([122e598](https://github.com/trycourier/courier-ruby/commit/122e5984cc48c30473a81fd3003c4fd899fc1cc6))

## 4.22.0 (2026-07-29)

Full Changelog: [v4.21.0...v4.22.0](https://github.com/trycourier/courier-ruby/compare/v4.21.0...v4.22.0)
Expand Down
2 changes: 1 addition & 1 deletion Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ GIT
PATH
remote: .
specs:
trycourier (4.22.0)
trycourier (4.23.0)
cgi
connection_pool

Expand Down
21 changes: 20 additions & 1 deletion lib/courier.rb
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@
require_relative "courier/client"
require_relative "courier/models/elemental_base_node"
require_relative "courier/models/brand_template"
require_relative "courier/models/create_broadcast_request"
require_relative "courier/models/notification_content_put_request"
require_relative "courier/models/schedule_broadcast_request"
require_relative "courier/models/send_broadcast_request"
require_relative "courier/models/update_broadcast_request"
require_relative "courier/models/base_check"
require_relative "courier/models/subscription_topic_new"
require_relative "courier/models/elemental_channel_node"
Expand All @@ -63,7 +68,6 @@
require_relative "courier/models/journey_publish_request"
require_relative "courier/models/journey_template_create_request"
require_relative "courier/models/journey_template_publish_request"
require_relative "courier/models/notification_content_put_request"
require_relative "courier/models/notification_locale_put_request"
require_relative "courier/models/journey_template_replace_request"
require_relative "courier/models/message_details"
Expand Down Expand Up @@ -124,6 +128,20 @@
require_relative "courier/models/brand_snippet"
require_relative "courier/models/brand_snippets"
require_relative "courier/models/brand_update_params"
require_relative "courier/models/broadcast"
require_relative "courier/models/broadcast_archive_params"
require_relative "courier/models/broadcast_cancel_params"
require_relative "courier/models/broadcast_create_params"
require_relative "courier/models/broadcast_duplicate_params"
require_relative "courier/models/broadcast_list_params"
require_relative "courier/models/broadcast_list_response"
require_relative "courier/models/broadcast_put_content_params"
require_relative "courier/models/broadcast_retrieve_content_params"
require_relative "courier/models/broadcast_retrieve_params"
require_relative "courier/models/broadcast_schedule"
require_relative "courier/models/broadcast_schedule_params"
require_relative "courier/models/broadcast_send_params"
require_relative "courier/models/broadcast_update_params"
require_relative "courier/models/cancel_journey_response"
require_relative "courier/models/channel"
require_relative "courier/models/channel_classification"
Expand Down Expand Up @@ -423,6 +441,7 @@
require_relative "courier/resources/automations"
require_relative "courier/resources/automations/invoke"
require_relative "courier/resources/brands"
require_relative "courier/resources/broadcasts"
require_relative "courier/resources/digests"
require_relative "courier/resources/digests/schedules"
require_relative "courier/resources/inbound"
Expand Down
4 changes: 4 additions & 0 deletions lib/courier/client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ class Client < Courier::Internal::Transport::BaseClient
# @return [Courier::Resources::Journeys]
attr_reader :journeys

# @return [Courier::Resources::Broadcasts]
attr_reader :broadcasts

# Manage the logos, colors, and layout that give the templates you send a
# consistent look.
# @return [Courier::Resources::Brands]
Expand Down Expand Up @@ -184,6 +187,7 @@ def initialize(
@auth = Courier::Resources::Auth.new(client: self)
@automations = Courier::Resources::Automations.new(client: self)
@journeys = Courier::Resources::Journeys.new(client: self)
@broadcasts = Courier::Resources::Broadcasts.new(client: self)
@brands = Courier::Resources::Brands.new(client: self)
@digests = Courier::Resources::Digests.new(client: self)
@inbound = Courier::Resources::Inbound.new(client: self)
Expand Down
36 changes: 36 additions & 0 deletions lib/courier/models.rb
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,34 @@ module Courier

BrandUpdateParams = Courier::Models::BrandUpdateParams

Broadcast = Courier::Models::Broadcast

BroadcastArchiveParams = Courier::Models::BroadcastArchiveParams

BroadcastCancelParams = Courier::Models::BroadcastCancelParams

BroadcastCreateParams = Courier::Models::BroadcastCreateParams

BroadcastDuplicateParams = Courier::Models::BroadcastDuplicateParams

BroadcastListParams = Courier::Models::BroadcastListParams

BroadcastListResponse = Courier::Models::BroadcastListResponse

BroadcastPutContentParams = Courier::Models::BroadcastPutContentParams

BroadcastRetrieveContentParams = Courier::Models::BroadcastRetrieveContentParams

BroadcastRetrieveParams = Courier::Models::BroadcastRetrieveParams

BroadcastSchedule = Courier::Models::BroadcastSchedule

BroadcastScheduleParams = Courier::Models::BroadcastScheduleParams

BroadcastSendParams = Courier::Models::BroadcastSendParams

BroadcastUpdateParams = Courier::Models::BroadcastUpdateParams

CancelJourneyRequest = Courier::Models::CancelJourneyRequest

CancelJourneyResponse = Courier::Models::CancelJourneyResponse
Expand All @@ -127,6 +155,8 @@ module Courier

Check = Courier::Models::Check

CreateBroadcastRequest = Courier::Models::CreateBroadcastRequest

CreateJourneyRequest = Courier::Models::CreateJourneyRequest

DefaultPreferences = Courier::Models::DefaultPreferences
Expand Down Expand Up @@ -474,6 +504,10 @@ module Courier

Rule = Courier::Models::Rule

ScheduleBroadcastRequest = Courier::Models::ScheduleBroadcastRequest

SendBroadcastRequest = Courier::Models::SendBroadcastRequest

SendDirectMessage = Courier::Models::SendDirectMessage

SendMessageParams = Courier::Models::SendMessageParams
Expand Down Expand Up @@ -536,6 +570,8 @@ module Courier

TranslationUpdateParams = Courier::Models::TranslationUpdateParams

UpdateBroadcastRequest = Courier::Models::UpdateBroadcastRequest

UserProfile = Courier::Models::UserProfile

UserProfileFirebaseToken = Courier::Models::UserProfileFirebaseToken
Expand Down
132 changes: 132 additions & 0 deletions lib/courier/models/broadcast.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
# frozen_string_literal: true

module Courier
module Models
# @see Courier::Resources::Broadcasts#create
class Broadcast < Courier::Internal::Type::BaseModel
# @!attribute id
# The broadcast ID (bst\_ prefix).
#
# @return [String]
required :id, String

# @!attribute channel
# The broadcast's delivery channel.
#
# @return [Symbol, Courier::Models::Broadcast::Channel]
required :channel, enum: -> { Courier::Broadcast::Channel }

# @!attribute created_at
# ISO 8601 timestamp when the broadcast was created.
#
# @return [String]
required :created_at, String

# @!attribute created_by
# Actor that created the broadcast.
#
# @return [String]
required :created_by, String

# @!attribute name
# Human-readable name.
#
# @return [String]
required :name, String

# @!attribute status
# Lifecycle status of the broadcast.
#
# @return [Symbol, Courier::Models::Broadcast::Status]
required :status, enum: -> { Courier::Broadcast::Status }

# @!attribute updated_at
# ISO 8601 timestamp of the last update.
#
# @return [String]
required :updated_at, String

# @!attribute updated_by
# Actor that last updated the broadcast.
#
# @return [String]
required :updated_by, String

# @!attribute archived_at
# ISO 8601 timestamp when the broadcast was archived, if archived.
#
# @return [String, nil]
optional :archived_at, String, nil?: true

# @!attribute archived_by
# Actor that archived the broadcast, if archived.
#
# @return [String, nil]
optional :archived_by, String, nil?: true

# @!attribute schedule
# The delivery schedule and recipient targeting for a broadcast.
#
# @return [Courier::Models::BroadcastSchedule, nil]
optional :schedule, -> { Courier::BroadcastSchedule }, nil?: true

# @!method initialize(id:, channel:, created_at:, created_by:, name:, status:, updated_at:, updated_by:, archived_at: nil, archived_by: nil, schedule: nil)
# A broadcast — a single-channel message delivered to a known set of recipients (a
# list or audience).
#
# @param id [String] The broadcast ID (bst\_ prefix).
#
# @param channel [Symbol, Courier::Models::Broadcast::Channel] The broadcast's delivery channel.
#
# @param created_at [String] ISO 8601 timestamp when the broadcast was created.
#
# @param created_by [String] Actor that created the broadcast.
#
# @param name [String] Human-readable name.
#
# @param status [Symbol, Courier::Models::Broadcast::Status] Lifecycle status of the broadcast.
#
# @param updated_at [String] ISO 8601 timestamp of the last update.
#
# @param updated_by [String] Actor that last updated the broadcast.
#
# @param archived_at [String, nil] ISO 8601 timestamp when the broadcast was archived, if archived.
#
# @param archived_by [String, nil] Actor that archived the broadcast, if archived.
#
# @param schedule [Courier::Models::BroadcastSchedule, nil] The delivery schedule and recipient targeting for a broadcast.

# The broadcast's delivery channel.
#
# @see Courier::Models::Broadcast#channel
module Channel
extend Courier::Internal::Type::Enum

EMAIL = :email
SMS = :sms
PUSH = :push
INBOX = :inbox
SLACK = :slack
MSTEAMS = :msteams

# @!method self.values
# @return [Array<Symbol>]
end

# Lifecycle status of the broadcast.
#
# @see Courier::Models::Broadcast#status
module Status
extend Courier::Internal::Type::Enum

DRAFT = :draft
SCHEDULED = :scheduled
SENDING = :sending
SENT = :sent

# @!method self.values
# @return [Array<Symbol>]
end
end
end
end
20 changes: 20 additions & 0 deletions lib/courier/models/broadcast_archive_params.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# frozen_string_literal: true

module Courier
module Models
# @see Courier::Resources::Broadcasts#archive
class BroadcastArchiveParams < Courier::Internal::Type::BaseModel
extend Courier::Internal::Type::RequestParameters::Converter
include Courier::Internal::Type::RequestParameters

# @!attribute broadcast_id
#
# @return [String]
required :broadcast_id, String

# @!method initialize(broadcast_id:, request_options: {})
# @param broadcast_id [String]
# @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}]
end
end
end
20 changes: 20 additions & 0 deletions lib/courier/models/broadcast_cancel_params.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# frozen_string_literal: true

module Courier
module Models
# @see Courier::Resources::Broadcasts#cancel
class BroadcastCancelParams < Courier::Internal::Type::BaseModel
extend Courier::Internal::Type::RequestParameters::Converter
include Courier::Internal::Type::RequestParameters

# @!attribute broadcast_id
#
# @return [String]
required :broadcast_id, String

# @!method initialize(broadcast_id:, request_options: {})
# @param broadcast_id [String]
# @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}]
end
end
end
14 changes: 14 additions & 0 deletions lib/courier/models/broadcast_create_params.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# frozen_string_literal: true

module Courier
module Models
# @see Courier::Resources::Broadcasts#create
class BroadcastCreateParams < Courier::Models::CreateBroadcastRequest
extend Courier::Internal::Type::RequestParameters::Converter
include Courier::Internal::Type::RequestParameters

# @!method initialize(request_options: {})
# @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}]
end
end
end
20 changes: 20 additions & 0 deletions lib/courier/models/broadcast_duplicate_params.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# frozen_string_literal: true

module Courier
module Models
# @see Courier::Resources::Broadcasts#duplicate
class BroadcastDuplicateParams < Courier::Internal::Type::BaseModel
extend Courier::Internal::Type::RequestParameters::Converter
include Courier::Internal::Type::RequestParameters

# @!attribute broadcast_id
#
# @return [String]
required :broadcast_id, String

# @!method initialize(broadcast_id:, request_options: {})
# @param broadcast_id [String]
# @param request_options [Courier::RequestOptions, Hash{Symbol=>Object}]
end
end
end
Loading