class GdsApi::EmailAlertApi

@api documented
@see github.com/alphagov/email-alert-api<br><br>Adapter for the Email Alert API

def change_subscriber(id:, new_address:)

Returns:
  • (Hash) - subscriber

Parameters:
  • Subscriber (string) -- new_address
  • Subscriber (integer) -- id
def change_subscriber(id:, new_address:)
  patch_json(
    "#{endpoint}/subscribers/#{id}",
    new_address: new_address
  )
end

def change_subscription(id:, frequency:)

Returns:
  • (Hash) - subscription

Parameters:
  • Subscription (string) -- frequency
  • Subscription (string) -- id
def change_subscription(id:, frequency:)
  patch_json(
    "#{endpoint}/subscriptions/#{id}",
    frequency: frequency
  )
end

def create_auth_token(address:, destination:, redirect: nil)

Returns:
  • (Hash) - subscriber

Parameters:
  • redirect (string, nil) -- Path on GOV.UK to be encoded into the token for redirecting
  • destination (string) -- Path on GOV.UK that subscriber will be emailed
  • address (string) -- Email address of subscriber to create token for
def create_auth_token(address:, destination:, redirect: nil)
  post_json(
    "#{endpoint}/subscribers/auth-token",
    address: address,
    destination: destination,
    redirect: redirect,
  )
end

def create_subscriber_list(attributes)

Parameters:
  • attributes (Hash) -- document_type, links, tags used to search existing subscriber lists
def create_subscriber_list(attributes)
  post_json("#{endpoint}/subscriber-lists", attributes)
end

def find_or_create_subscriber_list(attributes)

Parameters:
  • attributes (Hash) -- document_type, links, tags used to search existing subscriber lists
def find_or_create_subscriber_list(attributes)
  find_subscriber_list(attributes)
rescue GdsApi::HTTPNotFound
  create_subscriber_list(attributes)
end

def find_subscriber_list(attributes)

Parameters:
  • attributes (Hash) -- document_type, links, tags used to search existing subscriber lists
def find_subscriber_list(attributes)
  tags = attributes["tags"]
  links = attributes["links"]
  document_type = attributes["document_type"]
  email_document_supertype = attributes["email_document_supertype"]
  government_document_supertype = attributes["government_document_supertype"]
  gov_delivery_id = attributes["gov_delivery_id"]
  content_purpose_supergroup = attributes["content_purpose_supergroup"]
  reject_content_purpose_supergroup = attributes["reject_content_purpose_supergroup"]
  if tags && links
    message = "please provide either tags or links (or neither), but not both"
    raise ArgumentError, message
  end
  params = {}
  params[:tags] = tags if tags
  params[:links] = links if links
  params[:document_type] = document_type if document_type
  params[:email_document_supertype] = email_document_supertype if email_document_supertype
  params[:government_document_supertype] = government_document_supertype if government_document_supertype
  params[:gov_delivery_id] = gov_delivery_id if gov_delivery_id
  params[:content_purpose_supergroup] = content_purpose_supergroup if content_purpose_supergroup
  params[:reject_content_purpose_supergroup] = reject_content_purpose_supergroup if reject_content_purpose_supergroup
  query_string = nested_query_string(params)
  get_json("#{endpoint}/subscriber-lists?" + query_string)
end

def get_subscribable(reference:)

Returns:
  • (Hash) - subscribable: {
def get_subscribable(reference:)
  get_json("#{endpoint}/subscribables/#{reference}")
end

def get_subscription(id)

Returns:
  • (Hash) - subscription: {
def get_subscription(id)
  get_json("#{endpoint}/subscriptions/#{id}")
end

def get_subscriptions(id:)

Returns:
  • (Hash) - subscriber, subscriptions

Parameters:
  • Subscriber (integer) -- id
def get_subscriptions(id:)
  get_json("#{endpoint}/subscribers/#{id}/subscriptions")
end

def nested_query_string(params)

def nested_query_string(params)
  Rack::Utils.build_nested_query(params)
end

def send_alert(publication, headers = {})

Parameters:
  • publication (Hash) -- Valid publication attributes
def send_alert(publication, headers = {})
  post_json("#{endpoint}/notifications", publication, headers)
end

def send_unpublish_message(message)

Parameters:
  • message (Hash) -- content_id
def send_unpublish_message(message)
  post_json("#{endpoint}/unpublish-messages", message)
end

def subscribe(subscribable_id:, address:, frequency: "immediately")

Returns:
  • (Hash) - subscription_id
def subscribe(subscribable_id:, address:, frequency: "immediately")
  post_json(
    "#{endpoint}/subscriptions",
    subscribable_id: subscribable_id,
    address: address,
    frequency: frequency,
  )
end

def topic_matches(attributes)

Returns:
  • (Hash) - topics, enabled, disabled

Parameters:
  • attributes (Hash) -- tags, links, document_type,
def topic_matches(attributes)
  query_string = nested_query_string(attributes)
  get_json("#{endpoint}/topic-matches.json?#{query_string}")
end

def unsubscribe(uuid)

Returns:
  • (nil) -

Parameters:
  • Subscription (string) -- uuid
def unsubscribe(uuid)
  post_json("#{endpoint}/unsubscribe/#{uuid}")
end

def unsubscribe_subscriber(id)

Returns:
  • (nil) -

Parameters:
  • Subscriber (integer) -- id
def unsubscribe_subscriber(id)
  delete_json("#{endpoint}/subscribers/#{id}")
end