Class: Knockapi::Resources::Messages

Inherits:
Object
  • Object
show all
Defined in:
lib/knockapi/resources/messages.rb,
lib/knockapi/resources/messages/batch.rb

Defined Under Namespace

Classes: Batch

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(client:) ⇒ Messages

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 Messages.

Parameters:



352
353
354
355
# File 'lib/knockapi/resources/messages.rb', line 352

def initialize(client:)
  @client = client
  @batch = Knockapi::Resources::Messages::Batch.new(client: client)
end

Instance Attribute Details

#batchKnockapi::Resources::Messages::Batch (readonly)



7
8
9
# File 'lib/knockapi/resources/messages.rb', line 7

def batch
  @batch
end

Instance Method Details

#archive(message_id, request_options: {}) ⇒ Knockapi::Models::Message

Archives a message for the user. Archived messages are hidden from the default message list in the feed but can still be accessed and unarchived later.

Parameters:

Returns:

See Also:



73
74
75
76
77
78
79
80
# File 'lib/knockapi/resources/messages.rb', line 73

def archive(message_id, params = {})
  @client.request(
    method: :put,
    path: ["v1/messages/%1$s/archived", message_id],
    model: Knockapi::Message,
    options: params[:request_options]
  )
end

#get(message_id, request_options: {}) ⇒ Knockapi::Models::Message

Retrieves a specific message by its ID.

Parameters:

Returns:

See Also:



93
94
95
96
97
98
99
100
# File 'lib/knockapi/resources/messages.rb', line 93

def get(message_id, params = {})
  @client.request(
    method: :get,
    path: ["v1/messages/%1$s", message_id],
    model: Knockapi::Message,
    options: params[:request_options]
  )
end

#get_content(message_id, request_options: {}) ⇒ Knockapi::Models::MessageGetContentResponse

Returns the fully rendered contents of a message, where the response depends on which channel the message was sent through.

Parameters:

Returns:

See Also:



114
115
116
117
118
119
120
121
# File 'lib/knockapi/resources/messages.rb', line 114

def get_content(message_id, params = {})
  @client.request(
    method: :get,
    path: ["v1/messages/%1$s/content", message_id],
    model: Knockapi::Models::MessageGetContentResponse,
    options: params[:request_options]
  )
end

#list(after: nil, before: nil, channel_id: nil, engagement_status: nil, inserted_at: nil, message_ids: nil, page_size: nil, source: nil, status: nil, tenant: nil, trigger_data: nil, workflow_categories: nil, workflow_recipient_run_id: nil, workflow_run_id: nil, request_options: {}) ⇒ Knockapi::Internal::ItemsCursor<Knockapi::Models::Message>

Some parameter documentations has been truncated, see Models::MessageListParams for more details.

Returns a paginated list of messages for the current environment.

