dancecard-email-schemas

0.1.7 • Public • Published

Dancecard Email Schemas

NPM Package that defines schemas for objects used in the Dancecard Email/Lead Nurturing API. Allows for validation of objects.

Quickstart

Installation

npm install dancecard-email-schemas

Usage

import {
  Template, TemplateBlock, Token,
  Email, EmailSubtype, Program,
  Outcome
} from dancecard-email-schemas;

Objects

Template

property type description required
_id string Unique ID generated by database. yes
template_name string User provided Template ID/Name yes
template_type string(enum) String: either "Email" or "Page Behind" yes
url string URL where Jinja email template is stored yes
page_behind Template Object that denotes the name of the page behind template and its Unique ID generated by database. yes
blocks Array<TemplateBlock> List of all blocks that are in this email. yes

Template Block

Template Block object modeled from the following mockup. https://projects.invisionapp.com/freehand/document/7DJGRFO3e

property type description required
block_name string User provided Template Block ID/Name yes
block_short_name string User provided short version of Template Block ID/Name yes
placeholder string Block name used in templates yes
block_type string(enum) String: Either "Text", "CTA", "Video", "Gallery", or "File" yes
subtype_fields TemplateBlockSubtype An object that will contain any custom fields associated with a specific template block subtype yes
order int Relative ordering of block in relation to other blocks for this Template. Starts indexing at 0. yes

Template Block Subtype

property type description required
text_block_fields TextBlockSubtype or null All fields for a Template Block with block_type == "Text" otherwise this property will be null yes
cta_block_fields CTABlockSubtype or null All fields for a Template Block with block_type == "CTA" otherwise this property will be null yes
video_block_fields VideoBlockSubtype or null All fields for a Template Block with block_type == "Video" otherwise this property will be null yes
gallery_block_fields GalleryBlockSubtype or null All fields for a Template Block with block_type == "Gallery" yes
file_block_fields FileBlockSubtype or null All fields for a Template Block with block_type == "File" yes

Text Block Subtype

property type description required
formal string Formal text sent in an email yes
casual string Casual form of text sent in an email yes

CTA Block Subtype

property type description required

Video Block Subtype

property type description required

Gallery Block Subtype

property type description required

File Block Subtype

property type description required

Token

property type description required
_id string Unique ID generated by database. yes
token_name string User provided Token ID/Name yes
placeholder string Token placeholder used in email templates. yes
jinja_placeholder string Token placeholder used in the Jinja email templates. yes
end_user_visibility boolean If true show this token to end users in list of available tokens. If false do not show to end users in their list of available tokens. yes
all_program_visibility boolean If true show this token in list of available tokens for all programs. If false this token is to be shown only in the selected programs. yes
programs Array<Program> List of programs this token is visible for. yes

Email

property type description required
_id string Unique ID generated by database. yes
email_name string User provided Template ID/Name. yes
template Template Template that this Email is using. yes
cta_type string(enum) String: either "Gallery", "Video", or "Case Study" yes
cta_override boolean TODO: Talk to Colin about this yes
email_type string(enum) String: Either "First Email", "2+ Email", "Lifecycle Email", "Single Email", or "Opt-In Email" yes
subtype_fields EmailSubtype An object that will contain any custom fields associated with a specific email subtype yes
order int Relative ordering of this email versus other emails of the same email_type. For example if there are 8 total emails with 3 "first emails" and 5 "2+ emails" then the 3 first emails will have order ids of 0, 1, 2 and the 2+ emails will have order ids of 0, 1, 2, 3, 4 yes

Email Subtype

property type description required
first_email_fields FirstEmailSubtype or null All fields for an email with email_type == "First Email" otherwise this property will be null yes
single_email_fields SingleEmailSubtype or null All fields for an email with email_type == "Single Email" otherwise this property will be null yes
opt_in_email_fields OptInEmailSubtype or null All fields for an email with email_type == "Opt-In Email" otherwise this property will be null yes

First Email Subtype

property type description required
outcome Outcome An outcome object that this email is associated with. yes

Single Email Subtype

property type description required
subject string Subject line for single email. yes
salutation string Salutation used for single email. yes
body string Body of email used for single email.
signature string Signature used for single email. yes

Opt-In Email Subtype

property type description required
subject string Subject line for opt-in email. yes
salutation string Salutation used for opt-in email. yes
body string Body of email used for opt-in email. yes
signature string Signature used for opt-in email. yes

Program

property type description required
_id string Unique ID generated by database. yes
program_name string User provided Program ID/Name. yes
created_on int Unix timestamp of creation date yes
created_on_friendly string MM/DD/YYYY date string of creation date. yes
updated_on int Unix timestamp of last update date. yes
updated_on_friendly string MM/DD/YYYY date string of last update date. yes
active boolean True if this program is active. False if this program is not active. yes
emails Array<Email> List of all emails in this program. yes

Outcome

These outcomes are setup in Dancecard.

property type description required
_id string Unique ID generated by database for outcome. yes
outcome_name string User provided name for outcome. yes

Validation

To validate an object after constructing it you simply need to import the EmailSchemasValidator object and the associated object schema. Once you have done that you can get a validation object by running the validate() function of the validator.

Following is an example of constructing and validating a Token object.

import { EmailSchemasValidator, Token } from 'dancecard-email-schemas'
let t = {
  _id = "atestid",
  token_name: "A test token",
  placeholder: "test placeholder",
  jinja_placeholder: "{test_token}",
  end_user_visibility: true,
  all_program_visibility: true,
  programs: []
}

console.log(EmailSchemasValidator.validate(t, Token))

Building

npm run build

Testing

npm run test

Package Sidebar

Install

npm i dancecard-email-schemas

Weekly Downloads

1

Version

0.1.7

License

ISC

Unpacked Size

47.9 kB

Total Files

45

Last publish

Collaborators

  • ethanwillis