SDK Ruby
RubyGems: coffeemail v0.1.0Referência completa da gem oficial coffeemail para Ruby 3.3+. Sem dependências de runtime, modelos imutáveis, retorno seguro data, error, tipagem RBS e verificação de webhooks.
Buscando a documentação para Node.js ou TypeScript? Acesse a referência oficial do pacote @coffeemail/node.
Instalação
rubygems.org/gems/coffeemail ↗Inicialização do Cliente
Sem api_key:, a chave é lida da variável de ambiente COFFEEMAIL_API_KEY. O client é imutável e pode ser compartilhado entre threads.
CoffeeMail::Client.new(api_key: nil, locale: "pt-BR", timeout: 10, retry_policy: nil, transport: nil)Retorno Seguro e Tratamento de Erros
Padrão Seguro data, errorToda operação devolve um CoffeeMail::Response com data ou error. Desestruture com data, error = ..., use pattern matching ou chame unwrap! para levantar o erro tipado.
Validação Criptográfica de Webhooks
CoffeeMail::Webhook.from_rack valida o header x-webhook-signature (HMAC SHA-256 de timestamp, chave de idempotência e corpo bruto) em tempo constante e rejeita entregas fora da janela de 5 minutos.
Catálogo de Métodos
Referência das operações mais usadas do client oficial para Ruby.
Emails
client.emails.send(from:, to:, subject: nil, html: nil, text: nil, idempotency_key: nil, sandbox: false, **) -> Response[SendEmailResult]client.emails.send_batch(items) -> Response[Array[BatchSendItem]]client.emails.get(id) -> Response[EmailDetail]client.emails.list(status: nil, after: nil, limit: nil, **) -> Response[EmailList]Domínios
client.domains.create(name:) -> Response[CreatedDomain]client.domains.verify(id) -> Response[DomainVerification]Templates
client.templates.create(name:, html:, alias: nil, subject: nil, format: nil, **) -> Response[TemplateDetail]client.templates.preview_by_id(id, variables: nil) -> Response[RenderedTemplate]Audiências e Contatos
client.audiences.contacts.create(audience_id, email:, first_name: nil, last_name: nil, metadata: nil) -> Response[Contact]Broadcasts
client.broadcasts.create(audience_id:, from_email:, template_id: nil, subject: nil, **) -> Response[BroadcastDetail]Supressões
client.suppressions.create(email:, reason: nil, expires_at: nil) -> Response[SuppressionDetail]Webhooks
client.webhooks.create(url:, events:, description: nil) -> Response[WebhookDetail]CoffeeMail::Webhook.from_rack(request, secret:, tolerance: 300) -> Response[Webhook::Event]Métricas
client.stats.get(start_date: nil, end_date: nil, granularity: nil, **) -> Response[Stats]