openemail 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +183 -0
- data/lib/openemail/api_paths.rb +249 -0
- data/lib/openemail/client.rb +69 -0
- data/lib/openemail/constants.rb +851 -0
- data/lib/openemail/credentials.rb +53 -0
- data/lib/openemail/decode.rb +34 -0
- data/lib/openemail/defaults.rb +111 -0
- data/lib/openemail/endpoint.rb +144 -0
- data/lib/openemail/errors.rb +121 -0
- data/lib/openemail/http.rb +172 -0
- data/lib/openemail/languages.rb +42 -0
- data/lib/openemail/pagination.rb +63 -0
- data/lib/openemail/protocol.rb +169 -0
- data/lib/openemail/raw_body.rb +83 -0
- data/lib/openemail/request_path.rb +50 -0
- data/lib/openemail/resource.rb +70 -0
- data/lib/openemail/resources/account.rb +64 -0
- data/lib/openemail/resources/addresses.rb +38 -0
- data/lib/openemail/resources/analytics.rb +17 -0
- data/lib/openemail/resources/app_host.rb +23 -0
- data/lib/openemail/resources/audiences.rb +90 -0
- data/lib/openemail/resources/billing.rb +64 -0
- data/lib/openemail/resources/branding.rb +24 -0
- data/lib/openemail/resources/broadcasts.rb +65 -0
- data/lib/openemail/resources/calendar.rb +59 -0
- data/lib/openemail/resources/chats.rb +31 -0
- data/lib/openemail/resources/contacts.rb +111 -0
- data/lib/openemail/resources/dns_connections.rb +19 -0
- data/lib/openemail/resources/domains.rb +153 -0
- data/lib/openemail/resources/drafts.rb +35 -0
- data/lib/openemail/resources/emails.rb +100 -0
- data/lib/openemail/resources/encryption.rb +19 -0
- data/lib/openemail/resources/exports.rb +27 -0
- data/lib/openemail/resources/files.rb +95 -0
- data/lib/openemail/resources/forms.rb +111 -0
- data/lib/openemail/resources/imports.rb +86 -0
- data/lib/openemail/resources/keys.rb +127 -0
- data/lib/openemail/resources/labels.rb +39 -0
- data/lib/openemail/resources/languages.rb +11 -0
- data/lib/openemail/resources/me.rb +19 -0
- data/lib/openemail/resources/members.rb +74 -0
- data/lib/openemail/resources/provider_imports.rb +40 -0
- data/lib/openemail/resources/roles.rb +39 -0
- data/lib/openemail/resources/rules.rb +57 -0
- data/lib/openemail/resources/security.rb +19 -0
- data/lib/openemail/resources/senders.rb +15 -0
- data/lib/openemail/resources/settings.rb +16 -0
- data/lib/openemail/resources/subscriptions.rb +30 -0
- data/lib/openemail/resources/support.rb +11 -0
- data/lib/openemail/resources/suppressions.rb +31 -0
- data/lib/openemail/resources/temp_mail.rb +67 -0
- data/lib/openemail/resources/templates.rb +151 -0
- data/lib/openemail/resources/threads.rb +104 -0
- data/lib/openemail/resources/tools.rb +19 -0
- data/lib/openemail/resources/tracking.rb +63 -0
- data/lib/openemail/resources/webhooks.rb +142 -0
- data/lib/openemail/resources/workspaces.rb +28 -0
- data/lib/openemail/results.rb +33 -0
- data/lib/openemail/transport.rb +272 -0
- data/lib/openemail/update_notice.rb +69 -0
- data/lib/openemail/version.rb +5 -0
- data/lib/openemail/webhook.rb +82 -0
- data/lib/openemail/wire.rb +95 -0
- data/lib/openemail.rb +125 -0
- metadata +109 -0
|
@@ -0,0 +1,851 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module OpenEmail
|
|
4
|
+
ADDRESS_FORWARD_CONSENT_STATUSES = {
|
|
5
|
+
SENT: "sent",
|
|
6
|
+
ALREADY_CONFIRMED: "already-confirmed",
|
|
7
|
+
REVOKED: "revoked",
|
|
8
|
+
TOO_SOON: "too-soon",
|
|
9
|
+
SEND_FAILED: "send-failed"
|
|
10
|
+
}.freeze
|
|
11
|
+
|
|
12
|
+
ADDRESS_FORWARD_STATUSES = {LIVE: "live", PENDING: "pending", REFUSED: "refused", PAUSED: "paused"}.freeze
|
|
13
|
+
|
|
14
|
+
ADDRESS_MEMBER_VIAS = {
|
|
15
|
+
OWNER: "owner",
|
|
16
|
+
EVERY_ADDRESS: "every-address",
|
|
17
|
+
WHOLE_DOMAIN: "whole-domain",
|
|
18
|
+
DIRECT: "direct"
|
|
19
|
+
}.freeze
|
|
20
|
+
|
|
21
|
+
API_SCOPES = {
|
|
22
|
+
EMAILS_SEND: "emails:send",
|
|
23
|
+
EMAILS_READ: "emails:read",
|
|
24
|
+
DRAFTS_READ: "drafts:read",
|
|
25
|
+
DRAFTS_WRITE: "drafts:write",
|
|
26
|
+
THREADS_READ: "threads:read",
|
|
27
|
+
THREADS_WRITE: "threads:write",
|
|
28
|
+
FILES_READ: "files:read",
|
|
29
|
+
FILES_WRITE: "files:write",
|
|
30
|
+
LABELS_READ: "labels:read",
|
|
31
|
+
LABELS_WRITE: "labels:write",
|
|
32
|
+
CONTACTS_READ: "contacts:read",
|
|
33
|
+
CONTACTS_WRITE: "contacts:write",
|
|
34
|
+
AUDIENCES_READ: "audiences:read",
|
|
35
|
+
AUDIENCES_WRITE: "audiences:write",
|
|
36
|
+
CALENDAR_READ: "calendar:read",
|
|
37
|
+
CALENDAR_WRITE: "calendar:write",
|
|
38
|
+
TEMPLATES_READ: "templates:read",
|
|
39
|
+
TEMPLATES_WRITE: "templates:write",
|
|
40
|
+
DOMAINS_READ: "domains:read",
|
|
41
|
+
DOMAINS_WRITE: "domains:write",
|
|
42
|
+
WEBHOOKS_READ: "webhooks:read",
|
|
43
|
+
WEBHOOKS_WRITE: "webhooks:write",
|
|
44
|
+
RULES_READ: "rules:read",
|
|
45
|
+
RULES_WRITE: "rules:write",
|
|
46
|
+
CONNECTIONS_READ: "connections:read",
|
|
47
|
+
MEMBERS_READ: "members:read",
|
|
48
|
+
MEMBERS_WRITE: "members:write",
|
|
49
|
+
ROLES_READ: "roles:read",
|
|
50
|
+
ROLES_WRITE: "roles:write",
|
|
51
|
+
SETTINGS_READ: "settings:read",
|
|
52
|
+
SETTINGS_WRITE: "settings:write",
|
|
53
|
+
KEYS_WRITE: "keys:write",
|
|
54
|
+
KEYS_READ: "keys:read",
|
|
55
|
+
KEYS_MANAGE: "keys:manage",
|
|
56
|
+
FORMS_READ: "forms:read",
|
|
57
|
+
FORMS_WRITE: "forms:write",
|
|
58
|
+
BILLING_READ: "billing:read",
|
|
59
|
+
BILLING_WRITE: "billing:write",
|
|
60
|
+
ACCOUNT_READ: "account:read",
|
|
61
|
+
ACCOUNT_WRITE: "account:write"
|
|
62
|
+
}.freeze
|
|
63
|
+
|
|
64
|
+
APP_HOST_STATUSES = {NONE: "none", PENDING: "pending", ACTIVE: "active", FAILED: "failed"}.freeze
|
|
65
|
+
|
|
66
|
+
AUDIENCE_MEMBER_STATUSES = {SUBSCRIBED: "subscribed", UNSUBSCRIBED: "unsubscribed"}.freeze
|
|
67
|
+
|
|
68
|
+
BILLING_ALERT_KINDS = {
|
|
69
|
+
PAYMENT_FAILED: "payment_failed",
|
|
70
|
+
PAY_AS_YOU_GO_PAUSED: "pay_as_you_go_paused",
|
|
71
|
+
SENDING_PAUSED: "sending_paused",
|
|
72
|
+
SPEND_LIMIT_REACHED: "spend_limit_reached",
|
|
73
|
+
AI_USED_UP: "ai_used_up",
|
|
74
|
+
PLAN_ENDING: "plan_ending",
|
|
75
|
+
SENDS_NEARLY_USED: "sends_nearly_used",
|
|
76
|
+
SPEND_NEARLY_REACHED: "spend_nearly_reached",
|
|
77
|
+
UPCOMING_CHARGE: "upcoming_charge"
|
|
78
|
+
}.freeze
|
|
79
|
+
|
|
80
|
+
BILLING_ALERT_SEVERITIES = {BLOCKED: "blocked", WARNING: "warning", INFO: "info"}.freeze
|
|
81
|
+
|
|
82
|
+
BILLING_ALERT_TARGETS = {BILLING: "billing", USAGE: "usage"}.freeze
|
|
83
|
+
|
|
84
|
+
BILLING_INTERVALS = {MONTH: "month", YEAR: "year"}.freeze
|
|
85
|
+
|
|
86
|
+
BILLING_INVOICE_SORTS = {NEWEST: "newest", OLDEST: "oldest"}.freeze
|
|
87
|
+
|
|
88
|
+
BILLING_INVOICE_STARTS = {READY: "ready", STARTED: "started", REFUSED: "refused"}.freeze
|
|
89
|
+
|
|
90
|
+
BILLING_INVOICE_STATUSES = {
|
|
91
|
+
DRAFT: "draft",
|
|
92
|
+
PENDING: "pending",
|
|
93
|
+
PAID: "paid",
|
|
94
|
+
REFUNDED: "refunded",
|
|
95
|
+
PARTIALLY_REFUNDED: "partially_refunded",
|
|
96
|
+
VOID: "void"
|
|
97
|
+
}.freeze
|
|
98
|
+
|
|
99
|
+
BILLING_THEMES = {LIGHT: "light", DARK: "dark"}.freeze
|
|
100
|
+
|
|
101
|
+
BILLING_USAGE_WINDOWS = {ALL: "all"}.freeze
|
|
102
|
+
|
|
103
|
+
BIMI_STATUSES = {PRESENT: "present", PARTIAL: "partial", ABSENT: "absent", INVALID: "invalid"}.freeze
|
|
104
|
+
|
|
105
|
+
BRAND_FONT_IDS = {
|
|
106
|
+
SYSTEM: "system",
|
|
107
|
+
ARIAL: "arial",
|
|
108
|
+
HELVETICA: "helvetica",
|
|
109
|
+
VERDANA: "verdana",
|
|
110
|
+
TAHOMA: "tahoma",
|
|
111
|
+
TREBUCHET_MS: "trebuchet-ms",
|
|
112
|
+
GEORGIA: "georgia",
|
|
113
|
+
TIMES_NEW_ROMAN: "times-new-roman",
|
|
114
|
+
COURIER_NEW: "courier-new",
|
|
115
|
+
DM_SANS: "dm-sans",
|
|
116
|
+
INTER: "inter",
|
|
117
|
+
ROBOTO: "roboto",
|
|
118
|
+
OPEN_SANS: "open-sans",
|
|
119
|
+
LATO: "lato",
|
|
120
|
+
MONTSERRAT: "montserrat",
|
|
121
|
+
POPPINS: "poppins",
|
|
122
|
+
NUNITO: "nunito",
|
|
123
|
+
WORK_SANS: "work-sans",
|
|
124
|
+
SOURCE_SANS_3: "source-sans-3",
|
|
125
|
+
IBM_PLEX_SANS: "ibm-plex-sans",
|
|
126
|
+
MERRIWEATHER: "merriweather",
|
|
127
|
+
PLAYFAIR_DISPLAY: "playfair-display",
|
|
128
|
+
INSTRUMENT_SERIF: "instrument-serif",
|
|
129
|
+
JETBRAINS_MONO: "jetbrains-mono",
|
|
130
|
+
DM_MONO: "dm-mono",
|
|
131
|
+
GEIST_MONO: "geist-mono"
|
|
132
|
+
}.freeze
|
|
133
|
+
|
|
134
|
+
BRAND_IMAGE_TYPES = {
|
|
135
|
+
SVG: "image/svg+xml",
|
|
136
|
+
PNG: "image/png",
|
|
137
|
+
JPEG: "image/jpeg",
|
|
138
|
+
WEBP: "image/webp",
|
|
139
|
+
GIF: "image/gif"
|
|
140
|
+
}.freeze
|
|
141
|
+
|
|
142
|
+
BRAND_IMAGE_VARIANTS = {
|
|
143
|
+
MARK: "mark",
|
|
144
|
+
WORDMARK: "wordmark",
|
|
145
|
+
WORDMARK_DARK: "wordmark-dark",
|
|
146
|
+
LOGIN_BACKGROUND: "login-background"
|
|
147
|
+
}.freeze
|
|
148
|
+
|
|
149
|
+
BROADCAST_RECIPIENT_FILTERS = {
|
|
150
|
+
PENDING: "pending",
|
|
151
|
+
SENT: "sent",
|
|
152
|
+
DELIVERED: "delivered",
|
|
153
|
+
OPENED: "opened",
|
|
154
|
+
NOT_OPENED: "not_opened",
|
|
155
|
+
CLICKED: "clicked",
|
|
156
|
+
BOUNCED: "bounced",
|
|
157
|
+
COMPLAINED: "complained",
|
|
158
|
+
FAILED: "failed",
|
|
159
|
+
UNSUBSCRIBED: "unsubscribed"
|
|
160
|
+
}.freeze
|
|
161
|
+
|
|
162
|
+
BROADCAST_STATUSES = {
|
|
163
|
+
SCHEDULED: "scheduled",
|
|
164
|
+
QUEUED: "queued",
|
|
165
|
+
SENDING: "sending",
|
|
166
|
+
SENT: "sent",
|
|
167
|
+
CANCELLED: "cancelled",
|
|
168
|
+
FAILED: "failed"
|
|
169
|
+
}.freeze
|
|
170
|
+
|
|
171
|
+
CALENDAR_REMINDER_ACTIONS = {DISPLAY: "DISPLAY", EMAIL: "EMAIL", AUDIO: "AUDIO"}.freeze
|
|
172
|
+
|
|
173
|
+
CALENDAR_RESPONSES = {ACCEPTED: "ACCEPTED", DECLINED: "DECLINED", TENTATIVE: "TENTATIVE"}.freeze
|
|
174
|
+
|
|
175
|
+
CALENDAR_TRANSPARENCIES = {OPAQUE: "OPAQUE", TRANSPARENT: "TRANSPARENT"}.freeze
|
|
176
|
+
|
|
177
|
+
CALENDAR_VISIBILITIES = {PUBLIC: "PUBLIC", PRIVATE: "PRIVATE", CONFIDENTIAL: "CONFIDENTIAL"}.freeze
|
|
178
|
+
|
|
179
|
+
CHAT_SORTS = {NEWEST: "newest", OLDEST: "oldest", TITLE: "title"}.freeze
|
|
180
|
+
|
|
181
|
+
CONNECTED_APP_KINDS = {APP: "app", CLI: "cli"}.freeze
|
|
182
|
+
|
|
183
|
+
CONNECTED_APP_STATUSES = {
|
|
184
|
+
ACTIVE: "active",
|
|
185
|
+
EXPIRED: "expired",
|
|
186
|
+
NEEDS_APPROVAL: "needs-approval",
|
|
187
|
+
ACCESS_LOST: "access-lost"
|
|
188
|
+
}.freeze
|
|
189
|
+
|
|
190
|
+
CONSOLE_PERMISSIONS = {
|
|
191
|
+
ADDRESSES_ALL: "addresses:all",
|
|
192
|
+
API_KEYS_READ: "api-keys:read",
|
|
193
|
+
API_KEYS_WRITE: "api-keys:write",
|
|
194
|
+
BILLING_READ: "billing:read",
|
|
195
|
+
BILLING_WRITE: "billing:write",
|
|
196
|
+
WORKSPACE_MANAGE: "workspace:manage"
|
|
197
|
+
}.freeze
|
|
198
|
+
|
|
199
|
+
CONTACT_BLOCK_LISTS = {BLOCKED_SENDERS: "blockedSenders", BLOCKED_DOMAINS: "blockedDomains"}.freeze
|
|
200
|
+
|
|
201
|
+
CONTACT_PHOTO_TYPES = {PNG: "image/png", JPEG: "image/jpeg", WEBP: "image/webp", GIF: "image/gif"}.freeze
|
|
202
|
+
|
|
203
|
+
CONTACT_THREAD_SORTS = {NEWEST: "newest", OLDEST: "oldest", SENDER: "sender", SUBJECT: "subject"}.freeze
|
|
204
|
+
|
|
205
|
+
CREDENTIAL_KINDS = {API_KEY: "apiKey", OAUTH: "oauth"}.freeze
|
|
206
|
+
|
|
207
|
+
DELIVERABILITY_CHECK_IDS = {MX: "mx", SPF: "spf", DKIM: "dkim", DMARC: "dmarc", BIMI: "bimi"}.freeze
|
|
208
|
+
|
|
209
|
+
DELIVERABILITY_CHECK_STATUSES = {PASS: "pass", WARN: "warn", FAIL: "fail", ABSENT: "absent"}.freeze
|
|
210
|
+
|
|
211
|
+
DELIVERABILITY_GRADES = {A: "A", B: "B", C: "C", D: "D", F: "F"}.freeze
|
|
212
|
+
|
|
213
|
+
DNS_CONNECTION_STATUSES = {ACTIVE: "active", NEEDS_REAUTH: "needs-reauth", REVOKED: "revoked", ERROR: "error"}.freeze
|
|
214
|
+
|
|
215
|
+
DNS_PROVISION_STATES = {
|
|
216
|
+
UNMANAGED: "unmanaged",
|
|
217
|
+
READY: "ready",
|
|
218
|
+
AWAITING_SYNC: "awaiting-sync",
|
|
219
|
+
AWAITING_SIGNING: "awaiting-signing",
|
|
220
|
+
CONFLICT: "conflict",
|
|
221
|
+
BLOCKED: "blocked"
|
|
222
|
+
}.freeze
|
|
223
|
+
|
|
224
|
+
DNS_SYNC_OUTCOMES = {SYNCED: "synced", REFUSED: "refused"}.freeze
|
|
225
|
+
|
|
226
|
+
DNS_SYNC_PURPOSES = {
|
|
227
|
+
DMARC: "dmarc",
|
|
228
|
+
TRACKING: "tracking",
|
|
229
|
+
STORAGE: "storage",
|
|
230
|
+
BIMI: "bimi",
|
|
231
|
+
APP_HOST: "app-host"
|
|
232
|
+
}.freeze
|
|
233
|
+
|
|
234
|
+
DNS_ZONE_RESOLUTION_KINDS = {RESOLVED: "resolved", AMBIGUOUS: "ambiguous", NONE: "none", UNUSABLE: "unusable"}.freeze
|
|
235
|
+
|
|
236
|
+
DOMAIN_ADDRESS_DESTINATIONS = {MAILBOX: "mailbox", FORWARD: "forward"}.freeze
|
|
237
|
+
|
|
238
|
+
DOMAIN_DMARC_POLICIES = {NONE: "none", QUARANTINE: "quarantine", REJECT: "reject"}.freeze
|
|
239
|
+
|
|
240
|
+
DOMAIN_DMARC_STAGES = {
|
|
241
|
+
MISSING: "missing",
|
|
242
|
+
INVALID: "invalid",
|
|
243
|
+
MONITOR: "monitor",
|
|
244
|
+
QUARANTINE: "quarantine",
|
|
245
|
+
REJECT: "reject"
|
|
246
|
+
}.freeze
|
|
247
|
+
|
|
248
|
+
DOMAIN_LOGO_MARK_KINDS = {VERIFIED: "verified", COMMON: "common", UNKNOWN: "unknown"}.freeze
|
|
249
|
+
|
|
250
|
+
DOMAIN_LOGO_RECORD_OUTCOMES = {
|
|
251
|
+
PUBLISHED: "published",
|
|
252
|
+
MANUAL: "manual",
|
|
253
|
+
BLOCKED: "blocked",
|
|
254
|
+
BUSY: "busy",
|
|
255
|
+
FAILED: "failed"
|
|
256
|
+
}.freeze
|
|
257
|
+
|
|
258
|
+
DOMAIN_RECORD_STATUSES = {FOUND: "found", MISSING: "missing"}.freeze
|
|
259
|
+
|
|
260
|
+
EMAIL_NOTIFICATION_CATEGORIES = {ACCOUNT: "account", BILLING: "billing", ACTIVITY: "activity", PRODUCT: "product"}.freeze
|
|
261
|
+
|
|
262
|
+
ERROR_TYPES = {
|
|
263
|
+
INVALID_REQUEST_ERROR: "invalid_request_error",
|
|
264
|
+
AUTHENTICATION_ERROR: "authentication_error",
|
|
265
|
+
PERMISSION_ERROR: "permission_error",
|
|
266
|
+
NOT_FOUND_ERROR: "not_found_error",
|
|
267
|
+
CONFLICT_ERROR: "conflict_error",
|
|
268
|
+
VALIDATION_ERROR: "validation_error",
|
|
269
|
+
RATE_LIMIT_ERROR: "rate_limit_error",
|
|
270
|
+
API_ERROR: "api_error"
|
|
271
|
+
}.freeze
|
|
272
|
+
|
|
273
|
+
EXPORT_PHASES = {PLANNING: "planning", MAIL: "mail", RECORDS: "records", FINISHING: "finishing"}.freeze
|
|
274
|
+
|
|
275
|
+
EXPORT_REFUSALS = {
|
|
276
|
+
NOT_PERMITTED: "not-permitted",
|
|
277
|
+
MAILBOX_LOGIN: "mailbox-login",
|
|
278
|
+
TWO_FACTOR_REQUIRED: "two-factor-required"
|
|
279
|
+
}.freeze
|
|
280
|
+
|
|
281
|
+
EXPORT_STATUSES = {
|
|
282
|
+
QUEUED: "queued",
|
|
283
|
+
RUNNING: "running",
|
|
284
|
+
READY: "ready",
|
|
285
|
+
FAILED: "failed",
|
|
286
|
+
EXPIRED: "expired"
|
|
287
|
+
}.freeze
|
|
288
|
+
|
|
289
|
+
FILE_DIRECTIONS = {INBOUND: "inbound", OUTBOUND: "outbound", UPLOADED: "uploaded"}.freeze
|
|
290
|
+
|
|
291
|
+
FILE_KINDS = {IMAGE: "image", PDF: "pdf", AUDIO: "audio", VIDEO: "video", TEXT: "text"}.freeze
|
|
292
|
+
|
|
293
|
+
FILE_SORTS = {NEWEST: "newest", OLDEST: "oldest", LARGEST: "largest", NAME: "name"}.freeze
|
|
294
|
+
|
|
295
|
+
FILE_USAGES = {RECEIVED: "received", SENT: "sent", LINKED: "linked", SCHEDULED: "scheduled"}.freeze
|
|
296
|
+
|
|
297
|
+
FILE_VISIBILITIES = {PUBLIC: "public", PRIVATE: "private"}.freeze
|
|
298
|
+
|
|
299
|
+
FORM_ALIGNS = {LEFT: "left", CENTER: "center"}.freeze
|
|
300
|
+
|
|
301
|
+
FORM_CONFIRM_SOURCES = {LINK: "link", APPROVAL: "approval"}.freeze
|
|
302
|
+
|
|
303
|
+
FORM_CONTACT_FIELDS = {EMAIL: "email", FIRST_NAME: "firstName", LAST_NAME: "lastName", NAME: "name"}.freeze
|
|
304
|
+
|
|
305
|
+
FORM_FIELD_ERRORS = {
|
|
306
|
+
REQUIRED: "required",
|
|
307
|
+
EMAIL: "email",
|
|
308
|
+
NUMBER: "number",
|
|
309
|
+
MIN: "min",
|
|
310
|
+
MAX: "max",
|
|
311
|
+
TOO_SHORT: "too_short",
|
|
312
|
+
TOO_LONG: "too_long",
|
|
313
|
+
URL: "url",
|
|
314
|
+
DATE: "date",
|
|
315
|
+
PHONE: "phone",
|
|
316
|
+
OPTION: "option"
|
|
317
|
+
}.freeze
|
|
318
|
+
|
|
319
|
+
FORM_FIELD_TYPES = {
|
|
320
|
+
EMAIL: "email",
|
|
321
|
+
TEXT: "text",
|
|
322
|
+
TEXTAREA: "textarea",
|
|
323
|
+
NUMBER: "number",
|
|
324
|
+
PHONE: "phone",
|
|
325
|
+
URL: "url",
|
|
326
|
+
DATE: "date",
|
|
327
|
+
SELECT: "select",
|
|
328
|
+
RADIO: "radio",
|
|
329
|
+
CHECKBOXES: "checkboxes",
|
|
330
|
+
CHECKBOX: "checkbox",
|
|
331
|
+
CONSENT: "consent",
|
|
332
|
+
AUDIENCES: "audiences",
|
|
333
|
+
HIDDEN: "hidden",
|
|
334
|
+
HEADING: "heading",
|
|
335
|
+
PARAGRAPH: "paragraph",
|
|
336
|
+
DIVIDER: "divider"
|
|
337
|
+
}.freeze
|
|
338
|
+
|
|
339
|
+
FORM_FIELD_WIDTHS = {FULL: "full", HALF: "half"}.freeze
|
|
340
|
+
|
|
341
|
+
FORM_FONTS = {SYSTEM: "system", SANS: "sans", SERIF: "serif", MONO: "mono"}.freeze
|
|
342
|
+
|
|
343
|
+
FORM_LAYOUTS = {CARD: "card", PLAIN: "plain"}.freeze
|
|
344
|
+
|
|
345
|
+
FORM_RADII = {NONE: "none", SM: "sm", MD: "md", LG: "lg", FULL: "full"}.freeze
|
|
346
|
+
|
|
347
|
+
FORM_SENDER_ISSUES = {MISSING: "missing", NOT_SENDABLE: "not_sendable", NOT_ALLOWED: "not_allowed"}.freeze
|
|
348
|
+
|
|
349
|
+
FORM_STARTER_SLUGS = {
|
|
350
|
+
BLANK: "blank",
|
|
351
|
+
NEWSLETTER: "newsletter",
|
|
352
|
+
WAITLIST: "waitlist",
|
|
353
|
+
EVENT: "event",
|
|
354
|
+
EARLY_ACCESS: "early-access",
|
|
355
|
+
CONTACT: "contact"
|
|
356
|
+
}.freeze
|
|
357
|
+
|
|
358
|
+
FORM_STATUSES = {DRAFT: "draft", LIVE: "live", PAUSED: "paused"}.freeze
|
|
359
|
+
|
|
360
|
+
FORM_SUBMISSION_STATUSES = {PENDING: "pending", ADDED: "added"}.freeze
|
|
361
|
+
|
|
362
|
+
FORM_SUBSCRIBE_OUTCOMES = {ADDED: "added", PENDING: "pending"}.freeze
|
|
363
|
+
|
|
364
|
+
FORM_SUCCESS_ACTIONS = {MESSAGE: "message", REDIRECT: "redirect"}.freeze
|
|
365
|
+
|
|
366
|
+
FORM_WIDTHS = {NARROW: "narrow", NORMAL: "normal", WIDE: "wide"}.freeze
|
|
367
|
+
|
|
368
|
+
LANGUAGES = [
|
|
369
|
+
{code: "en", label: "English", native: "English", flag: "🇬🇧", rtl: false}.freeze,
|
|
370
|
+
{code: "es", label: "Spanish", native: "Español", flag: "🇪🇸", rtl: false}.freeze,
|
|
371
|
+
{code: "zh-Hans", label: "Simplified Chinese", native: "简体中文", flag: "🇨🇳", rtl: false}.freeze,
|
|
372
|
+
{code: "zh-Hant", label: "Traditional Chinese", native: "繁體中文", flag: "🇹🇼", rtl: false}.freeze,
|
|
373
|
+
{code: "hi", label: "Hindi", native: "हिन्दी", flag: "🇮🇳", rtl: false}.freeze,
|
|
374
|
+
{code: "ar", label: "Arabic", native: "العربية", flag: "🇸🇦", rtl: true}.freeze,
|
|
375
|
+
{
|
|
376
|
+
code: "pt-BR",
|
|
377
|
+
label: "Brazilian Portuguese",
|
|
378
|
+
native: "Português (Brasil)",
|
|
379
|
+
flag: "🇧🇷",
|
|
380
|
+
rtl: false
|
|
381
|
+
}.freeze,
|
|
382
|
+
{code: "pt", label: "Portuguese", native: "Português", flag: "🇵🇹", rtl: false}.freeze,
|
|
383
|
+
{code: "fr", label: "French", native: "Français", flag: "🇫🇷", rtl: false}.freeze,
|
|
384
|
+
{code: "de", label: "German", native: "Deutsch", flag: "🇩🇪", rtl: false}.freeze,
|
|
385
|
+
{code: "ru", label: "Russian", native: "Русский", flag: "🇷🇺", rtl: false}.freeze,
|
|
386
|
+
{code: "ja", label: "Japanese", native: "日本語", flag: "🇯🇵", rtl: false}.freeze,
|
|
387
|
+
{code: "ko", label: "Korean", native: "한국어", flag: "🇰🇷", rtl: false}.freeze,
|
|
388
|
+
{code: "it", label: "Italian", native: "Italiano", flag: "🇮🇹", rtl: false}.freeze,
|
|
389
|
+
{code: "nl", label: "Dutch", native: "Nederlands", flag: "🇳🇱", rtl: false}.freeze,
|
|
390
|
+
{code: "tr", label: "Turkish", native: "Türkçe", flag: "🇹🇷", rtl: false}.freeze,
|
|
391
|
+
{code: "pl", label: "Polish", native: "Polski", flag: "🇵🇱", rtl: false}.freeze,
|
|
392
|
+
{code: "uk", label: "Ukrainian", native: "Українська", flag: "🇺🇦", rtl: false}.freeze,
|
|
393
|
+
{code: "vi", label: "Vietnamese", native: "Tiếng Việt", flag: "🇻🇳", rtl: false}.freeze,
|
|
394
|
+
{code: "id", label: "Indonesian", native: "Bahasa Indonesia", flag: "🇮🇩", rtl: false}.freeze,
|
|
395
|
+
{code: "th", label: "Thai", native: "ไทย", flag: "🇹🇭", rtl: false}.freeze,
|
|
396
|
+
{code: "sv", label: "Swedish", native: "Svenska", flag: "🇸🇪", rtl: false}.freeze,
|
|
397
|
+
{code: "da", label: "Danish", native: "Dansk", flag: "🇩🇰", rtl: false}.freeze,
|
|
398
|
+
{code: "no", label: "Norwegian", native: "Norsk", flag: "🇳🇴", rtl: false}.freeze,
|
|
399
|
+
{code: "fi", label: "Finnish", native: "Suomi", flag: "🇫🇮", rtl: false}.freeze,
|
|
400
|
+
{code: "cs", label: "Czech", native: "Čeština", flag: "🇨🇿", rtl: false}.freeze,
|
|
401
|
+
{code: "el", label: "Greek", native: "Ελληνικά", flag: "🇬🇷", rtl: false}.freeze,
|
|
402
|
+
{code: "he", label: "Hebrew", native: "עברית", flag: "🇮🇱", rtl: true}.freeze,
|
|
403
|
+
{code: "ro", label: "Romanian", native: "Română", flag: "🇷🇴", rtl: false}.freeze,
|
|
404
|
+
{code: "hu", label: "Hungarian", native: "Magyar", flag: "🇭🇺", rtl: false}.freeze,
|
|
405
|
+
{code: "bn", label: "Bengali", native: "বাংলা", flag: "🇧🇩", rtl: false}.freeze,
|
|
406
|
+
{code: "ur", label: "Urdu", native: "اردو", flag: "🇵🇰", rtl: true}.freeze,
|
|
407
|
+
{code: "fa", label: "Persian", native: "فارسی", flag: "🇮🇷", rtl: true}.freeze,
|
|
408
|
+
{code: "ms", label: "Malay", native: "Bahasa Melayu", flag: "🇲🇾", rtl: false}.freeze,
|
|
409
|
+
{code: "ta", label: "Tamil", native: "தமிழ்", flag: "🇮🇳", rtl: false}.freeze,
|
|
410
|
+
{code: "ca", label: "Catalan", native: "Català", flag: "🇦🇩", rtl: false}.freeze,
|
|
411
|
+
{
|
|
412
|
+
code: "en-GB",
|
|
413
|
+
label: "British English",
|
|
414
|
+
native: "English (United Kingdom)",
|
|
415
|
+
flag: "🇬🇧",
|
|
416
|
+
rtl: false
|
|
417
|
+
}.freeze,
|
|
418
|
+
{
|
|
419
|
+
code: "en-US",
|
|
420
|
+
label: "American English",
|
|
421
|
+
native: "English (United States)",
|
|
422
|
+
flag: "🇺🇸",
|
|
423
|
+
rtl: false
|
|
424
|
+
}.freeze,
|
|
425
|
+
{
|
|
426
|
+
code: "es-419",
|
|
427
|
+
label: "Latin American Spanish",
|
|
428
|
+
native: "Español (Latinoamérica)",
|
|
429
|
+
flag: "🇲🇽",
|
|
430
|
+
rtl: false
|
|
431
|
+
}.freeze,
|
|
432
|
+
{
|
|
433
|
+
code: "fr-CA",
|
|
434
|
+
label: "Canadian French",
|
|
435
|
+
native: "Français (Canada)",
|
|
436
|
+
flag: "🇨🇦",
|
|
437
|
+
rtl: false
|
|
438
|
+
}.freeze,
|
|
439
|
+
{
|
|
440
|
+
code: "de-AT",
|
|
441
|
+
label: "Austrian German",
|
|
442
|
+
native: "Deutsch (Österreich)",
|
|
443
|
+
flag: "🇦🇹",
|
|
444
|
+
rtl: false
|
|
445
|
+
}.freeze,
|
|
446
|
+
{
|
|
447
|
+
code: "de-CH",
|
|
448
|
+
label: "Swiss Standard German",
|
|
449
|
+
native: "Deutsch (Schweiz)",
|
|
450
|
+
flag: "🇨🇭",
|
|
451
|
+
rtl: false
|
|
452
|
+
}.freeze,
|
|
453
|
+
{code: "nl-BE", label: "Flemish", native: "Vlaams", flag: "🇧🇪", rtl: false}.freeze,
|
|
454
|
+
{code: "zh-HK", label: "Hong Kong Chinese", native: "繁體中文(香港)", flag: "🇭🇰", rtl: false}.freeze,
|
|
455
|
+
{code: "yue", label: "Cantonese", native: "粵語", flag: "🇭🇰", rtl: false}.freeze,
|
|
456
|
+
{code: "nb", label: "Norwegian Bokmål", native: "Norsk bokmål", flag: "🇳🇴", rtl: false}.freeze,
|
|
457
|
+
{
|
|
458
|
+
code: "nn",
|
|
459
|
+
label: "Norwegian Nynorsk",
|
|
460
|
+
native: "Norsk nynorsk",
|
|
461
|
+
flag: "🇳🇴",
|
|
462
|
+
rtl: false
|
|
463
|
+
}.freeze,
|
|
464
|
+
{code: "sr", label: "Serbian", native: "Српски", flag: "🇷🇸", rtl: false}.freeze,
|
|
465
|
+
{
|
|
466
|
+
code: "sr-Latn",
|
|
467
|
+
label: "Serbian (Latin)",
|
|
468
|
+
native: "Srpski (latinica)",
|
|
469
|
+
flag: "🇷🇸",
|
|
470
|
+
rtl: false
|
|
471
|
+
}.freeze,
|
|
472
|
+
{
|
|
473
|
+
code: "ar-EG",
|
|
474
|
+
label: "Egyptian Arabic",
|
|
475
|
+
native: "العربية (مصر)",
|
|
476
|
+
flag: "🇪🇬",
|
|
477
|
+
rtl: true
|
|
478
|
+
}.freeze,
|
|
479
|
+
{
|
|
480
|
+
code: "ar-MA",
|
|
481
|
+
label: "Moroccan Arabic",
|
|
482
|
+
native: "الدارجة المغربية",
|
|
483
|
+
flag: "🇲🇦",
|
|
484
|
+
rtl: true
|
|
485
|
+
}.freeze,
|
|
486
|
+
{code: "sk", label: "Slovak", native: "Slovenčina", flag: "🇸🇰", rtl: false}.freeze,
|
|
487
|
+
{code: "sl", label: "Slovenian", native: "Slovenščina", flag: "🇸🇮", rtl: false}.freeze,
|
|
488
|
+
{code: "hr", label: "Croatian", native: "Hrvatski", flag: "🇭🇷", rtl: false}.freeze,
|
|
489
|
+
{code: "bs", label: "Bosnian", native: "Bosanski", flag: "🇧🇦", rtl: false}.freeze,
|
|
490
|
+
{code: "cnr", label: "Montenegrin", native: "Crnogorski", flag: "🇲🇪", rtl: false}.freeze,
|
|
491
|
+
{code: "mk", label: "Macedonian", native: "Македонски", flag: "🇲🇰", rtl: false}.freeze,
|
|
492
|
+
{code: "bg", label: "Bulgarian", native: "Български", flag: "🇧🇬", rtl: false}.freeze,
|
|
493
|
+
{code: "be", label: "Belarusian", native: "Беларуская", flag: "🇧🇾", rtl: false}.freeze,
|
|
494
|
+
{
|
|
495
|
+
code: "hsb",
|
|
496
|
+
label: "Upper Sorbian",
|
|
497
|
+
native: "Hornjoserbšćina",
|
|
498
|
+
flag: "🇩🇪",
|
|
499
|
+
rtl: false
|
|
500
|
+
}.freeze,
|
|
501
|
+
{code: "rue", label: "Rusyn", native: "Русиньскый", flag: "🇸🇰", rtl: false}.freeze,
|
|
502
|
+
{code: "lt", label: "Lithuanian", native: "Lietuvių", flag: "🇱🇹", rtl: false}.freeze,
|
|
503
|
+
{code: "lv", label: "Latvian", native: "Latviešu", flag: "🇱🇻", rtl: false}.freeze,
|
|
504
|
+
{code: "et", label: "Estonian", native: "Eesti", flag: "🇪🇪", rtl: false}.freeze,
|
|
505
|
+
{code: "se", label: "Northern Sami", native: "Davvisámegiella", flag: "🇳🇴", rtl: false}.freeze,
|
|
506
|
+
{code: "is", label: "Icelandic", native: "Íslenska", flag: "🇮🇸", rtl: false}.freeze,
|
|
507
|
+
{code: "fo", label: "Faroese", native: "Føroyskt", flag: "🇫🇴", rtl: false}.freeze,
|
|
508
|
+
{code: "kl", label: "Greenlandic", native: "Kalaallisut", flag: "🇬🇱", rtl: false}.freeze,
|
|
509
|
+
{code: "ga", label: "Irish", native: "Gaeilge", flag: "🇮🇪", rtl: false}.freeze,
|
|
510
|
+
{code: "gd", label: "Scottish Gaelic", native: "Gàidhlig", flag: "🇬🇧", rtl: false}.freeze,
|
|
511
|
+
{code: "cy", label: "Welsh", native: "Cymraeg", flag: "🇬🇧", rtl: false}.freeze,
|
|
512
|
+
{code: "kw", label: "Cornish", native: "Kernewek", flag: "🇬🇧", rtl: false}.freeze,
|
|
513
|
+
{code: "gv", label: "Manx", native: "Gaelg", flag: "🇮🇲", rtl: false}.freeze,
|
|
514
|
+
{code: "br", label: "Breton", native: "Brezhoneg", flag: "🇫🇷", rtl: false}.freeze,
|
|
515
|
+
{code: "eu", label: "Basque", native: "Euskara", flag: "🇪🇸", rtl: false}.freeze,
|
|
516
|
+
{code: "gl", label: "Galician", native: "Galego", flag: "🇪🇸", rtl: false}.freeze,
|
|
517
|
+
{code: "ast", label: "Asturian", native: "Asturianu", flag: "🇪🇸", rtl: false}.freeze,
|
|
518
|
+
{code: "an", label: "Aragonese", native: "Aragonés", flag: "🇪🇸", rtl: false}.freeze,
|
|
519
|
+
{code: "oc", label: "Occitan", native: "Occitan", flag: "🇫🇷", rtl: false}.freeze,
|
|
520
|
+
{code: "co", label: "Corsican", native: "Corsu", flag: "🇫🇷", rtl: false}.freeze,
|
|
521
|
+
{code: "sc", label: "Sardinian", native: "Sardu", flag: "🇮🇹", rtl: false}.freeze,
|
|
522
|
+
{code: "fur", label: "Friulian", native: "Furlan", flag: "🇮🇹", rtl: false}.freeze,
|
|
523
|
+
{code: "rm", label: "Romansh", native: "Rumantsch", flag: "🇨🇭", rtl: false}.freeze,
|
|
524
|
+
{
|
|
525
|
+
code: "gsw",
|
|
526
|
+
label: "Alemannic German",
|
|
527
|
+
native: "Schwiizerdütsch",
|
|
528
|
+
flag: "🇨🇭",
|
|
529
|
+
rtl: false
|
|
530
|
+
}.freeze,
|
|
531
|
+
{code: "lb", label: "Luxembourgish", native: "Lëtzebuergesch", flag: "🇱🇺", rtl: false}.freeze,
|
|
532
|
+
{code: "nds", label: "Low German", native: "Plattdüütsch", flag: "🇩🇪", rtl: false}.freeze,
|
|
533
|
+
{code: "bar", label: "Bavarian", native: "Boarisch", flag: "🇩🇪", rtl: false}.freeze,
|
|
534
|
+
{code: "fy", label: "Western Frisian", native: "Frysk", flag: "🇳🇱", rtl: false}.freeze,
|
|
535
|
+
{code: "li", label: "Limburgish", native: "Limburgs", flag: "🇳🇱", rtl: false}.freeze,
|
|
536
|
+
{code: "wa", label: "Walloon", native: "Walon", flag: "🇧🇪", rtl: false}.freeze,
|
|
537
|
+
{code: "mt", label: "Maltese", native: "Malti", flag: "🇲🇹", rtl: false}.freeze,
|
|
538
|
+
{code: "sq", label: "Albanian", native: "Shqip", flag: "🇦🇱", rtl: false}.freeze,
|
|
539
|
+
{code: "la", label: "Latin", native: "Latina", flag: "🇻🇦", rtl: false}.freeze,
|
|
540
|
+
{code: "eo", label: "Esperanto", native: "Esperanto", flag: "🇪🇺", rtl: false}.freeze,
|
|
541
|
+
{code: "yi", label: "Yiddish", native: "ייִדיש", flag: "🇮🇱", rtl: true}.freeze,
|
|
542
|
+
{code: "hy", label: "Armenian", native: "Հայերեն", flag: "🇦🇲", rtl: false}.freeze,
|
|
543
|
+
{code: "ka", label: "Georgian", native: "ქართული", flag: "🇬🇪", rtl: false}.freeze,
|
|
544
|
+
{code: "os", label: "Ossetian", native: "Ирон æвзаг", flag: "🇬🇪", rtl: false}.freeze,
|
|
545
|
+
{code: "ab", label: "Abkhaz", native: "Аԥсшәа", flag: "🇬🇪", rtl: false}.freeze,
|
|
546
|
+
{code: "ce", label: "Chechen", native: "Нохчийн мотт", flag: "🇷🇺", rtl: false}.freeze,
|
|
547
|
+
{code: "az", label: "Azerbaijani", native: "Azərbaycan dili", flag: "🇦🇿", rtl: false}.freeze,
|
|
548
|
+
{code: "kk", label: "Kazakh", native: "Қазақ тілі", flag: "🇰🇿", rtl: false}.freeze,
|
|
549
|
+
{code: "ky", label: "Kyrgyz", native: "Кыргызча", flag: "🇰🇬", rtl: false}.freeze,
|
|
550
|
+
{code: "uz", label: "Uzbek", native: "Oʻzbekcha", flag: "🇺🇿", rtl: false}.freeze,
|
|
551
|
+
{code: "tk", label: "Turkmen", native: "Türkmençe", flag: "🇹🇲", rtl: false}.freeze,
|
|
552
|
+
{code: "tt", label: "Tatar", native: "Татар теле", flag: "🇷🇺", rtl: false}.freeze,
|
|
553
|
+
{code: "ba", label: "Bashkir", native: "Башҡортса", flag: "🇷🇺", rtl: false}.freeze,
|
|
554
|
+
{code: "cv", label: "Chuvash", native: "Чӑвашла", flag: "🇷🇺", rtl: false}.freeze,
|
|
555
|
+
{code: "sah", label: "Yakut", native: "Саха тыла", flag: "🇷🇺", rtl: false}.freeze,
|
|
556
|
+
{code: "ug", label: "Uyghur", native: "ئۇيغۇرچە", flag: "🇨🇳", rtl: true}.freeze,
|
|
557
|
+
{code: "mn", label: "Mongolian", native: "Монгол хэл", flag: "🇲🇳", rtl: false}.freeze,
|
|
558
|
+
{code: "bo", label: "Tibetan", native: "བོད་སྐད་", flag: "🇨🇳", rtl: false}.freeze,
|
|
559
|
+
{code: "dz", label: "Dzongkha", native: "རྫོང་ཁ", flag: "🇧🇹", rtl: false}.freeze,
|
|
560
|
+
{code: "fa-AF", label: "Dari", native: "دری", flag: "🇦🇫", rtl: true}.freeze,
|
|
561
|
+
{code: "ps", label: "Pashto", native: "پښتو", flag: "🇦🇫", rtl: true}.freeze,
|
|
562
|
+
{code: "ku", label: "Kurmanji Kurdish", native: "Kurmancî", flag: "🇹🇷", rtl: false}.freeze,
|
|
563
|
+
{code: "ckb", label: "Sorani Kurdish", native: "کوردیی ناوەندی", flag: "🇮🇶", rtl: true}.freeze,
|
|
564
|
+
{code: "syr", label: "Syriac", native: "ܣܘܪܝܝܐ", flag: "🇮🇶", rtl: true}.freeze,
|
|
565
|
+
{code: "te", label: "Telugu", native: "తెలుగు", flag: "🇮🇳", rtl: false}.freeze,
|
|
566
|
+
{code: "mr", label: "Marathi", native: "मराठी", flag: "🇮🇳", rtl: false}.freeze,
|
|
567
|
+
{code: "gu", label: "Gujarati", native: "ગુજરાતી", flag: "🇮🇳", rtl: false}.freeze,
|
|
568
|
+
{code: "kn", label: "Kannada", native: "ಕನ್ನಡ", flag: "🇮🇳", rtl: false}.freeze,
|
|
569
|
+
{code: "ml", label: "Malayalam", native: "മലയാളം", flag: "🇮🇳", rtl: false}.freeze,
|
|
570
|
+
{code: "or", label: "Odia", native: "ଓଡ଼ିଆ", flag: "🇮🇳", rtl: false}.freeze,
|
|
571
|
+
{code: "pa", label: "Punjabi", native: "ਪੰਜਾਬੀ", flag: "🇮🇳", rtl: false}.freeze,
|
|
572
|
+
{code: "pa-Arab", label: "Western Punjabi", native: "پنجابی", flag: "🇵🇰", rtl: true}.freeze,
|
|
573
|
+
{code: "as", label: "Assamese", native: "অসমীয়া", flag: "🇮🇳", rtl: false}.freeze,
|
|
574
|
+
{code: "mai", label: "Maithili", native: "मैथिली", flag: "🇮🇳", rtl: false}.freeze,
|
|
575
|
+
{code: "bho", label: "Bhojpuri", native: "भोजपुरी", flag: "🇮🇳", rtl: false}.freeze,
|
|
576
|
+
{code: "sat", label: "Santali", native: "ᱥᱟᱱᱛᱟᱲᱤ", flag: "🇮🇳", rtl: false}.freeze,
|
|
577
|
+
{code: "ks", label: "Kashmiri", native: "کٲشُر", flag: "🇮🇳", rtl: true}.freeze,
|
|
578
|
+
{code: "sa", label: "Sanskrit", native: "संस्कृतम्", flag: "🇮🇳", rtl: false}.freeze,
|
|
579
|
+
{code: "ne", label: "Nepali", native: "नेपाली", flag: "🇳🇵", rtl: false}.freeze,
|
|
580
|
+
{code: "si", label: "Sinhala", native: "සිංහල", flag: "🇱🇰", rtl: false}.freeze,
|
|
581
|
+
{code: "sd", label: "Sindhi", native: "سنڌي", flag: "🇵🇰", rtl: true}.freeze,
|
|
582
|
+
{code: "dv", label: "Divehi", native: "ދިވެހި", flag: "🇲🇻", rtl: true}.freeze,
|
|
583
|
+
{code: "km", label: "Khmer", native: "ភាសាខ្មែរ", flag: "🇰🇭", rtl: false}.freeze,
|
|
584
|
+
{code: "lo", label: "Lao", native: "ລາວ", flag: "🇱🇦", rtl: false}.freeze,
|
|
585
|
+
{code: "my", label: "Burmese", native: "မြန်မာဘာသာ", flag: "🇲🇲", rtl: false}.freeze,
|
|
586
|
+
{code: "jv", label: "Javanese", native: "Basa Jawa", flag: "🇮🇩", rtl: false}.freeze,
|
|
587
|
+
{code: "su", label: "Sundanese", native: "Basa Sunda", flag: "🇮🇩", rtl: false}.freeze,
|
|
588
|
+
{code: "fil", label: "Filipino", native: "Filipino", flag: "🇵🇭", rtl: false}.freeze,
|
|
589
|
+
{code: "tl", label: "Tagalog", native: "Tagalog", flag: "🇵🇭", rtl: false}.freeze,
|
|
590
|
+
{code: "ceb", label: "Cebuano", native: "Binisaya", flag: "🇵🇭", rtl: false}.freeze,
|
|
591
|
+
{code: "ilo", label: "Ilocano", native: "Ilokano", flag: "🇵🇭", rtl: false}.freeze,
|
|
592
|
+
{code: "war", label: "Waray", native: "Winaray", flag: "🇵🇭", rtl: false}.freeze,
|
|
593
|
+
{code: "sw", label: "Swahili", native: "Kiswahili", flag: "🇰🇪", rtl: false}.freeze,
|
|
594
|
+
{code: "am", label: "Amharic", native: "አማርኛ", flag: "🇪🇹", rtl: false}.freeze,
|
|
595
|
+
{code: "ti", label: "Tigrinya", native: "ትግርኛ", flag: "🇪🇷", rtl: false}.freeze,
|
|
596
|
+
{code: "om", label: "Oromo", native: "Afaan Oromoo", flag: "🇪🇹", rtl: false}.freeze,
|
|
597
|
+
{code: "so", label: "Somali", native: "Soomaali", flag: "🇸🇴", rtl: false}.freeze,
|
|
598
|
+
{code: "ha", label: "Hausa", native: "Hausa", flag: "🇳🇬", rtl: false}.freeze,
|
|
599
|
+
{code: "yo", label: "Yoruba", native: "Yorùbá", flag: "🇳🇬", rtl: false}.freeze,
|
|
600
|
+
{code: "ig", label: "Igbo", native: "Igbo", flag: "🇳🇬", rtl: false}.freeze,
|
|
601
|
+
{code: "af", label: "Afrikaans", native: "Afrikaans", flag: "🇿🇦", rtl: false}.freeze,
|
|
602
|
+
{code: "zu", label: "Zulu", native: "isiZulu", flag: "🇿🇦", rtl: false}.freeze,
|
|
603
|
+
{code: "xh", label: "Xhosa", native: "isiXhosa", flag: "🇿🇦", rtl: false}.freeze,
|
|
604
|
+
{code: "st", label: "Sesotho", native: "Sesotho", flag: "🇱🇸", rtl: false}.freeze,
|
|
605
|
+
{code: "nso", label: "Sepedi", native: "Sepedi", flag: "🇿🇦", rtl: false}.freeze,
|
|
606
|
+
{code: "tn", label: "Setswana", native: "Setswana", flag: "🇧🇼", rtl: false}.freeze,
|
|
607
|
+
{code: "ts", label: "Xitsonga", native: "Xitsonga", flag: "🇿🇦", rtl: false}.freeze,
|
|
608
|
+
{code: "ve", label: "Tshivenda", native: "Tshivenḓa", flag: "🇿🇦", rtl: false}.freeze,
|
|
609
|
+
{code: "ss", label: "Swati", native: "siSwati", flag: "🇸🇿", rtl: false}.freeze,
|
|
610
|
+
{code: "nr", label: "Southern Ndebele", native: "isiNdebele", flag: "🇿🇦", rtl: false}.freeze,
|
|
611
|
+
{code: "sn", label: "Shona", native: "chiShona", flag: "🇿🇼", rtl: false}.freeze,
|
|
612
|
+
{code: "ny", label: "Chichewa", native: "Chichewa", flag: "🇲🇼", rtl: false}.freeze,
|
|
613
|
+
{code: "rw", label: "Kinyarwanda", native: "Ikinyarwanda", flag: "🇷🇼", rtl: false}.freeze,
|
|
614
|
+
{code: "rn", label: "Kirundi", native: "Ikirundi", flag: "🇧🇮", rtl: false}.freeze,
|
|
615
|
+
{code: "lg", label: "Luganda", native: "Luganda", flag: "🇺🇬", rtl: false}.freeze,
|
|
616
|
+
{code: "ln", label: "Lingala", native: "Lingála", flag: "🇨🇩", rtl: false}.freeze,
|
|
617
|
+
{code: "kg", label: "Kikongo", native: "Kikongo", flag: "🇨🇩", rtl: false}.freeze,
|
|
618
|
+
{code: "wo", label: "Wolof", native: "Wolof", flag: "🇸🇳", rtl: false}.freeze,
|
|
619
|
+
{code: "ff", label: "Fula", native: "Pulaar", flag: "🇸🇳", rtl: false}.freeze,
|
|
620
|
+
{code: "bm", label: "Bambara", native: "Bamanankan", flag: "🇲🇱", rtl: false}.freeze,
|
|
621
|
+
{code: "ak", label: "Akan", native: "Akan", flag: "🇬🇭", rtl: false}.freeze,
|
|
622
|
+
{code: "tw", label: "Twi", native: "Twi", flag: "🇬🇭", rtl: false}.freeze,
|
|
623
|
+
{code: "ee", label: "Ewe", native: "Eʋegbe", flag: "🇬🇭", rtl: false}.freeze,
|
|
624
|
+
{code: "mg", label: "Malagasy", native: "Malagasy", flag: "🇲🇬", rtl: false}.freeze,
|
|
625
|
+
{code: "kab", label: "Kabyle", native: "Taqbaylit", flag: "🇩🇿", rtl: false}.freeze,
|
|
626
|
+
{code: "tzm", label: "Tamazight", native: "ⵜⴰⵎⴰⵣⵉⵖⵜ", flag: "🇲🇦", rtl: false}.freeze,
|
|
627
|
+
{code: "sg", label: "Sango", native: "Sängö", flag: "🇨🇫", rtl: false}.freeze,
|
|
628
|
+
{code: "ht", label: "Haitian Creole", native: "Kreyòl ayisyen", flag: "🇭🇹", rtl: false}.freeze,
|
|
629
|
+
{code: "pap", label: "Papiamento", native: "Papiamentu", flag: "🇦🇼", rtl: false}.freeze,
|
|
630
|
+
{code: "srn", label: "Sranan Tongo", native: "Sranantongo", flag: "🇸🇷", rtl: false}.freeze,
|
|
631
|
+
{code: "qu", label: "Quechua", native: "Runa Simi", flag: "🇵🇪", rtl: false}.freeze,
|
|
632
|
+
{code: "gn", label: "Guarani", native: "Avañe'ẽ", flag: "🇵🇾", rtl: false}.freeze,
|
|
633
|
+
{code: "ay", label: "Aymara", native: "Aymar aru", flag: "🇧🇴", rtl: false}.freeze,
|
|
634
|
+
{code: "nah", label: "Nahuatl", native: "Nāhuatl", flag: "🇲🇽", rtl: false}.freeze,
|
|
635
|
+
{code: "chr", label: "Cherokee", native: "ᏣᎳᎩ", flag: "🇺🇸", rtl: false}.freeze,
|
|
636
|
+
{code: "nv", label: "Navajo", native: "Diné bizaad", flag: "🇺🇸", rtl: false}.freeze,
|
|
637
|
+
{code: "iu", label: "Inuktitut", native: "ᐃᓄᒃᑎᑐᑦ", flag: "🇨🇦", rtl: false}.freeze,
|
|
638
|
+
{code: "mi", label: "Maori", native: "Te reo Māori", flag: "🇳🇿", rtl: false}.freeze,
|
|
639
|
+
{code: "sm", label: "Samoan", native: "Gagana Sāmoa", flag: "🇼🇸", rtl: false}.freeze,
|
|
640
|
+
{code: "to", label: "Tongan", native: "Lea faka-Tonga", flag: "🇹🇴", rtl: false}.freeze,
|
|
641
|
+
{code: "fj", label: "Fijian", native: "Na Vosa Vakaviti", flag: "🇫🇯", rtl: false}.freeze,
|
|
642
|
+
{code: "haw", label: "Hawaiian", native: "ʻŌlelo Hawaiʻi", flag: "🇺🇸", rtl: false}.freeze,
|
|
643
|
+
{code: "ty", label: "Tahitian", native: "Reo Tahiti", flag: "🇵🇫", rtl: false}.freeze,
|
|
644
|
+
{code: "ch", label: "Chamorro", native: "Chamoru", flag: "🇬🇺", rtl: false}.freeze,
|
|
645
|
+
{code: "mh", label: "Marshallese", native: "Kajin M̧ajeļ", flag: "🇲🇭", rtl: false}.freeze,
|
|
646
|
+
{code: "tpi", label: "Tok Pisin", native: "Tok Pisin", flag: "🇵🇬", rtl: false}.freeze
|
|
647
|
+
].freeze
|
|
648
|
+
|
|
649
|
+
LOGIN_BACKGROUND_KINDS = {PRESET: "preset", COLOR: "color", IMAGE: "image"}.freeze
|
|
650
|
+
|
|
651
|
+
LOGIN_BACKGROUND_PRESETS = {DUSK: "dusk", MIST: "mist", SAND: "sand", NIGHT: "night"}.freeze
|
|
652
|
+
|
|
653
|
+
LOGIN_LOGOS = {DARK: "dark", LIGHT: "light"}.freeze
|
|
654
|
+
|
|
655
|
+
MESSAGE_ENCRYPTION_FORMATS = {
|
|
656
|
+
PGP_MIME: "pgp-mime",
|
|
657
|
+
PGP_SIGNED: "pgp-signed",
|
|
658
|
+
PGP_INLINE: "pgp-inline",
|
|
659
|
+
SMIME_ENCRYPTED: "smime-encrypted",
|
|
660
|
+
SMIME_SIGNED: "smime-signed"
|
|
661
|
+
}.freeze
|
|
662
|
+
|
|
663
|
+
PAGE_LIMITS = {MAX_LIMIT: 100, DEFAULT_LIMIT: 25}.freeze
|
|
664
|
+
|
|
665
|
+
PAID_PLAN_IDS = {STARTER: "starter", BUSINESS: "business", ENTERPRISE: "enterprise"}.freeze
|
|
666
|
+
|
|
667
|
+
PAY_AS_YOU_GO_LIMITS_CENTS = [1000, 2500, 5000, 10000, 25000, 50000, 100000, 250000, 500000].freeze
|
|
668
|
+
|
|
669
|
+
PEOPLE_SORTS = {RECENT: "recent", NAME: "name", THREADS: "threads"}.freeze
|
|
670
|
+
|
|
671
|
+
PLAN_IDS = {FREE: "free", STARTER: "starter", BUSINESS: "business", ENTERPRISE: "enterprise"}.freeze
|
|
672
|
+
|
|
673
|
+
PROVIDER_IMPORT_DOMAIN_STATES = {ABSENT: "absent", ADDED: "added", VERIFIED: "verified"}.freeze
|
|
674
|
+
|
|
675
|
+
PROVIDER_IMPORT_RESOURCES = {
|
|
676
|
+
SUPPRESSIONS: "suppressions",
|
|
677
|
+
AUDIENCES: "audiences",
|
|
678
|
+
CONTACTS: "contacts",
|
|
679
|
+
TEMPLATES: "templates",
|
|
680
|
+
WEBHOOKS: "webhooks",
|
|
681
|
+
DOMAINS: "domains",
|
|
682
|
+
API_KEYS: "api-keys"
|
|
683
|
+
}.freeze
|
|
684
|
+
|
|
685
|
+
PROVIDER_IMPORT_STATUSES = {
|
|
686
|
+
QUEUED: "queued",
|
|
687
|
+
RUNNING: "running",
|
|
688
|
+
COMPLETED: "completed",
|
|
689
|
+
FAILED: "failed",
|
|
690
|
+
CANCELLED: "cancelled"
|
|
691
|
+
}.freeze
|
|
692
|
+
|
|
693
|
+
REWRITE_ACTIONS = {
|
|
694
|
+
SHORTEN: "shorten",
|
|
695
|
+
LENGTHEN: "lengthen",
|
|
696
|
+
REPHRASE: "rephrase",
|
|
697
|
+
FORMAL: "formal",
|
|
698
|
+
CASUAL: "casual",
|
|
699
|
+
CUSTOM: "custom"
|
|
700
|
+
}.freeze
|
|
701
|
+
|
|
702
|
+
REWRITE_TARGETS = {SUBJECT: "subject", BODY: "body"}.freeze
|
|
703
|
+
|
|
704
|
+
RULE_ACTIONS = {
|
|
705
|
+
LABEL: "label",
|
|
706
|
+
REMOVE_LABEL: "remove_label",
|
|
707
|
+
ARCHIVE: "archive",
|
|
708
|
+
MARK_READ: "mark_read",
|
|
709
|
+
STAR: "star",
|
|
710
|
+
SPAM: "spam",
|
|
711
|
+
TRASH: "trash",
|
|
712
|
+
FORWARD: "forward",
|
|
713
|
+
REPLY: "reply",
|
|
714
|
+
BLOCK_SENDER: "block_sender",
|
|
715
|
+
REJECT: "reject"
|
|
716
|
+
}.freeze
|
|
717
|
+
|
|
718
|
+
RULE_FIELDS = {
|
|
719
|
+
FROM: "from",
|
|
720
|
+
FROM_DOMAIN: "from_domain",
|
|
721
|
+
ENVELOPE_FROM: "envelope_from",
|
|
722
|
+
TO: "to",
|
|
723
|
+
CC: "cc",
|
|
724
|
+
BCC: "bcc",
|
|
725
|
+
RECIPIENT: "recipient",
|
|
726
|
+
REPLY_TO: "reply_to",
|
|
727
|
+
DELIVERED_TO: "delivered_to",
|
|
728
|
+
SUBJECT: "subject",
|
|
729
|
+
BODY: "body",
|
|
730
|
+
HEADER: "header",
|
|
731
|
+
LIST_ID: "list_id",
|
|
732
|
+
ATTACHMENT_NAME: "attachment_name",
|
|
733
|
+
ATTACHMENT_TYPE: "attachment_type",
|
|
734
|
+
HAS_ATTACHMENT: "has_attachment",
|
|
735
|
+
ATTACHMENT_SIZE: "attachment_size",
|
|
736
|
+
MESSAGE_SIZE: "message_size",
|
|
737
|
+
SPAM: "spam",
|
|
738
|
+
HOUR: "hour",
|
|
739
|
+
WEEKDAY: "weekday"
|
|
740
|
+
}.freeze
|
|
741
|
+
|
|
742
|
+
RULE_OPERATORS = {
|
|
743
|
+
MATCHES: "matches",
|
|
744
|
+
CONTAINS: "contains",
|
|
745
|
+
EQUALS: "equals",
|
|
746
|
+
STARTS_WITH: "starts_with",
|
|
747
|
+
ENDS_WITH: "ends_with",
|
|
748
|
+
GT: "gt",
|
|
749
|
+
LT: "lt"
|
|
750
|
+
}.freeze
|
|
751
|
+
|
|
752
|
+
STEP_UP_ERROR_CODES = {
|
|
753
|
+
STEP_UP_REQUIRED: "step_up_required",
|
|
754
|
+
STEP_UP_NOT_APPLICABLE: "step_up_not_applicable",
|
|
755
|
+
STEP_UP_THROTTLED: "step_up_throttled",
|
|
756
|
+
STEP_UP_UNDELIVERABLE: "step_up_undeliverable",
|
|
757
|
+
STEP_UP_CODE_INVALID: "step_up_code_invalid",
|
|
758
|
+
STEP_UP_CODE_EXPIRED: "step_up_code_expired",
|
|
759
|
+
STEP_UP_LOCKED: "step_up_locked"
|
|
760
|
+
}.freeze
|
|
761
|
+
|
|
762
|
+
STEP_UP_METHODS = {EMAIL: "email", TOTP: "totp"}.freeze
|
|
763
|
+
|
|
764
|
+
SUBSCRIPTION_DESTINATIONS = {ARCHIVE: "archive", BIN: "bin", LABEL: "label"}.freeze
|
|
765
|
+
|
|
766
|
+
SUBSCRIPTION_SORTS = {RECENT: "recent", MOST: "most", UNREAD: "unread", NAME: "name"}.freeze
|
|
767
|
+
|
|
768
|
+
SUBSCRIPTION_STATUSES = {ACTIVE: "active", UNSUBSCRIBED: "unsubscribed"}.freeze
|
|
769
|
+
|
|
770
|
+
SUPPRESSION_REASONS = {BOUNCE: "bounce", COMPLAINT: "complaint", MANUAL: "manual"}.freeze
|
|
771
|
+
|
|
772
|
+
TEMPLATE_IMAGE_TYPES = {
|
|
773
|
+
PNG: "image/png",
|
|
774
|
+
JPEG: "image/jpeg",
|
|
775
|
+
WEBP: "image/webp",
|
|
776
|
+
GIF: "image/gif",
|
|
777
|
+
SVG: "image/svg+xml"
|
|
778
|
+
}.freeze
|
|
779
|
+
|
|
780
|
+
THREAD_NOTE_COLORS = {
|
|
781
|
+
DEFAULT: "default",
|
|
782
|
+
RED: "red",
|
|
783
|
+
ORANGE: "orange",
|
|
784
|
+
YELLOW: "yellow",
|
|
785
|
+
GREEN: "green",
|
|
786
|
+
BLUE: "blue",
|
|
787
|
+
PURPLE: "purple",
|
|
788
|
+
PINK: "pink"
|
|
789
|
+
}.freeze
|
|
790
|
+
|
|
791
|
+
THREAD_SORTS = {NEWEST: "newest", OLDEST: "oldest", SENDER: "sender", SUBJECT: "subject"}.freeze
|
|
792
|
+
|
|
793
|
+
THREAD_SUMMARY_STATES = {READY: "ready", PENDING: "pending", NONE: "none"}.freeze
|
|
794
|
+
|
|
795
|
+
UNSUBSCRIBE_METHODS = {ONE_CLICK: "one-click", EMAIL: "email", LINK: "link"}.freeze
|
|
796
|
+
|
|
797
|
+
USERNAME_STATUSES = {
|
|
798
|
+
AVAILABLE: "available",
|
|
799
|
+
CURRENT: "current",
|
|
800
|
+
TAKEN: "taken",
|
|
801
|
+
RESERVED: "reserved",
|
|
802
|
+
INVALID: "invalid",
|
|
803
|
+
TOO_SHORT: "too_short",
|
|
804
|
+
TOO_LONG: "too_long"
|
|
805
|
+
}.freeze
|
|
806
|
+
|
|
807
|
+
WEBHOOK_EVENTS = {
|
|
808
|
+
EMAIL_RECEIVED: "email.received",
|
|
809
|
+
EMAIL_REPLIED: "email.replied",
|
|
810
|
+
EMAIL_SENT: "email.sent",
|
|
811
|
+
EMAIL_FAILED: "email.failed",
|
|
812
|
+
EMAIL_CANCELLED: "email.cancelled",
|
|
813
|
+
EMAIL_SCHEDULED: "email.scheduled",
|
|
814
|
+
EMAIL_QUEUED: "email.queued",
|
|
815
|
+
EMAIL_DELIVERED: "email.delivered",
|
|
816
|
+
EMAIL_DELIVERY_DELAYED: "email.delivery_delayed",
|
|
817
|
+
EMAIL_BOUNCED: "email.bounced",
|
|
818
|
+
EMAIL_COMPLAINED: "email.complained",
|
|
819
|
+
EMAIL_SUPPRESSED: "email.suppressed",
|
|
820
|
+
EMAIL_OPENED: "email.opened",
|
|
821
|
+
EMAIL_CLICKED: "email.clicked",
|
|
822
|
+
EMAIL_DOWNLOADED: "email.downloaded",
|
|
823
|
+
DOMAIN_VERIFIED: "domain.verified",
|
|
824
|
+
DOMAIN_SENDING_CHANGED: "domain.sending_changed",
|
|
825
|
+
DOMAIN_DELETED: "domain.deleted",
|
|
826
|
+
SUPPRESSION_ADDED: "suppression.added",
|
|
827
|
+
SUPPRESSION_REMOVED: "suppression.removed",
|
|
828
|
+
FILE_UPLOADED: "file.uploaded",
|
|
829
|
+
FILE_DELETED: "file.deleted",
|
|
830
|
+
FORM_SUBMITTED: "form.submitted",
|
|
831
|
+
FORM_CONFIRMED: "form.confirmed"
|
|
832
|
+
}.freeze
|
|
833
|
+
|
|
834
|
+
WEBHOOK_REPLAY_ERROR_CODES = {
|
|
835
|
+
RESOURCE_NOT_FOUND: "resource_not_found",
|
|
836
|
+
WEBHOOK_DISABLED: "webhook_disabled",
|
|
837
|
+
EVENT_NOT_SUBSCRIBED: "event_not_subscribed",
|
|
838
|
+
EVENT_OUT_OF_SCOPE: "event_out_of_scope",
|
|
839
|
+
DELIVERY_NOT_REPLAYABLE: "delivery_not_replayable",
|
|
840
|
+
RETRY_IN_PROGRESS: "retry_in_progress",
|
|
841
|
+
REPLAY_IN_PROGRESS: "replay_in_progress"
|
|
842
|
+
}.freeze
|
|
843
|
+
|
|
844
|
+
WEBHOOK_SIGNATURE_HEADERS = {
|
|
845
|
+
SIGNATURE: "X-OpenEmail-Signature",
|
|
846
|
+
EVENT: "X-OpenEmail-Event",
|
|
847
|
+
DELIVERY: "X-OpenEmail-Delivery"
|
|
848
|
+
}.freeze
|
|
849
|
+
|
|
850
|
+
WORKSPACE_KINDS = {BUSINESS: "business", PERSONAL: "personal"}.freeze
|
|
851
|
+
end
|