Parameters:

  • after (String)

    The cursor to fetch entries after.

  • before (String)

    The cursor to fetch entries before.

  • channel_id (String)

    Limits the results to items with the corresponding channel ID.

  • engagement_status (Array<Symbol, Knockapi::Models::MessageListParams::EngagementStatus>)

    Limits the results to messages with the given engagement status.

  • inserted_at (Knockapi::Models::MessageListParams::InsertedAt)
  • message_ids (Array<String>)

    Limits the results to only the message IDs given (max 50). Note: when using this

  • page_size (Integer)

    The number of items per page (defaults to 50).

  • source (String)

    Limits the results to messages triggered by the given workflow key.

  • status (Array<Symbol, Knockapi::Models::MessageListParams::Status>)

    Limits the results to messages with the given delivery status.

  • tenant (String)

    Limits the results to items with the corresponding tenant.

  • trigger_data (String)

    Limits the results to only messages that were generated with the given data. See

  • workflow_categories (Array<String>)

    Limits the results to messages related to any of the provided categories.

  • workflow_recipient_run_id (String)

    Limits the results to messages for a specific recipient’s workflow run.

  • workflow_run_id (String)

    Limits the results to messages associated with the top-level workflow run ID ret

  • request_options (Knockapi::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/knockapi/resources/messages.rb', line 49

def list(params = {})
  parsed, options = Knockapi::MessageListParams.dump_request(params)
  @client.request(
    method: :get,
    path: "v1/messages",
    query: parsed,
    page: Knockapi::Internal::ItemsCursor,
    model: Knockapi::Message,
    options: options
  )
end

#list_activities(message_id, after: nil, before: nil, page_size: nil, trigger_data: nil, request_options: {}) ⇒ Knockapi::Internal::ItemsCursor<Knockapi::Models::Activity>

Returns a paginated list of activities for the specified message.

Parameters:

  • message_id (String)

    The ID of the message to fetch activities for.

  • after (String)

    The cursor to fetch entries after.

  • before (String)

    The cursor to fetch entries before.

  • page_size (Integer)

    The number of items per page (defaults to 50).

  • trigger_data (String)

    The trigger data to filter activities by.

  • request_options (Knockapi::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



142
143
144
145
146
147
148
149
150
151
152
# File 'lib/knockapi/resources/messages.rb', line 142

def list_activities(message_id, params = {})
  parsed, options = Knockapi::MessageListActivitiesParams.dump_request(params)
  @client.request(
    method: :get,
    path: ["v1/messages/%1$s/activities", message_id],
    query: parsed,
    page: Knockapi::Internal::ItemsCursor,
    model: Knockapi::Activity,
    options: options
  )
end

#list_delivery_logs(message_id, after: nil, before: nil, page_size: nil, request_options: {}) ⇒ Knockapi::Internal::ItemsCursor<Knockapi::Models::MessageDeliveryLog>

Returns a paginated list of delivery logs for the specified message.

Parameters:

  • message_id (String)

    The ID of the message to fetch delivery logs for.

  • after (String)

    The cursor to fetch entries after.

  • before (String)

    The cursor to fetch entries before.

  • page_size (Integer)

    The number of items per page (defaults to 50).

  • request_options (Knockapi::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



171
172
173
174
175
176
177
178
179
180
181
# File 'lib/knockapi/resources/messages.rb', line 171

def list_delivery_logs(message_id, params = {})
  parsed, options = Knockapi::MessageListDeliveryLogsParams.dump_request(params)
  @client.request(
    method: :get,
    path: ["v1/messages/%1$s/delivery_logs", message_id],
    query: parsed,
    page: Knockapi::Internal::ItemsCursor,
    model: Knockapi::MessageDeliveryLog,
    options: options
  )
end

#list_events(message_id, after: nil, before: nil, page_size: nil, request_options: {}) ⇒ Knockapi::Internal::ItemsCursor<Knockapi::Models::MessageEvent>

Returns a paginated list of events for the specified message.

Parameters:

  • message_id (String)

    The ID of the message to fetch events for.

  • after (String)

    The cursor to fetch entries after.

  • before (String)

    The cursor to fetch entries before.

  • page_size (Integer)

    The number of items per page (defaults to 50).

  • request_options (Knockapi::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



200
201
202
203
204
205
206
207
208
209
210
# File 'lib/knockapi/resources/messages.rb', line 200

def list_events(message_id, params = {})
  parsed, options = Knockapi::MessageListEventsParams.dump_request(params)
  @client.request(
    method: :get,
    path: ["v1/messages/%1$s/events", message_id],
    query: parsed,
    page: Knockapi::Internal::ItemsCursor,
    model: Knockapi::MessageEvent,
    options: options
  )
end

#mark_as_interacted(message_id, metadata: nil, request_options: {}) ⇒ Knockapi::Models::Message

Marks a message as ‘interacted` with by the user. This can include any user action on the message, with optional metadata about the specific interaction. Cannot include more than 5 key-value pairs, must not contain nested data. Read more about message engagement statuses [here](/send-notifications/message-statuses#engagement-status).

Parameters:

  • message_id (String)

    The unique identifier for the message.

  • metadata (Hash{Symbol=>Object})

    Metadata about the interaction.

  • request_options (Knockapi::RequestOptions, Hash{Symbol=>Object}, nil)

Returns:

See Also:



229
230
231
232
233
234
235
236
237
238
# File 'lib/knockapi/resources/messages.rb', line 229

def mark_as_interacted(message_id, params = {})
  parsed, options = Knockapi::MessageMarkAsInteractedParams.dump_request(params)
  @client.request(
    method: :put,
    path: ["v1/messages/%1$s/interacted", message_id],
    body: parsed,
    model: Knockapi::Message,
    options: options
  )
end

#mark_as_read(message_id, request_options: {}) ⇒ Knockapi::Models::Message

Marks a message as ‘read`. This indicates that the user has read the message content. Read more about message engagement statuses [here](/send-notifications/message-statuses#engagement-status).

Parameters:

Returns:

See Also:



253
254
255
256
257
258
259
260
# File 'lib/knockapi/resources/messages.rb', line 253

def mark_as_read(message_id, params = {})
  @client.request(
    method: :put,
    path: ["v1/messages/%1$s/read", message_id],
    model: Knockapi::Message,
    options: params[:request_options]
  )
end

#mark_as_seen(message_id, request_options: {}) ⇒ Knockapi::Models::Message

Marks a message as ‘seen`. This indicates that the user has viewed the message in their feed or inbox. Read more about message engagement statuses [here](/send-notifications/message-statuses#engagement-status).

Parameters:

Returns:

See Also:



275
276
277
278
279
280
281
282
# File 'lib/knockapi/resources/messages.rb', line 275

def mark_as_seen(message_id, params = {})
  @client.request(
    method: :put,
    path: ["v1/messages/%1$s/seen", message_id],
    model: Knockapi::Message,
    options: params[:request_options]
  )
end

#mark_as_unread(message_id, request_options: {}) ⇒ Knockapi::Models::Message

Marks a message as ‘unread`. This reverses the `read` state. Read more about message engagement statuses [here](/send-notifications/message-statuses#engagement-status).

Parameters:

Returns:

See Also:



297
298
299
300
301
302
303
304
# File 'lib/knockapi/resources/messages.rb', line 297

def mark_as_unread(message_id, params = {})
  @client.request(
    method: :delete,
    path: ["v1/messages/%1$s/read", message_id],
    model: Knockapi::Message,
    options: params[:request_options]
  )
end

#mark_as_unseen(message_id, request_options: {}) ⇒ Knockapi::Models::Message

Marks a message as ‘unseen`. This reverses the `seen` state. Read more about message engagement statuses [here](/send-notifications/message-statuses#engagement-status).

Parameters:

Returns:

See Also:



319
320
321
322
323
324
325
326
# File 'lib/knockapi/resources/messages.rb', line 319

def mark_as_unseen(message_id, params = {})
  @client.request(
    method: :delete,
    path: ["v1/messages/%1$s/seen", message_id],
    model: Knockapi::Message,
    options: params[:request_options]
  )
end

#unarchive(message_id, request_options: {}) ⇒ Knockapi::Models::Message

Removes a message from the archived state, making it visible in the default message list in the feed again.

Parameters:

Returns:

See Also:



340
341
342
343
344
345
346
347
# File 'lib/knockapi/resources/messages.rb', line 340

def unarchive(message_id, params = {})
  @client.request(
    method: :delete,
    path: ["v1/messages/%1$s/archived", message_id],
    model: Knockapi::Message,
    options: params[:request_options]
  )
end