plunk/contacts

Types

pub type Action
pub type ActionResult {
  GetContactResult(//internal)
  ListContactsResult(List(//internal))
  CountContactsResult(//internal)
  CreateContactResult(//internal)
  SubscriptionResult(//internal)
  DeleteContactResult(//internal)
}

Constructors

  • GetContactResult(//internal)
  • ListContactsResult(List(//internal))
  • CountContactsResult(//internal)
  • CreateContactResult(//internal)
  • SubscriptionResult(//internal)
  • DeleteContactResult(//internal)
pub type Contact
pub type Count
pub type CreateContactData {
  CreateContactData(
    email: String,
    subscribed: Bool,
    data: option.Option(List(#(String, String))),
  )
}

Constructors

  • CreateContactData(
      email: String,
      subscribed: Bool,
      data: option.Option(List(#(String, String))),
    )
pub type CreatedContact
pub type DeletedContact
pub type Email
pub type Event
pub type ExtendedContact
pub type For {
  GetContact
  ListContacts
  CountContacts
  CreateContact
  Subscribe
  Unsubscribe
  DeleteContact
}

Constructors

  • GetContact
  • ListContacts
  • CountContacts
  • CreateContact
  • Subscribe
  • Unsubscribe
  • DeleteContact
pub type Subscription
pub type SubscriptionData {
  Subscription(id: String)
}

Constructors

  • Subscription(id: String)
pub type Trigger

Values

pub fn count(
  instance: instance.Instance,
) -> request.Request(String)

Get count of all contacts

pub fn create(
  instance: instance.Instance,
  contact: CreateContactData,
) -> request.Request(String)

Create a contact

pub fn decode(
  res: response.Response(String),
  for for: For,
) -> Result(ActionResult, types.PlunkError)

This function decodes all the responses related to this resource albeit a bit differently from the other decode functions (but, still type-safe)

Example

import gleam/io
import gleam/hackney
import plunk
import plunk/contacts.{GetContact, GetContactResult}

fn main() {
  let instance = plunk.new("API_KEY")
  let req = contacts.get(instance, "some-uuid-for-your-contact")
  let assert Ok(resp) = hackney.send(req)
  let assert Ok(data) = contacts.decode(resp, for: GetContact)
  let assert GetContactResult(contact) = data
  io.println(contact.id)
}
pub fn delete(
  instance: instance.Instance,
  id: String,
) -> request.Request(String)

Delete a contact

pub fn get(
  instance: instance.Instance,
  id contact_id: String,
) -> request.Request(String)

Get a contact by ID

pub fn list(
  instance: instance.Instance,
) -> request.Request(String)

Get all contacts

pub fn subscribe(
  instance: instance.Instance,
  id: String,
) -> request.Request(String)

Subscribe a contact

pub fn unsubscribe(
  instance: instance.Instance,
  id: String,
) -> request.Request(String)

Unsubscribe a contact

Search Document