# frozen_string_literal: true controller :messages do friendly_name "Messages API" description "This API allows you to access message details" authenticator :server action :message do title "Return message details" description "Returns all details about a message" param :id, "The ID of the message", type: Integer, required: true returns Hash, structure: :message, structure_opts: { paramable: { expansions: false } } error "MessageNotFound", "No message found matching provided ID", attributes: { id: "The ID of the message" } action do begin message = identity.server.message(params.id) rescue Postal::MessageDB::Message::NotFound error "MessageNotFound", id: params.id end structure :message, message, return: true end end action :deliveries do title "Return deliveries for a message" description "Returns an array of deliveries which have been attempted for this message" param :id, "The ID of the message", type: Integer, required: true returns Array, structure: :delivery, structure_opts: { full: true } error "MessageNotFound", "No message found matching provided ID", attributes: { id: "The ID of the message" } action do begin message = identity.server.message(params.id) rescue Postal::MessageDB::Message::NotFound error "MessageNotFound", id: params.id end message.deliveries.map do |d| structure :delivery, d end end end end