digital-tools 2.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.
- package/.turbo/turbo-build.log +5 -0
- package/CHANGELOG.md +9 -0
- package/README.md +1144 -0
- package/dist/define.d.ts +109 -0
- package/dist/define.d.ts.map +1 -0
- package/dist/define.js +268 -0
- package/dist/define.js.map +1 -0
- package/dist/entities/advertising.d.ts +79 -0
- package/dist/entities/advertising.d.ts.map +1 -0
- package/dist/entities/advertising.js +1000 -0
- package/dist/entities/advertising.js.map +1 -0
- package/dist/entities/ai.d.ts +69 -0
- package/dist/entities/ai.d.ts.map +1 -0
- package/dist/entities/ai.js +757 -0
- package/dist/entities/ai.js.map +1 -0
- package/dist/entities/analytics.d.ts +83 -0
- package/dist/entities/analytics.d.ts.map +1 -0
- package/dist/entities/analytics.js +1589 -0
- package/dist/entities/analytics.js.map +1 -0
- package/dist/entities/automation.d.ts +61 -0
- package/dist/entities/automation.d.ts.map +1 -0
- package/dist/entities/automation.js +602 -0
- package/dist/entities/automation.js.map +1 -0
- package/dist/entities/communication.d.ts +96 -0
- package/dist/entities/communication.d.ts.map +1 -0
- package/dist/entities/communication.js +1151 -0
- package/dist/entities/communication.js.map +1 -0
- package/dist/entities/crm.d.ts +91 -0
- package/dist/entities/crm.d.ts.map +1 -0
- package/dist/entities/crm.js +1387 -0
- package/dist/entities/crm.js.map +1 -0
- package/dist/entities/design.d.ts +61 -0
- package/dist/entities/design.d.ts.map +1 -0
- package/dist/entities/design.js +547 -0
- package/dist/entities/design.js.map +1 -0
- package/dist/entities/development.d.ts +145 -0
- package/dist/entities/development.d.ts.map +1 -0
- package/dist/entities/development.js +2213 -0
- package/dist/entities/development.js.map +1 -0
- package/dist/entities/document.d.ts +54 -0
- package/dist/entities/document.d.ts.map +1 -0
- package/dist/entities/document.js +875 -0
- package/dist/entities/document.js.map +1 -0
- package/dist/entities/ecommerce.d.ts +93 -0
- package/dist/entities/ecommerce.d.ts.map +1 -0
- package/dist/entities/ecommerce.js +1430 -0
- package/dist/entities/ecommerce.js.map +1 -0
- package/dist/entities/experiment.d.ts +89 -0
- package/dist/entities/experiment.d.ts.map +1 -0
- package/dist/entities/experiment.js +1040 -0
- package/dist/entities/experiment.js.map +1 -0
- package/dist/entities/finance.d.ts +272 -0
- package/dist/entities/finance.d.ts.map +1 -0
- package/dist/entities/finance.js +3479 -0
- package/dist/entities/finance.js.map +1 -0
- package/dist/entities/forms.d.ts +91 -0
- package/dist/entities/forms.d.ts.map +1 -0
- package/dist/entities/forms.js +1893 -0
- package/dist/entities/forms.js.map +1 -0
- package/dist/entities/hr.d.ts +62 -0
- package/dist/entities/hr.d.ts.map +1 -0
- package/dist/entities/hr.js +662 -0
- package/dist/entities/hr.js.map +1 -0
- package/dist/entities/identity.d.ts +90 -0
- package/dist/entities/identity.d.ts.map +1 -0
- package/dist/entities/identity.js +998 -0
- package/dist/entities/identity.js.map +1 -0
- package/dist/entities/index.d.ts +410 -0
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +283 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/entities/infrastructure.d.ts +98 -0
- package/dist/entities/infrastructure.d.ts.map +1 -0
- package/dist/entities/infrastructure.js +1154 -0
- package/dist/entities/infrastructure.js.map +1 -0
- package/dist/entities/knowledge.d.ts +98 -0
- package/dist/entities/knowledge.d.ts.map +1 -0
- package/dist/entities/knowledge.js +1439 -0
- package/dist/entities/knowledge.js.map +1 -0
- package/dist/entities/marketing.d.ts +82 -0
- package/dist/entities/marketing.d.ts.map +1 -0
- package/dist/entities/marketing.js +1611 -0
- package/dist/entities/marketing.js.map +1 -0
- package/dist/entities/media.d.ts +83 -0
- package/dist/entities/media.d.ts.map +1 -0
- package/dist/entities/media.js +1635 -0
- package/dist/entities/media.js.map +1 -0
- package/dist/entities/notification.d.ts +76 -0
- package/dist/entities/notification.d.ts.map +1 -0
- package/dist/entities/notification.js +1200 -0
- package/dist/entities/notification.js.map +1 -0
- package/dist/entities/presentation.d.ts +61 -0
- package/dist/entities/presentation.d.ts.map +1 -0
- package/dist/entities/presentation.js +1275 -0
- package/dist/entities/presentation.js.map +1 -0
- package/dist/entities/productivity.d.ts +92 -0
- package/dist/entities/productivity.d.ts.map +1 -0
- package/dist/entities/productivity.js +1318 -0
- package/dist/entities/productivity.js.map +1 -0
- package/dist/entities/project-management.d.ts +89 -0
- package/dist/entities/project-management.d.ts.map +1 -0
- package/dist/entities/project-management.js +1137 -0
- package/dist/entities/project-management.js.map +1 -0
- package/dist/entities/recruiting.d.ts +54 -0
- package/dist/entities/recruiting.d.ts.map +1 -0
- package/dist/entities/recruiting.js +737 -0
- package/dist/entities/recruiting.js.map +1 -0
- package/dist/entities/shipping.d.ts +52 -0
- package/dist/entities/shipping.d.ts.map +1 -0
- package/dist/entities/shipping.js +510 -0
- package/dist/entities/shipping.js.map +1 -0
- package/dist/entities/signature.d.ts +83 -0
- package/dist/entities/signature.d.ts.map +1 -0
- package/dist/entities/signature.js +1103 -0
- package/dist/entities/signature.js.map +1 -0
- package/dist/entities/site.d.ts +33 -0
- package/dist/entities/site.d.ts.map +1 -0
- package/dist/entities/site.js +223 -0
- package/dist/entities/site.js.map +1 -0
- package/dist/entities/spreadsheet.d.ts +68 -0
- package/dist/entities/spreadsheet.d.ts.map +1 -0
- package/dist/entities/spreadsheet.js +1342 -0
- package/dist/entities/spreadsheet.js.map +1 -0
- package/dist/entities/storage.d.ts +74 -0
- package/dist/entities/storage.d.ts.map +1 -0
- package/dist/entities/storage.js +1199 -0
- package/dist/entities/storage.js.map +1 -0
- package/dist/entities/support.d.ts +83 -0
- package/dist/entities/support.d.ts.map +1 -0
- package/dist/entities/support.js +1167 -0
- package/dist/entities/support.js.map +1 -0
- package/dist/entities/video-conferencing.d.ts +129 -0
- package/dist/entities/video-conferencing.d.ts.map +1 -0
- package/dist/entities/video-conferencing.js +1751 -0
- package/dist/entities/video-conferencing.js.map +1 -0
- package/dist/entities/video.d.ts +76 -0
- package/dist/entities/video.d.ts.map +1 -0
- package/dist/entities/video.js +951 -0
- package/dist/entities/video.js.map +1 -0
- package/dist/entities.d.ts +147 -0
- package/dist/entities.d.ts.map +1 -0
- package/dist/entities.js +1664 -0
- package/dist/entities.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +75 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/analytics/index.d.ts +19 -0
- package/dist/providers/analytics/index.d.ts.map +1 -0
- package/dist/providers/analytics/index.js +18 -0
- package/dist/providers/analytics/index.js.map +1 -0
- package/dist/providers/analytics/mixpanel.d.ts +25 -0
- package/dist/providers/analytics/mixpanel.d.ts.map +1 -0
- package/dist/providers/analytics/mixpanel.js +256 -0
- package/dist/providers/analytics/mixpanel.js.map +1 -0
- package/dist/providers/calendar/cal-com.d.ts +26 -0
- package/dist/providers/calendar/cal-com.d.ts.map +1 -0
- package/dist/providers/calendar/cal-com.js +304 -0
- package/dist/providers/calendar/cal-com.js.map +1 -0
- package/dist/providers/calendar/google-calendar.d.ts +25 -0
- package/dist/providers/calendar/google-calendar.d.ts.map +1 -0
- package/dist/providers/calendar/google-calendar.js +336 -0
- package/dist/providers/calendar/google-calendar.js.map +1 -0
- package/dist/providers/calendar/index.d.ts +20 -0
- package/dist/providers/calendar/index.d.ts.map +1 -0
- package/dist/providers/calendar/index.js +21 -0
- package/dist/providers/calendar/index.js.map +1 -0
- package/dist/providers/crm/hubspot.d.ts +25 -0
- package/dist/providers/crm/hubspot.d.ts.map +1 -0
- package/dist/providers/crm/hubspot.js +567 -0
- package/dist/providers/crm/hubspot.js.map +1 -0
- package/dist/providers/crm/index.d.ts +19 -0
- package/dist/providers/crm/index.d.ts.map +1 -0
- package/dist/providers/crm/index.js +18 -0
- package/dist/providers/crm/index.js.map +1 -0
- package/dist/providers/development/github.d.ts +25 -0
- package/dist/providers/development/github.d.ts.map +1 -0
- package/dist/providers/development/github.js +473 -0
- package/dist/providers/development/github.js.map +1 -0
- package/dist/providers/development/index.d.ts +19 -0
- package/dist/providers/development/index.d.ts.map +1 -0
- package/dist/providers/development/index.js +18 -0
- package/dist/providers/development/index.js.map +1 -0
- package/dist/providers/ecommerce/index.d.ts +19 -0
- package/dist/providers/ecommerce/index.d.ts.map +1 -0
- package/dist/providers/ecommerce/index.js +18 -0
- package/dist/providers/ecommerce/index.js.map +1 -0
- package/dist/providers/ecommerce/shopify.d.ts +25 -0
- package/dist/providers/ecommerce/shopify.d.ts.map +1 -0
- package/dist/providers/ecommerce/shopify.js +379 -0
- package/dist/providers/ecommerce/shopify.js.map +1 -0
- package/dist/providers/email/index.d.ts +20 -0
- package/dist/providers/email/index.d.ts.map +1 -0
- package/dist/providers/email/index.js +21 -0
- package/dist/providers/email/index.js.map +1 -0
- package/dist/providers/email/resend.d.ts +25 -0
- package/dist/providers/email/resend.d.ts.map +1 -0
- package/dist/providers/email/resend.js +259 -0
- package/dist/providers/email/resend.js.map +1 -0
- package/dist/providers/email/sendgrid.d.ts +25 -0
- package/dist/providers/email/sendgrid.d.ts.map +1 -0
- package/dist/providers/email/sendgrid.js +162 -0
- package/dist/providers/email/sendgrid.js.map +1 -0
- package/dist/providers/finance/index.d.ts +19 -0
- package/dist/providers/finance/index.d.ts.map +1 -0
- package/dist/providers/finance/index.js +18 -0
- package/dist/providers/finance/index.js.map +1 -0
- package/dist/providers/finance/stripe.d.ts +25 -0
- package/dist/providers/finance/stripe.d.ts.map +1 -0
- package/dist/providers/finance/stripe.js +550 -0
- package/dist/providers/finance/stripe.js.map +1 -0
- package/dist/providers/forms/index.d.ts +19 -0
- package/dist/providers/forms/index.d.ts.map +1 -0
- package/dist/providers/forms/index.js +18 -0
- package/dist/providers/forms/index.js.map +1 -0
- package/dist/providers/forms/typeform.d.ts +25 -0
- package/dist/providers/forms/typeform.d.ts.map +1 -0
- package/dist/providers/forms/typeform.js +501 -0
- package/dist/providers/forms/typeform.js.map +1 -0
- package/dist/providers/index.d.ts +56 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +124 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/knowledge/index.d.ts +19 -0
- package/dist/providers/knowledge/index.d.ts.map +1 -0
- package/dist/providers/knowledge/index.js +18 -0
- package/dist/providers/knowledge/index.js.map +1 -0
- package/dist/providers/knowledge/notion.d.ts +25 -0
- package/dist/providers/knowledge/notion.d.ts.map +1 -0
- package/dist/providers/knowledge/notion.js +390 -0
- package/dist/providers/knowledge/notion.js.map +1 -0
- package/dist/providers/marketing/index.d.ts +19 -0
- package/dist/providers/marketing/index.d.ts.map +1 -0
- package/dist/providers/marketing/index.js +18 -0
- package/dist/providers/marketing/index.js.map +1 -0
- package/dist/providers/marketing/mailchimp.d.ts +25 -0
- package/dist/providers/marketing/mailchimp.d.ts.map +1 -0
- package/dist/providers/marketing/mailchimp.js +444 -0
- package/dist/providers/marketing/mailchimp.js.map +1 -0
- package/dist/providers/media/cloudinary.d.ts +25 -0
- package/dist/providers/media/cloudinary.d.ts.map +1 -0
- package/dist/providers/media/cloudinary.js +319 -0
- package/dist/providers/media/cloudinary.js.map +1 -0
- package/dist/providers/media/index.d.ts +19 -0
- package/dist/providers/media/index.d.ts.map +1 -0
- package/dist/providers/media/index.js +18 -0
- package/dist/providers/media/index.js.map +1 -0
- package/dist/providers/messaging/index.d.ts +24 -0
- package/dist/providers/messaging/index.d.ts.map +1 -0
- package/dist/providers/messaging/index.js +21 -0
- package/dist/providers/messaging/index.js.map +1 -0
- package/dist/providers/messaging/slack.d.ts +25 -0
- package/dist/providers/messaging/slack.d.ts.map +1 -0
- package/dist/providers/messaging/slack.js +394 -0
- package/dist/providers/messaging/slack.js.map +1 -0
- package/dist/providers/messaging/twilio-sms.d.ts +25 -0
- package/dist/providers/messaging/twilio-sms.d.ts.map +1 -0
- package/dist/providers/messaging/twilio-sms.js +250 -0
- package/dist/providers/messaging/twilio-sms.js.map +1 -0
- package/dist/providers/project-management/index.d.ts +19 -0
- package/dist/providers/project-management/index.d.ts.map +1 -0
- package/dist/providers/project-management/index.js +18 -0
- package/dist/providers/project-management/index.js.map +1 -0
- package/dist/providers/project-management/linear.d.ts +25 -0
- package/dist/providers/project-management/linear.d.ts.map +1 -0
- package/dist/providers/project-management/linear.js +576 -0
- package/dist/providers/project-management/linear.js.map +1 -0
- package/dist/providers/registry.d.ts +41 -0
- package/dist/providers/registry.d.ts.map +1 -0
- package/dist/providers/registry.js +87 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/spreadsheet/google-sheets.d.ts +25 -0
- package/dist/providers/spreadsheet/google-sheets.d.ts.map +1 -0
- package/dist/providers/spreadsheet/google-sheets.js +376 -0
- package/dist/providers/spreadsheet/google-sheets.js.map +1 -0
- package/dist/providers/spreadsheet/index.d.ts +20 -0
- package/dist/providers/spreadsheet/index.d.ts.map +1 -0
- package/dist/providers/spreadsheet/index.js +21 -0
- package/dist/providers/spreadsheet/index.js.map +1 -0
- package/dist/providers/spreadsheet/xlsx.d.ts +26 -0
- package/dist/providers/spreadsheet/xlsx.d.ts.map +1 -0
- package/dist/providers/spreadsheet/xlsx.js +424 -0
- package/dist/providers/spreadsheet/xlsx.js.map +1 -0
- package/dist/providers/storage/index.d.ts +30 -0
- package/dist/providers/storage/index.d.ts.map +1 -0
- package/dist/providers/storage/index.js +25 -0
- package/dist/providers/storage/index.js.map +1 -0
- package/dist/providers/storage/s3.d.ts +25 -0
- package/dist/providers/storage/s3.d.ts.map +1 -0
- package/dist/providers/storage/s3.js +420 -0
- package/dist/providers/storage/s3.js.map +1 -0
- package/dist/providers/support/index.d.ts +19 -0
- package/dist/providers/support/index.d.ts.map +1 -0
- package/dist/providers/support/index.js +18 -0
- package/dist/providers/support/index.js.map +1 -0
- package/dist/providers/support/zendesk.d.ts +25 -0
- package/dist/providers/support/zendesk.d.ts.map +1 -0
- package/dist/providers/support/zendesk.js +374 -0
- package/dist/providers/support/zendesk.js.map +1 -0
- package/dist/providers/tasks/index.d.ts +19 -0
- package/dist/providers/tasks/index.d.ts.map +1 -0
- package/dist/providers/tasks/index.js +18 -0
- package/dist/providers/tasks/index.js.map +1 -0
- package/dist/providers/tasks/todoist.d.ts +25 -0
- package/dist/providers/tasks/todoist.d.ts.map +1 -0
- package/dist/providers/tasks/todoist.js +287 -0
- package/dist/providers/tasks/todoist.js.map +1 -0
- package/dist/providers/types.d.ts +1753 -0
- package/dist/providers/types.d.ts.map +1 -0
- package/dist/providers/types.js +10 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/providers/video-conferencing/google-meet.d.ts +26 -0
- package/dist/providers/video-conferencing/google-meet.d.ts.map +1 -0
- package/dist/providers/video-conferencing/google-meet.js +287 -0
- package/dist/providers/video-conferencing/google-meet.js.map +1 -0
- package/dist/providers/video-conferencing/index.d.ts +22 -0
- package/dist/providers/video-conferencing/index.d.ts.map +1 -0
- package/dist/providers/video-conferencing/index.js +32 -0
- package/dist/providers/video-conferencing/index.js.map +1 -0
- package/dist/providers/video-conferencing/jitsi.d.ts +26 -0
- package/dist/providers/video-conferencing/jitsi.d.ts.map +1 -0
- package/dist/providers/video-conferencing/jitsi.js +255 -0
- package/dist/providers/video-conferencing/jitsi.js.map +1 -0
- package/dist/providers/video-conferencing/teams.d.ts +26 -0
- package/dist/providers/video-conferencing/teams.d.ts.map +1 -0
- package/dist/providers/video-conferencing/teams.js +271 -0
- package/dist/providers/video-conferencing/teams.js.map +1 -0
- package/dist/providers/video-conferencing/zoom.d.ts +25 -0
- package/dist/providers/video-conferencing/zoom.d.ts.map +1 -0
- package/dist/providers/video-conferencing/zoom.js +333 -0
- package/dist/providers/video-conferencing/zoom.js.map +1 -0
- package/dist/providers/voice/vapi.d.ts +27 -0
- package/dist/providers/voice/vapi.d.ts.map +1 -0
- package/dist/providers/voice/vapi.js +440 -0
- package/dist/providers/voice/vapi.js.map +1 -0
- package/dist/registry.d.ts +38 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +129 -0
- package/dist/registry.js.map +1 -0
- package/dist/tools/communication.d.ts +94 -0
- package/dist/tools/communication.d.ts.map +1 -0
- package/dist/tools/communication.js +185 -0
- package/dist/tools/communication.js.map +1 -0
- package/dist/tools/data.d.ts +61 -0
- package/dist/tools/data.d.ts.map +1 -0
- package/dist/tools/data.js +206 -0
- package/dist/tools/data.js.map +1 -0
- package/dist/tools/index.d.ts +12 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +12 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/web.d.ts +45 -0
- package/dist/tools/web.d.ts.map +1 -0
- package/dist/tools/web.js +138 -0
- package/dist/tools/web.js.map +1 -0
- package/dist/types.d.ts +330 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +11 -0
- package/dist/types.js.map +1 -0
- package/package.json +45 -0
- package/src/define.ts +321 -0
- package/src/entities/advertising.ts +1086 -0
- package/src/entities/ai.ts +835 -0
- package/src/entities/analytics.ts +1690 -0
- package/src/entities/automation.ts +669 -0
- package/src/entities/communication.ts +1255 -0
- package/src/entities/crm.ts +1481 -0
- package/src/entities/design.ts +606 -0
- package/src/entities/development.ts +2392 -0
- package/src/entities/document.ts +930 -0
- package/src/entities/ecommerce.ts +1539 -0
- package/src/entities/experiment.ts +1139 -0
- package/src/entities/finance.ts +3907 -0
- package/src/entities/forms.ts +2021 -0
- package/src/entities/hr.ts +725 -0
- package/src/entities/identity.ts +1093 -0
- package/src/entities/index.ts +731 -0
- package/src/entities/infrastructure.ts +1254 -0
- package/src/entities/knowledge.ts +1547 -0
- package/src/entities/marketing.ts +1718 -0
- package/src/entities/media.ts +1747 -0
- package/src/entities/notification.ts +1260 -0
- package/src/entities/presentation.ts +1360 -0
- package/src/entities/productivity.ts +1411 -0
- package/src/entities/project-management.ts +1222 -0
- package/src/entities/recruiting.ts +797 -0
- package/src/entities/shipping.ts +566 -0
- package/src/entities/signature.ts +1204 -0
- package/src/entities/site.ts +244 -0
- package/src/entities/spreadsheet.ts +1434 -0
- package/src/entities/storage.ts +1290 -0
- package/src/entities/support.ts +1267 -0
- package/src/entities/video-conferencing.ts +1874 -0
- package/src/entities/video.ts +1035 -0
- package/src/entities.ts +1795 -0
- package/src/index.ts +176 -0
- package/src/providers/analytics/index.ts +21 -0
- package/src/providers/analytics/mixpanel.ts +311 -0
- package/src/providers/calendar/cal-com.ts +435 -0
- package/src/providers/calendar/google-calendar.ts +412 -0
- package/src/providers/calendar/index.ts +24 -0
- package/src/providers/crm/hubspot.ts +667 -0
- package/src/providers/crm/index.ts +21 -0
- package/src/providers/development/github.ts +608 -0
- package/src/providers/development/index.ts +21 -0
- package/src/providers/ecommerce/index.ts +21 -0
- package/src/providers/ecommerce/shopify.ts +451 -0
- package/src/providers/email/index.ts +24 -0
- package/src/providers/email/resend.ts +301 -0
- package/src/providers/email/sendgrid.ts +196 -0
- package/src/providers/finance/index.ts +21 -0
- package/src/providers/finance/stripe.ts +665 -0
- package/src/providers/forms/index.ts +21 -0
- package/src/providers/forms/typeform.ts +598 -0
- package/src/providers/index.ts +281 -0
- package/src/providers/knowledge/index.ts +21 -0
- package/src/providers/knowledge/notion.ts +497 -0
- package/src/providers/marketing/index.ts +21 -0
- package/src/providers/marketing/mailchimp.ts +656 -0
- package/src/providers/media/cloudinary.ts +373 -0
- package/src/providers/media/index.ts +21 -0
- package/src/providers/messaging/index.ts +24 -0
- package/src/providers/messaging/slack.ts +487 -0
- package/src/providers/messaging/twilio-sms.ts +301 -0
- package/src/providers/project-management/index.ts +21 -0
- package/src/providers/project-management/linear.ts +693 -0
- package/src/providers/registry.ts +119 -0
- package/src/providers/spreadsheet/google-sheets.ts +464 -0
- package/src/providers/spreadsheet/index.ts +24 -0
- package/src/providers/spreadsheet/xlsx.ts +542 -0
- package/src/providers/storage/index.ts +35 -0
- package/src/providers/storage/s3.ts +513 -0
- package/src/providers/support/index.ts +21 -0
- package/src/providers/support/zendesk.ts +417 -0
- package/src/providers/tasks/index.ts +21 -0
- package/src/providers/tasks/todoist.ts +407 -0
- package/src/providers/types.ts +2113 -0
- package/src/providers/video-conferencing/google-meet.ts +412 -0
- package/src/providers/video-conferencing/index.ts +35 -0
- package/src/providers/video-conferencing/jitsi.ts +324 -0
- package/src/providers/video-conferencing/teams.ts +408 -0
- package/src/providers/video-conferencing/zoom.ts +451 -0
- package/src/registry.ts +172 -0
- package/src/tools/communication.ts +256 -0
- package/src/tools/data.ts +236 -0
- package/src/tools/index.ts +12 -0
- package/src/tools/web.ts +161 -0
- package/src/types.ts +539 -0
- package/test/define.test.ts +367 -0
- package/test/registry.test.ts +444 -0
- package/test/tools.test.ts +453 -0
- package/tsconfig.json +20 -0
|
@@ -0,0 +1,1260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Notification Entity Types (Nouns)
|
|
3
|
+
*
|
|
4
|
+
* Notification and messaging primitives for push, SMS, email, and in-app notifications.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { Noun } from 'ai-database'
|
|
10
|
+
|
|
11
|
+
// =============================================================================
|
|
12
|
+
// Notification
|
|
13
|
+
// =============================================================================
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Notification entity
|
|
17
|
+
*
|
|
18
|
+
* A notification message sent to users through various channels.
|
|
19
|
+
*/
|
|
20
|
+
export const Notification: Noun = {
|
|
21
|
+
singular: 'notification',
|
|
22
|
+
plural: 'notifications',
|
|
23
|
+
description: 'A notification message sent to users through various channels',
|
|
24
|
+
|
|
25
|
+
properties: {
|
|
26
|
+
id: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
description: 'Unique notification identifier',
|
|
29
|
+
},
|
|
30
|
+
title: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
description: 'Notification title',
|
|
33
|
+
},
|
|
34
|
+
body: {
|
|
35
|
+
type: 'string',
|
|
36
|
+
description: 'Notification body content',
|
|
37
|
+
},
|
|
38
|
+
channel: {
|
|
39
|
+
type: 'string',
|
|
40
|
+
description: 'Delivery channel: email, sms, push, in-app, webhook',
|
|
41
|
+
examples: ['email', 'sms', 'push', 'in-app', 'webhook'],
|
|
42
|
+
},
|
|
43
|
+
status: {
|
|
44
|
+
type: 'string',
|
|
45
|
+
description: 'Delivery status',
|
|
46
|
+
examples: ['pending', 'sent', 'delivered', 'failed', 'bounced'],
|
|
47
|
+
},
|
|
48
|
+
priority: {
|
|
49
|
+
type: 'string',
|
|
50
|
+
optional: true,
|
|
51
|
+
description: 'Notification priority',
|
|
52
|
+
examples: ['low', 'normal', 'high', 'urgent'],
|
|
53
|
+
},
|
|
54
|
+
category: {
|
|
55
|
+
type: 'string',
|
|
56
|
+
optional: true,
|
|
57
|
+
description: 'Notification category for grouping',
|
|
58
|
+
},
|
|
59
|
+
recipientId: {
|
|
60
|
+
type: 'string',
|
|
61
|
+
description: 'Recipient user ID',
|
|
62
|
+
},
|
|
63
|
+
recipientEmail: {
|
|
64
|
+
type: 'string',
|
|
65
|
+
optional: true,
|
|
66
|
+
description: 'Recipient email address',
|
|
67
|
+
},
|
|
68
|
+
recipientPhone: {
|
|
69
|
+
type: 'string',
|
|
70
|
+
optional: true,
|
|
71
|
+
description: 'Recipient phone number',
|
|
72
|
+
},
|
|
73
|
+
recipientDeviceToken: {
|
|
74
|
+
type: 'string',
|
|
75
|
+
optional: true,
|
|
76
|
+
description: 'Recipient device token for push',
|
|
77
|
+
},
|
|
78
|
+
senderId: {
|
|
79
|
+
type: 'string',
|
|
80
|
+
optional: true,
|
|
81
|
+
description: 'Sender user or system ID',
|
|
82
|
+
},
|
|
83
|
+
templateId: {
|
|
84
|
+
type: 'string',
|
|
85
|
+
optional: true,
|
|
86
|
+
description: 'Template used for this notification',
|
|
87
|
+
},
|
|
88
|
+
data: {
|
|
89
|
+
type: 'json',
|
|
90
|
+
optional: true,
|
|
91
|
+
description: 'Template variables and custom data',
|
|
92
|
+
},
|
|
93
|
+
scheduledAt: {
|
|
94
|
+
type: 'datetime',
|
|
95
|
+
optional: true,
|
|
96
|
+
description: 'Scheduled send time',
|
|
97
|
+
},
|
|
98
|
+
sentAt: {
|
|
99
|
+
type: 'datetime',
|
|
100
|
+
optional: true,
|
|
101
|
+
description: 'Actual send time',
|
|
102
|
+
},
|
|
103
|
+
deliveredAt: {
|
|
104
|
+
type: 'datetime',
|
|
105
|
+
optional: true,
|
|
106
|
+
description: 'Delivery confirmation time',
|
|
107
|
+
},
|
|
108
|
+
readAt: {
|
|
109
|
+
type: 'datetime',
|
|
110
|
+
optional: true,
|
|
111
|
+
description: 'Time when notification was read',
|
|
112
|
+
},
|
|
113
|
+
clickedAt: {
|
|
114
|
+
type: 'datetime',
|
|
115
|
+
optional: true,
|
|
116
|
+
description: 'Time when notification was clicked',
|
|
117
|
+
},
|
|
118
|
+
expiresAt: {
|
|
119
|
+
type: 'datetime',
|
|
120
|
+
optional: true,
|
|
121
|
+
description: 'Notification expiration time',
|
|
122
|
+
},
|
|
123
|
+
actionUrl: {
|
|
124
|
+
type: 'url',
|
|
125
|
+
optional: true,
|
|
126
|
+
description: 'URL to open when clicked',
|
|
127
|
+
},
|
|
128
|
+
imageUrl: {
|
|
129
|
+
type: 'url',
|
|
130
|
+
optional: true,
|
|
131
|
+
description: 'Image URL for rich notifications',
|
|
132
|
+
},
|
|
133
|
+
icon: {
|
|
134
|
+
type: 'string',
|
|
135
|
+
optional: true,
|
|
136
|
+
description: 'Icon identifier or URL',
|
|
137
|
+
},
|
|
138
|
+
badge: {
|
|
139
|
+
type: 'number',
|
|
140
|
+
optional: true,
|
|
141
|
+
description: 'Badge count for app icon',
|
|
142
|
+
},
|
|
143
|
+
sound: {
|
|
144
|
+
type: 'string',
|
|
145
|
+
optional: true,
|
|
146
|
+
description: 'Sound to play on delivery',
|
|
147
|
+
},
|
|
148
|
+
tags: {
|
|
149
|
+
type: 'string',
|
|
150
|
+
array: true,
|
|
151
|
+
optional: true,
|
|
152
|
+
description: 'Tags for filtering and analytics',
|
|
153
|
+
},
|
|
154
|
+
metadata: {
|
|
155
|
+
type: 'json',
|
|
156
|
+
optional: true,
|
|
157
|
+
description: 'Additional metadata',
|
|
158
|
+
},
|
|
159
|
+
errorMessage: {
|
|
160
|
+
type: 'string',
|
|
161
|
+
optional: true,
|
|
162
|
+
description: 'Error message if delivery failed',
|
|
163
|
+
},
|
|
164
|
+
retryCount: {
|
|
165
|
+
type: 'number',
|
|
166
|
+
optional: true,
|
|
167
|
+
description: 'Number of delivery retry attempts',
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
|
|
171
|
+
relationships: {
|
|
172
|
+
recipient: {
|
|
173
|
+
type: 'User',
|
|
174
|
+
description: 'User receiving the notification',
|
|
175
|
+
},
|
|
176
|
+
template: {
|
|
177
|
+
type: 'NotificationTemplate',
|
|
178
|
+
required: false,
|
|
179
|
+
description: 'Template used',
|
|
180
|
+
},
|
|
181
|
+
campaign: {
|
|
182
|
+
type: 'NotificationCampaign',
|
|
183
|
+
required: false,
|
|
184
|
+
description: 'Campaign this notification belongs to',
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
|
|
188
|
+
actions: [
|
|
189
|
+
'send',
|
|
190
|
+
'schedule',
|
|
191
|
+
'cancel',
|
|
192
|
+
'retry',
|
|
193
|
+
'read',
|
|
194
|
+
'click',
|
|
195
|
+
],
|
|
196
|
+
|
|
197
|
+
events: [
|
|
198
|
+
'sent',
|
|
199
|
+
'delivered',
|
|
200
|
+
'failed',
|
|
201
|
+
'bounced',
|
|
202
|
+
'read',
|
|
203
|
+
'clicked',
|
|
204
|
+
],
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// =============================================================================
|
|
208
|
+
// NotificationTemplate
|
|
209
|
+
// =============================================================================
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* NotificationTemplate entity
|
|
213
|
+
*
|
|
214
|
+
* A reusable template for notifications.
|
|
215
|
+
*/
|
|
216
|
+
export const NotificationTemplate: Noun = {
|
|
217
|
+
singular: 'notification-template',
|
|
218
|
+
plural: 'notification-templates',
|
|
219
|
+
description: 'A reusable template for notifications',
|
|
220
|
+
|
|
221
|
+
properties: {
|
|
222
|
+
id: {
|
|
223
|
+
type: 'string',
|
|
224
|
+
description: 'Unique template identifier',
|
|
225
|
+
},
|
|
226
|
+
name: {
|
|
227
|
+
type: 'string',
|
|
228
|
+
description: 'Template name',
|
|
229
|
+
},
|
|
230
|
+
slug: {
|
|
231
|
+
type: 'string',
|
|
232
|
+
description: 'URL-friendly identifier',
|
|
233
|
+
},
|
|
234
|
+
description: {
|
|
235
|
+
type: 'string',
|
|
236
|
+
optional: true,
|
|
237
|
+
description: 'Template description',
|
|
238
|
+
},
|
|
239
|
+
channel: {
|
|
240
|
+
type: 'string',
|
|
241
|
+
description: 'Target channel: email, sms, push, in-app',
|
|
242
|
+
examples: ['email', 'sms', 'push', 'in-app'],
|
|
243
|
+
},
|
|
244
|
+
subject: {
|
|
245
|
+
type: 'string',
|
|
246
|
+
optional: true,
|
|
247
|
+
description: 'Subject line for email notifications',
|
|
248
|
+
},
|
|
249
|
+
title: {
|
|
250
|
+
type: 'string',
|
|
251
|
+
optional: true,
|
|
252
|
+
description: 'Title template with variables',
|
|
253
|
+
},
|
|
254
|
+
body: {
|
|
255
|
+
type: 'string',
|
|
256
|
+
description: 'Body template with variables',
|
|
257
|
+
},
|
|
258
|
+
htmlBody: {
|
|
259
|
+
type: 'string',
|
|
260
|
+
optional: true,
|
|
261
|
+
description: 'HTML body for email notifications',
|
|
262
|
+
},
|
|
263
|
+
variables: {
|
|
264
|
+
type: 'string',
|
|
265
|
+
array: true,
|
|
266
|
+
optional: true,
|
|
267
|
+
description: 'List of template variables',
|
|
268
|
+
},
|
|
269
|
+
defaultData: {
|
|
270
|
+
type: 'json',
|
|
271
|
+
optional: true,
|
|
272
|
+
description: 'Default values for variables',
|
|
273
|
+
},
|
|
274
|
+
category: {
|
|
275
|
+
type: 'string',
|
|
276
|
+
optional: true,
|
|
277
|
+
description: 'Template category',
|
|
278
|
+
},
|
|
279
|
+
locale: {
|
|
280
|
+
type: 'string',
|
|
281
|
+
optional: true,
|
|
282
|
+
description: 'Template locale/language',
|
|
283
|
+
},
|
|
284
|
+
version: {
|
|
285
|
+
type: 'number',
|
|
286
|
+
optional: true,
|
|
287
|
+
description: 'Template version number',
|
|
288
|
+
},
|
|
289
|
+
isActive: {
|
|
290
|
+
type: 'boolean',
|
|
291
|
+
optional: true,
|
|
292
|
+
description: 'Whether template is active',
|
|
293
|
+
},
|
|
294
|
+
},
|
|
295
|
+
|
|
296
|
+
relationships: {
|
|
297
|
+
notifications: {
|
|
298
|
+
type: 'Notification[]',
|
|
299
|
+
backref: 'template',
|
|
300
|
+
description: 'Notifications using this template',
|
|
301
|
+
},
|
|
302
|
+
translations: {
|
|
303
|
+
type: 'NotificationTemplate[]',
|
|
304
|
+
required: false,
|
|
305
|
+
description: 'Translated versions',
|
|
306
|
+
},
|
|
307
|
+
},
|
|
308
|
+
|
|
309
|
+
actions: [
|
|
310
|
+
'create',
|
|
311
|
+
'update',
|
|
312
|
+
'preview',
|
|
313
|
+
'duplicate',
|
|
314
|
+
'activate',
|
|
315
|
+
'deactivate',
|
|
316
|
+
],
|
|
317
|
+
|
|
318
|
+
events: [
|
|
319
|
+
'created',
|
|
320
|
+
'updated',
|
|
321
|
+
'activated',
|
|
322
|
+
'deactivated',
|
|
323
|
+
],
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
// =============================================================================
|
|
327
|
+
// NotificationCampaign
|
|
328
|
+
// =============================================================================
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* NotificationCampaign entity
|
|
332
|
+
*
|
|
333
|
+
* A campaign for sending bulk notifications.
|
|
334
|
+
*/
|
|
335
|
+
export const NotificationCampaign: Noun = {
|
|
336
|
+
singular: 'notification-campaign',
|
|
337
|
+
plural: 'notification-campaigns',
|
|
338
|
+
description: 'A campaign for sending bulk notifications',
|
|
339
|
+
|
|
340
|
+
properties: {
|
|
341
|
+
id: {
|
|
342
|
+
type: 'string',
|
|
343
|
+
description: 'Unique campaign identifier',
|
|
344
|
+
},
|
|
345
|
+
name: {
|
|
346
|
+
type: 'string',
|
|
347
|
+
description: 'Campaign name',
|
|
348
|
+
},
|
|
349
|
+
description: {
|
|
350
|
+
type: 'string',
|
|
351
|
+
optional: true,
|
|
352
|
+
description: 'Campaign description',
|
|
353
|
+
},
|
|
354
|
+
status: {
|
|
355
|
+
type: 'string',
|
|
356
|
+
description: 'Campaign status',
|
|
357
|
+
examples: ['draft', 'scheduled', 'running', 'paused', 'completed', 'cancelled'],
|
|
358
|
+
},
|
|
359
|
+
channel: {
|
|
360
|
+
type: 'string',
|
|
361
|
+
description: 'Notification channel',
|
|
362
|
+
},
|
|
363
|
+
templateId: {
|
|
364
|
+
type: 'string',
|
|
365
|
+
optional: true,
|
|
366
|
+
description: 'Template ID to use',
|
|
367
|
+
},
|
|
368
|
+
segmentId: {
|
|
369
|
+
type: 'string',
|
|
370
|
+
optional: true,
|
|
371
|
+
description: 'Target audience segment',
|
|
372
|
+
},
|
|
373
|
+
audienceFilter: {
|
|
374
|
+
type: 'json',
|
|
375
|
+
optional: true,
|
|
376
|
+
description: 'Custom audience filter criteria',
|
|
377
|
+
},
|
|
378
|
+
scheduledAt: {
|
|
379
|
+
type: 'datetime',
|
|
380
|
+
optional: true,
|
|
381
|
+
description: 'Scheduled start time',
|
|
382
|
+
},
|
|
383
|
+
startedAt: {
|
|
384
|
+
type: 'datetime',
|
|
385
|
+
optional: true,
|
|
386
|
+
description: 'Actual start time',
|
|
387
|
+
},
|
|
388
|
+
completedAt: {
|
|
389
|
+
type: 'datetime',
|
|
390
|
+
optional: true,
|
|
391
|
+
description: 'Completion time',
|
|
392
|
+
},
|
|
393
|
+
totalRecipients: {
|
|
394
|
+
type: 'number',
|
|
395
|
+
optional: true,
|
|
396
|
+
description: 'Total number of recipients',
|
|
397
|
+
},
|
|
398
|
+
sentCount: {
|
|
399
|
+
type: 'number',
|
|
400
|
+
optional: true,
|
|
401
|
+
description: 'Number of notifications sent',
|
|
402
|
+
},
|
|
403
|
+
deliveredCount: {
|
|
404
|
+
type: 'number',
|
|
405
|
+
optional: true,
|
|
406
|
+
description: 'Number delivered',
|
|
407
|
+
},
|
|
408
|
+
failedCount: {
|
|
409
|
+
type: 'number',
|
|
410
|
+
optional: true,
|
|
411
|
+
description: 'Number failed',
|
|
412
|
+
},
|
|
413
|
+
openRate: {
|
|
414
|
+
type: 'number',
|
|
415
|
+
optional: true,
|
|
416
|
+
description: 'Open rate percentage',
|
|
417
|
+
},
|
|
418
|
+
clickRate: {
|
|
419
|
+
type: 'number',
|
|
420
|
+
optional: true,
|
|
421
|
+
description: 'Click rate percentage',
|
|
422
|
+
},
|
|
423
|
+
throttleRate: {
|
|
424
|
+
type: 'number',
|
|
425
|
+
optional: true,
|
|
426
|
+
description: 'Messages per second limit',
|
|
427
|
+
},
|
|
428
|
+
},
|
|
429
|
+
|
|
430
|
+
relationships: {
|
|
431
|
+
notifications: {
|
|
432
|
+
type: 'Notification[]',
|
|
433
|
+
backref: 'campaign',
|
|
434
|
+
description: 'Notifications in this campaign',
|
|
435
|
+
},
|
|
436
|
+
template: {
|
|
437
|
+
type: 'NotificationTemplate',
|
|
438
|
+
required: false,
|
|
439
|
+
description: 'Template used',
|
|
440
|
+
},
|
|
441
|
+
segment: {
|
|
442
|
+
type: 'Segment',
|
|
443
|
+
required: false,
|
|
444
|
+
description: 'Target segment',
|
|
445
|
+
},
|
|
446
|
+
},
|
|
447
|
+
|
|
448
|
+
actions: [
|
|
449
|
+
'create',
|
|
450
|
+
'schedule',
|
|
451
|
+
'start',
|
|
452
|
+
'pause',
|
|
453
|
+
'resume',
|
|
454
|
+
'cancel',
|
|
455
|
+
],
|
|
456
|
+
|
|
457
|
+
events: [
|
|
458
|
+
'created',
|
|
459
|
+
'scheduled',
|
|
460
|
+
'started',
|
|
461
|
+
'paused',
|
|
462
|
+
'resumed',
|
|
463
|
+
'completed',
|
|
464
|
+
'cancelled',
|
|
465
|
+
],
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
// =============================================================================
|
|
469
|
+
// SMS
|
|
470
|
+
// =============================================================================
|
|
471
|
+
|
|
472
|
+
/**
|
|
473
|
+
* SMS entity
|
|
474
|
+
*
|
|
475
|
+
* An SMS text message.
|
|
476
|
+
*/
|
|
477
|
+
export const SMS: Noun = {
|
|
478
|
+
singular: 'sms',
|
|
479
|
+
plural: 'sms-messages',
|
|
480
|
+
description: 'An SMS text message',
|
|
481
|
+
|
|
482
|
+
properties: {
|
|
483
|
+
id: {
|
|
484
|
+
type: 'string',
|
|
485
|
+
description: 'Unique SMS identifier',
|
|
486
|
+
},
|
|
487
|
+
from: {
|
|
488
|
+
type: 'string',
|
|
489
|
+
description: 'Sender phone number',
|
|
490
|
+
},
|
|
491
|
+
to: {
|
|
492
|
+
type: 'string',
|
|
493
|
+
description: 'Recipient phone number',
|
|
494
|
+
},
|
|
495
|
+
body: {
|
|
496
|
+
type: 'string',
|
|
497
|
+
description: 'Message body (max 1600 chars)',
|
|
498
|
+
},
|
|
499
|
+
status: {
|
|
500
|
+
type: 'string',
|
|
501
|
+
description: 'Message status',
|
|
502
|
+
examples: ['queued', 'sending', 'sent', 'delivered', 'failed', 'undelivered'],
|
|
503
|
+
},
|
|
504
|
+
direction: {
|
|
505
|
+
type: 'string',
|
|
506
|
+
description: 'Message direction',
|
|
507
|
+
examples: ['inbound', 'outbound'],
|
|
508
|
+
},
|
|
509
|
+
segments: {
|
|
510
|
+
type: 'number',
|
|
511
|
+
optional: true,
|
|
512
|
+
description: 'Number of message segments',
|
|
513
|
+
},
|
|
514
|
+
encoding: {
|
|
515
|
+
type: 'string',
|
|
516
|
+
optional: true,
|
|
517
|
+
description: 'Message encoding: GSM-7, UCS-2',
|
|
518
|
+
},
|
|
519
|
+
price: {
|
|
520
|
+
type: 'number',
|
|
521
|
+
optional: true,
|
|
522
|
+
description: 'Message cost',
|
|
523
|
+
},
|
|
524
|
+
currency: {
|
|
525
|
+
type: 'string',
|
|
526
|
+
optional: true,
|
|
527
|
+
description: 'Currency for price',
|
|
528
|
+
},
|
|
529
|
+
carrier: {
|
|
530
|
+
type: 'string',
|
|
531
|
+
optional: true,
|
|
532
|
+
description: 'Recipient carrier name',
|
|
533
|
+
},
|
|
534
|
+
countryCode: {
|
|
535
|
+
type: 'string',
|
|
536
|
+
optional: true,
|
|
537
|
+
description: 'Recipient country code',
|
|
538
|
+
},
|
|
539
|
+
errorCode: {
|
|
540
|
+
type: 'string',
|
|
541
|
+
optional: true,
|
|
542
|
+
description: 'Error code if failed',
|
|
543
|
+
},
|
|
544
|
+
errorMessage: {
|
|
545
|
+
type: 'string',
|
|
546
|
+
optional: true,
|
|
547
|
+
description: 'Error message if failed',
|
|
548
|
+
},
|
|
549
|
+
mediaUrls: {
|
|
550
|
+
type: 'url',
|
|
551
|
+
array: true,
|
|
552
|
+
optional: true,
|
|
553
|
+
description: 'Media URLs for MMS',
|
|
554
|
+
},
|
|
555
|
+
messagingServiceId: {
|
|
556
|
+
type: 'string',
|
|
557
|
+
optional: true,
|
|
558
|
+
description: 'Messaging service ID',
|
|
559
|
+
},
|
|
560
|
+
conversationId: {
|
|
561
|
+
type: 'string',
|
|
562
|
+
optional: true,
|
|
563
|
+
description: 'Conversation thread ID',
|
|
564
|
+
},
|
|
565
|
+
queuedAt: {
|
|
566
|
+
type: 'datetime',
|
|
567
|
+
optional: true,
|
|
568
|
+
description: 'Time queued for sending',
|
|
569
|
+
},
|
|
570
|
+
sentAt: {
|
|
571
|
+
type: 'datetime',
|
|
572
|
+
optional: true,
|
|
573
|
+
description: 'Time sent to carrier',
|
|
574
|
+
},
|
|
575
|
+
deliveredAt: {
|
|
576
|
+
type: 'datetime',
|
|
577
|
+
optional: true,
|
|
578
|
+
description: 'Time delivered to recipient',
|
|
579
|
+
},
|
|
580
|
+
},
|
|
581
|
+
|
|
582
|
+
relationships: {
|
|
583
|
+
conversation: {
|
|
584
|
+
type: 'SMSConversation',
|
|
585
|
+
required: false,
|
|
586
|
+
description: 'Parent conversation thread',
|
|
587
|
+
},
|
|
588
|
+
notification: {
|
|
589
|
+
type: 'Notification',
|
|
590
|
+
required: false,
|
|
591
|
+
description: 'Parent notification if triggered by one',
|
|
592
|
+
},
|
|
593
|
+
},
|
|
594
|
+
|
|
595
|
+
actions: [
|
|
596
|
+
'send',
|
|
597
|
+
'schedule',
|
|
598
|
+
'cancel',
|
|
599
|
+
'redact',
|
|
600
|
+
],
|
|
601
|
+
|
|
602
|
+
events: [
|
|
603
|
+
'queued',
|
|
604
|
+
'sent',
|
|
605
|
+
'delivered',
|
|
606
|
+
'failed',
|
|
607
|
+
'received',
|
|
608
|
+
],
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
// =============================================================================
|
|
612
|
+
// SMSConversation
|
|
613
|
+
// =============================================================================
|
|
614
|
+
|
|
615
|
+
/**
|
|
616
|
+
* SMSConversation entity
|
|
617
|
+
*
|
|
618
|
+
* A conversation thread of SMS messages.
|
|
619
|
+
*/
|
|
620
|
+
export const SMSConversation: Noun = {
|
|
621
|
+
singular: 'sms-conversation',
|
|
622
|
+
plural: 'sms-conversations',
|
|
623
|
+
description: 'A conversation thread of SMS messages',
|
|
624
|
+
|
|
625
|
+
properties: {
|
|
626
|
+
id: {
|
|
627
|
+
type: 'string',
|
|
628
|
+
description: 'Unique conversation identifier',
|
|
629
|
+
},
|
|
630
|
+
participants: {
|
|
631
|
+
type: 'string',
|
|
632
|
+
array: true,
|
|
633
|
+
description: 'Phone numbers in the conversation',
|
|
634
|
+
},
|
|
635
|
+
status: {
|
|
636
|
+
type: 'string',
|
|
637
|
+
description: 'Conversation status',
|
|
638
|
+
examples: ['active', 'closed', 'archived'],
|
|
639
|
+
},
|
|
640
|
+
lastMessageAt: {
|
|
641
|
+
type: 'datetime',
|
|
642
|
+
optional: true,
|
|
643
|
+
description: 'Timestamp of last message',
|
|
644
|
+
},
|
|
645
|
+
lastMessagePreview: {
|
|
646
|
+
type: 'string',
|
|
647
|
+
optional: true,
|
|
648
|
+
description: 'Preview of last message',
|
|
649
|
+
},
|
|
650
|
+
messageCount: {
|
|
651
|
+
type: 'number',
|
|
652
|
+
optional: true,
|
|
653
|
+
description: 'Total message count',
|
|
654
|
+
},
|
|
655
|
+
unreadCount: {
|
|
656
|
+
type: 'number',
|
|
657
|
+
optional: true,
|
|
658
|
+
description: 'Unread message count',
|
|
659
|
+
},
|
|
660
|
+
assignedTo: {
|
|
661
|
+
type: 'string',
|
|
662
|
+
optional: true,
|
|
663
|
+
description: 'Assigned agent ID',
|
|
664
|
+
},
|
|
665
|
+
tags: {
|
|
666
|
+
type: 'string',
|
|
667
|
+
array: true,
|
|
668
|
+
optional: true,
|
|
669
|
+
description: 'Conversation tags',
|
|
670
|
+
},
|
|
671
|
+
metadata: {
|
|
672
|
+
type: 'json',
|
|
673
|
+
optional: true,
|
|
674
|
+
description: 'Custom metadata',
|
|
675
|
+
},
|
|
676
|
+
},
|
|
677
|
+
|
|
678
|
+
relationships: {
|
|
679
|
+
messages: {
|
|
680
|
+
type: 'SMS[]',
|
|
681
|
+
backref: 'conversation',
|
|
682
|
+
description: 'Messages in this conversation',
|
|
683
|
+
},
|
|
684
|
+
contact: {
|
|
685
|
+
type: 'Contact',
|
|
686
|
+
required: false,
|
|
687
|
+
description: 'Associated contact',
|
|
688
|
+
},
|
|
689
|
+
},
|
|
690
|
+
|
|
691
|
+
actions: [
|
|
692
|
+
'send',
|
|
693
|
+
'close',
|
|
694
|
+
'archive',
|
|
695
|
+
'assign',
|
|
696
|
+
'read',
|
|
697
|
+
],
|
|
698
|
+
|
|
699
|
+
events: [
|
|
700
|
+
'messageReceived',
|
|
701
|
+
'messageSent',
|
|
702
|
+
'closed',
|
|
703
|
+
'assigned',
|
|
704
|
+
],
|
|
705
|
+
}
|
|
706
|
+
|
|
707
|
+
// =============================================================================
|
|
708
|
+
// PushNotification
|
|
709
|
+
// =============================================================================
|
|
710
|
+
|
|
711
|
+
/**
|
|
712
|
+
* PushNotification entity
|
|
713
|
+
*
|
|
714
|
+
* A mobile push notification.
|
|
715
|
+
*/
|
|
716
|
+
export const PushNotification: Noun = {
|
|
717
|
+
singular: 'push-notification',
|
|
718
|
+
plural: 'push-notifications',
|
|
719
|
+
description: 'A mobile push notification',
|
|
720
|
+
|
|
721
|
+
properties: {
|
|
722
|
+
id: {
|
|
723
|
+
type: 'string',
|
|
724
|
+
description: 'Unique push notification identifier',
|
|
725
|
+
},
|
|
726
|
+
title: {
|
|
727
|
+
type: 'string',
|
|
728
|
+
description: 'Notification title',
|
|
729
|
+
},
|
|
730
|
+
body: {
|
|
731
|
+
type: 'string',
|
|
732
|
+
description: 'Notification body',
|
|
733
|
+
},
|
|
734
|
+
subtitle: {
|
|
735
|
+
type: 'string',
|
|
736
|
+
optional: true,
|
|
737
|
+
description: 'Notification subtitle (iOS)',
|
|
738
|
+
},
|
|
739
|
+
status: {
|
|
740
|
+
type: 'string',
|
|
741
|
+
description: 'Delivery status',
|
|
742
|
+
examples: ['pending', 'sent', 'delivered', 'failed'],
|
|
743
|
+
},
|
|
744
|
+
platform: {
|
|
745
|
+
type: 'string',
|
|
746
|
+
description: 'Target platform',
|
|
747
|
+
examples: ['ios', 'android', 'web'],
|
|
748
|
+
},
|
|
749
|
+
deviceToken: {
|
|
750
|
+
type: 'string',
|
|
751
|
+
description: 'Device push token',
|
|
752
|
+
},
|
|
753
|
+
userId: {
|
|
754
|
+
type: 'string',
|
|
755
|
+
optional: true,
|
|
756
|
+
description: 'Target user ID',
|
|
757
|
+
},
|
|
758
|
+
topic: {
|
|
759
|
+
type: 'string',
|
|
760
|
+
optional: true,
|
|
761
|
+
description: 'Push topic for topic-based delivery',
|
|
762
|
+
},
|
|
763
|
+
collapseKey: {
|
|
764
|
+
type: 'string',
|
|
765
|
+
optional: true,
|
|
766
|
+
description: 'Collapse key for grouping',
|
|
767
|
+
},
|
|
768
|
+
priority: {
|
|
769
|
+
type: 'string',
|
|
770
|
+
optional: true,
|
|
771
|
+
description: 'Delivery priority',
|
|
772
|
+
examples: ['normal', 'high'],
|
|
773
|
+
},
|
|
774
|
+
ttl: {
|
|
775
|
+
type: 'number',
|
|
776
|
+
optional: true,
|
|
777
|
+
description: 'Time to live in seconds',
|
|
778
|
+
},
|
|
779
|
+
badge: {
|
|
780
|
+
type: 'number',
|
|
781
|
+
optional: true,
|
|
782
|
+
description: 'Badge count to display',
|
|
783
|
+
},
|
|
784
|
+
sound: {
|
|
785
|
+
type: 'string',
|
|
786
|
+
optional: true,
|
|
787
|
+
description: 'Sound to play',
|
|
788
|
+
},
|
|
789
|
+
icon: {
|
|
790
|
+
type: 'string',
|
|
791
|
+
optional: true,
|
|
792
|
+
description: 'Notification icon (Android)',
|
|
793
|
+
},
|
|
794
|
+
image: {
|
|
795
|
+
type: 'url',
|
|
796
|
+
optional: true,
|
|
797
|
+
description: 'Image URL for rich notification',
|
|
798
|
+
},
|
|
799
|
+
clickAction: {
|
|
800
|
+
type: 'string',
|
|
801
|
+
optional: true,
|
|
802
|
+
description: 'Action to perform on click',
|
|
803
|
+
},
|
|
804
|
+
data: {
|
|
805
|
+
type: 'json',
|
|
806
|
+
optional: true,
|
|
807
|
+
description: 'Custom data payload',
|
|
808
|
+
},
|
|
809
|
+
category: {
|
|
810
|
+
type: 'string',
|
|
811
|
+
optional: true,
|
|
812
|
+
description: 'Notification category for actions',
|
|
813
|
+
},
|
|
814
|
+
threadId: {
|
|
815
|
+
type: 'string',
|
|
816
|
+
optional: true,
|
|
817
|
+
description: 'Thread ID for grouping (iOS)',
|
|
818
|
+
},
|
|
819
|
+
channelId: {
|
|
820
|
+
type: 'string',
|
|
821
|
+
optional: true,
|
|
822
|
+
description: 'Notification channel ID (Android)',
|
|
823
|
+
},
|
|
824
|
+
contentAvailable: {
|
|
825
|
+
type: 'boolean',
|
|
826
|
+
optional: true,
|
|
827
|
+
description: 'Enable background processing',
|
|
828
|
+
},
|
|
829
|
+
mutableContent: {
|
|
830
|
+
type: 'boolean',
|
|
831
|
+
optional: true,
|
|
832
|
+
description: 'Allow notification modification (iOS)',
|
|
833
|
+
},
|
|
834
|
+
sentAt: {
|
|
835
|
+
type: 'datetime',
|
|
836
|
+
optional: true,
|
|
837
|
+
description: 'Time sent to push service',
|
|
838
|
+
},
|
|
839
|
+
deliveredAt: {
|
|
840
|
+
type: 'datetime',
|
|
841
|
+
optional: true,
|
|
842
|
+
description: 'Time delivered to device',
|
|
843
|
+
},
|
|
844
|
+
openedAt: {
|
|
845
|
+
type: 'datetime',
|
|
846
|
+
optional: true,
|
|
847
|
+
description: 'Time notification was opened',
|
|
848
|
+
},
|
|
849
|
+
errorCode: {
|
|
850
|
+
type: 'string',
|
|
851
|
+
optional: true,
|
|
852
|
+
description: 'Error code if failed',
|
|
853
|
+
},
|
|
854
|
+
errorMessage: {
|
|
855
|
+
type: 'string',
|
|
856
|
+
optional: true,
|
|
857
|
+
description: 'Error message if failed',
|
|
858
|
+
},
|
|
859
|
+
},
|
|
860
|
+
|
|
861
|
+
relationships: {
|
|
862
|
+
device: {
|
|
863
|
+
type: 'Device',
|
|
864
|
+
description: 'Target device',
|
|
865
|
+
},
|
|
866
|
+
user: {
|
|
867
|
+
type: 'User',
|
|
868
|
+
required: false,
|
|
869
|
+
description: 'Target user',
|
|
870
|
+
},
|
|
871
|
+
notification: {
|
|
872
|
+
type: 'Notification',
|
|
873
|
+
required: false,
|
|
874
|
+
description: 'Parent notification',
|
|
875
|
+
},
|
|
876
|
+
},
|
|
877
|
+
|
|
878
|
+
actions: [
|
|
879
|
+
'send',
|
|
880
|
+
'schedule',
|
|
881
|
+
'cancel',
|
|
882
|
+
],
|
|
883
|
+
|
|
884
|
+
events: [
|
|
885
|
+
'sent',
|
|
886
|
+
'delivered',
|
|
887
|
+
'failed',
|
|
888
|
+
'opened',
|
|
889
|
+
'dismissed',
|
|
890
|
+
],
|
|
891
|
+
}
|
|
892
|
+
|
|
893
|
+
// =============================================================================
|
|
894
|
+
// Device
|
|
895
|
+
// =============================================================================
|
|
896
|
+
|
|
897
|
+
/**
|
|
898
|
+
* Device entity
|
|
899
|
+
*
|
|
900
|
+
* A user device registered for push notifications.
|
|
901
|
+
*/
|
|
902
|
+
export const Device: Noun = {
|
|
903
|
+
singular: 'device',
|
|
904
|
+
plural: 'devices',
|
|
905
|
+
description: 'A user device registered for push notifications',
|
|
906
|
+
|
|
907
|
+
properties: {
|
|
908
|
+
id: {
|
|
909
|
+
type: 'string',
|
|
910
|
+
description: 'Unique device identifier',
|
|
911
|
+
},
|
|
912
|
+
userId: {
|
|
913
|
+
type: 'string',
|
|
914
|
+
description: 'Owner user ID',
|
|
915
|
+
},
|
|
916
|
+
platform: {
|
|
917
|
+
type: 'string',
|
|
918
|
+
description: 'Device platform',
|
|
919
|
+
examples: ['ios', 'android', 'web'],
|
|
920
|
+
},
|
|
921
|
+
pushToken: {
|
|
922
|
+
type: 'string',
|
|
923
|
+
optional: true,
|
|
924
|
+
description: 'Push notification token',
|
|
925
|
+
},
|
|
926
|
+
tokenUpdatedAt: {
|
|
927
|
+
type: 'datetime',
|
|
928
|
+
optional: true,
|
|
929
|
+
description: 'When token was last updated',
|
|
930
|
+
},
|
|
931
|
+
deviceModel: {
|
|
932
|
+
type: 'string',
|
|
933
|
+
optional: true,
|
|
934
|
+
description: 'Device model name',
|
|
935
|
+
},
|
|
936
|
+
deviceName: {
|
|
937
|
+
type: 'string',
|
|
938
|
+
optional: true,
|
|
939
|
+
description: 'User-defined device name',
|
|
940
|
+
},
|
|
941
|
+
osVersion: {
|
|
942
|
+
type: 'string',
|
|
943
|
+
optional: true,
|
|
944
|
+
description: 'Operating system version',
|
|
945
|
+
},
|
|
946
|
+
appVersion: {
|
|
947
|
+
type: 'string',
|
|
948
|
+
optional: true,
|
|
949
|
+
description: 'App version installed',
|
|
950
|
+
},
|
|
951
|
+
appBuild: {
|
|
952
|
+
type: 'string',
|
|
953
|
+
optional: true,
|
|
954
|
+
description: 'App build number',
|
|
955
|
+
},
|
|
956
|
+
locale: {
|
|
957
|
+
type: 'string',
|
|
958
|
+
optional: true,
|
|
959
|
+
description: 'Device locale',
|
|
960
|
+
},
|
|
961
|
+
timezone: {
|
|
962
|
+
type: 'string',
|
|
963
|
+
optional: true,
|
|
964
|
+
description: 'Device timezone',
|
|
965
|
+
},
|
|
966
|
+
isActive: {
|
|
967
|
+
type: 'boolean',
|
|
968
|
+
optional: true,
|
|
969
|
+
description: 'Whether device is active',
|
|
970
|
+
},
|
|
971
|
+
lastActiveAt: {
|
|
972
|
+
type: 'datetime',
|
|
973
|
+
optional: true,
|
|
974
|
+
description: 'Last activity timestamp',
|
|
975
|
+
},
|
|
976
|
+
notificationsEnabled: {
|
|
977
|
+
type: 'boolean',
|
|
978
|
+
optional: true,
|
|
979
|
+
description: 'Whether notifications are enabled',
|
|
980
|
+
},
|
|
981
|
+
metadata: {
|
|
982
|
+
type: 'json',
|
|
983
|
+
optional: true,
|
|
984
|
+
description: 'Additional device metadata',
|
|
985
|
+
},
|
|
986
|
+
},
|
|
987
|
+
|
|
988
|
+
relationships: {
|
|
989
|
+
user: {
|
|
990
|
+
type: 'User',
|
|
991
|
+
description: 'Device owner',
|
|
992
|
+
},
|
|
993
|
+
notifications: {
|
|
994
|
+
type: 'PushNotification[]',
|
|
995
|
+
backref: 'device',
|
|
996
|
+
description: 'Notifications sent to this device',
|
|
997
|
+
},
|
|
998
|
+
},
|
|
999
|
+
|
|
1000
|
+
actions: [
|
|
1001
|
+
'register',
|
|
1002
|
+
'updateToken',
|
|
1003
|
+
'deactivate',
|
|
1004
|
+
'delete',
|
|
1005
|
+
],
|
|
1006
|
+
|
|
1007
|
+
events: [
|
|
1008
|
+
'registered',
|
|
1009
|
+
'tokenUpdated',
|
|
1010
|
+
'deactivated',
|
|
1011
|
+
'deleted',
|
|
1012
|
+
],
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
// =============================================================================
|
|
1016
|
+
// NotificationPreference
|
|
1017
|
+
// =============================================================================
|
|
1018
|
+
|
|
1019
|
+
/**
|
|
1020
|
+
* NotificationPreference entity
|
|
1021
|
+
*
|
|
1022
|
+
* User preferences for notifications.
|
|
1023
|
+
*/
|
|
1024
|
+
export const NotificationPreference: Noun = {
|
|
1025
|
+
singular: 'notification-preference',
|
|
1026
|
+
plural: 'notification-preferences',
|
|
1027
|
+
description: 'User preferences for notifications',
|
|
1028
|
+
|
|
1029
|
+
properties: {
|
|
1030
|
+
id: {
|
|
1031
|
+
type: 'string',
|
|
1032
|
+
description: 'Unique preference identifier',
|
|
1033
|
+
},
|
|
1034
|
+
userId: {
|
|
1035
|
+
type: 'string',
|
|
1036
|
+
description: 'User ID',
|
|
1037
|
+
},
|
|
1038
|
+
category: {
|
|
1039
|
+
type: 'string',
|
|
1040
|
+
description: 'Notification category',
|
|
1041
|
+
},
|
|
1042
|
+
emailEnabled: {
|
|
1043
|
+
type: 'boolean',
|
|
1044
|
+
optional: true,
|
|
1045
|
+
description: 'Receive email notifications',
|
|
1046
|
+
},
|
|
1047
|
+
smsEnabled: {
|
|
1048
|
+
type: 'boolean',
|
|
1049
|
+
optional: true,
|
|
1050
|
+
description: 'Receive SMS notifications',
|
|
1051
|
+
},
|
|
1052
|
+
pushEnabled: {
|
|
1053
|
+
type: 'boolean',
|
|
1054
|
+
optional: true,
|
|
1055
|
+
description: 'Receive push notifications',
|
|
1056
|
+
},
|
|
1057
|
+
inAppEnabled: {
|
|
1058
|
+
type: 'boolean',
|
|
1059
|
+
optional: true,
|
|
1060
|
+
description: 'Receive in-app notifications',
|
|
1061
|
+
},
|
|
1062
|
+
frequency: {
|
|
1063
|
+
type: 'string',
|
|
1064
|
+
optional: true,
|
|
1065
|
+
description: 'Notification frequency',
|
|
1066
|
+
examples: ['instant', 'daily', 'weekly'],
|
|
1067
|
+
},
|
|
1068
|
+
quietHoursStart: {
|
|
1069
|
+
type: 'string',
|
|
1070
|
+
optional: true,
|
|
1071
|
+
description: 'Quiet hours start time',
|
|
1072
|
+
},
|
|
1073
|
+
quietHoursEnd: {
|
|
1074
|
+
type: 'string',
|
|
1075
|
+
optional: true,
|
|
1076
|
+
description: 'Quiet hours end time',
|
|
1077
|
+
},
|
|
1078
|
+
timezone: {
|
|
1079
|
+
type: 'string',
|
|
1080
|
+
optional: true,
|
|
1081
|
+
description: 'User timezone for scheduling',
|
|
1082
|
+
},
|
|
1083
|
+
},
|
|
1084
|
+
|
|
1085
|
+
relationships: {
|
|
1086
|
+
user: {
|
|
1087
|
+
type: 'User',
|
|
1088
|
+
description: 'User who owns these preferences',
|
|
1089
|
+
},
|
|
1090
|
+
},
|
|
1091
|
+
|
|
1092
|
+
actions: [
|
|
1093
|
+
'update',
|
|
1094
|
+
'enableAll',
|
|
1095
|
+
'disableAll',
|
|
1096
|
+
'setQuietHours',
|
|
1097
|
+
],
|
|
1098
|
+
|
|
1099
|
+
events: [
|
|
1100
|
+
'updated',
|
|
1101
|
+
'channelEnabled',
|
|
1102
|
+
'channelDisabled',
|
|
1103
|
+
],
|
|
1104
|
+
}
|
|
1105
|
+
|
|
1106
|
+
// =============================================================================
|
|
1107
|
+
// InAppNotification
|
|
1108
|
+
// =============================================================================
|
|
1109
|
+
|
|
1110
|
+
/**
|
|
1111
|
+
* InAppNotification entity
|
|
1112
|
+
*
|
|
1113
|
+
* An in-application notification displayed within the app UI.
|
|
1114
|
+
*/
|
|
1115
|
+
export const InAppNotification: Noun = {
|
|
1116
|
+
singular: 'in-app-notification',
|
|
1117
|
+
plural: 'in-app-notifications',
|
|
1118
|
+
description: 'An in-application notification displayed within the app UI',
|
|
1119
|
+
|
|
1120
|
+
properties: {
|
|
1121
|
+
id: {
|
|
1122
|
+
type: 'string',
|
|
1123
|
+
description: 'Unique notification identifier',
|
|
1124
|
+
},
|
|
1125
|
+
userId: {
|
|
1126
|
+
type: 'string',
|
|
1127
|
+
description: 'Target user ID',
|
|
1128
|
+
},
|
|
1129
|
+
title: {
|
|
1130
|
+
type: 'string',
|
|
1131
|
+
description: 'Notification title',
|
|
1132
|
+
},
|
|
1133
|
+
body: {
|
|
1134
|
+
type: 'string',
|
|
1135
|
+
description: 'Notification body',
|
|
1136
|
+
},
|
|
1137
|
+
type: {
|
|
1138
|
+
type: 'string',
|
|
1139
|
+
description: 'Notification type',
|
|
1140
|
+
examples: ['info', 'success', 'warning', 'error'],
|
|
1141
|
+
},
|
|
1142
|
+
category: {
|
|
1143
|
+
type: 'string',
|
|
1144
|
+
optional: true,
|
|
1145
|
+
description: 'Notification category',
|
|
1146
|
+
},
|
|
1147
|
+
icon: {
|
|
1148
|
+
type: 'string',
|
|
1149
|
+
optional: true,
|
|
1150
|
+
description: 'Icon identifier',
|
|
1151
|
+
},
|
|
1152
|
+
imageUrl: {
|
|
1153
|
+
type: 'url',
|
|
1154
|
+
optional: true,
|
|
1155
|
+
description: 'Image URL',
|
|
1156
|
+
},
|
|
1157
|
+
actionUrl: {
|
|
1158
|
+
type: 'url',
|
|
1159
|
+
optional: true,
|
|
1160
|
+
description: 'URL to navigate on click',
|
|
1161
|
+
},
|
|
1162
|
+
actionLabel: {
|
|
1163
|
+
type: 'string',
|
|
1164
|
+
optional: true,
|
|
1165
|
+
description: 'Action button label',
|
|
1166
|
+
},
|
|
1167
|
+
isRead: {
|
|
1168
|
+
type: 'boolean',
|
|
1169
|
+
optional: true,
|
|
1170
|
+
description: 'Whether notification has been read',
|
|
1171
|
+
},
|
|
1172
|
+
isArchived: {
|
|
1173
|
+
type: 'boolean',
|
|
1174
|
+
optional: true,
|
|
1175
|
+
description: 'Whether notification is archived',
|
|
1176
|
+
},
|
|
1177
|
+
isPinned: {
|
|
1178
|
+
type: 'boolean',
|
|
1179
|
+
optional: true,
|
|
1180
|
+
description: 'Whether notification is pinned',
|
|
1181
|
+
},
|
|
1182
|
+
expiresAt: {
|
|
1183
|
+
type: 'datetime',
|
|
1184
|
+
optional: true,
|
|
1185
|
+
description: 'Expiration timestamp',
|
|
1186
|
+
},
|
|
1187
|
+
readAt: {
|
|
1188
|
+
type: 'datetime',
|
|
1189
|
+
optional: true,
|
|
1190
|
+
description: 'When notification was read',
|
|
1191
|
+
},
|
|
1192
|
+
clickedAt: {
|
|
1193
|
+
type: 'datetime',
|
|
1194
|
+
optional: true,
|
|
1195
|
+
description: 'When notification was clicked',
|
|
1196
|
+
},
|
|
1197
|
+
metadata: {
|
|
1198
|
+
type: 'json',
|
|
1199
|
+
optional: true,
|
|
1200
|
+
description: 'Custom metadata',
|
|
1201
|
+
},
|
|
1202
|
+
},
|
|
1203
|
+
|
|
1204
|
+
relationships: {
|
|
1205
|
+
user: {
|
|
1206
|
+
type: 'User',
|
|
1207
|
+
description: 'Target user',
|
|
1208
|
+
},
|
|
1209
|
+
notification: {
|
|
1210
|
+
type: 'Notification',
|
|
1211
|
+
required: false,
|
|
1212
|
+
description: 'Parent notification',
|
|
1213
|
+
},
|
|
1214
|
+
},
|
|
1215
|
+
|
|
1216
|
+
actions: [
|
|
1217
|
+
'create',
|
|
1218
|
+
'read',
|
|
1219
|
+
'unread',
|
|
1220
|
+
'archive',
|
|
1221
|
+
'pin',
|
|
1222
|
+
'delete',
|
|
1223
|
+
],
|
|
1224
|
+
|
|
1225
|
+
events: [
|
|
1226
|
+
'created',
|
|
1227
|
+
'read',
|
|
1228
|
+
'clicked',
|
|
1229
|
+
'archived',
|
|
1230
|
+
],
|
|
1231
|
+
}
|
|
1232
|
+
|
|
1233
|
+
// =============================================================================
|
|
1234
|
+
// Exports
|
|
1235
|
+
// =============================================================================
|
|
1236
|
+
|
|
1237
|
+
export const NotificationEntities = {
|
|
1238
|
+
Notification,
|
|
1239
|
+
NotificationTemplate,
|
|
1240
|
+
NotificationCampaign,
|
|
1241
|
+
SMS,
|
|
1242
|
+
SMSConversation,
|
|
1243
|
+
PushNotification,
|
|
1244
|
+
Device,
|
|
1245
|
+
NotificationPreference,
|
|
1246
|
+
InAppNotification,
|
|
1247
|
+
}
|
|
1248
|
+
|
|
1249
|
+
export const NotificationCategories = [
|
|
1250
|
+
'notification',
|
|
1251
|
+
'template',
|
|
1252
|
+
'campaign',
|
|
1253
|
+
'sms',
|
|
1254
|
+
'push',
|
|
1255
|
+
'device',
|
|
1256
|
+
'preference',
|
|
1257
|
+
'in-app',
|
|
1258
|
+
] as const
|
|
1259
|
+
|
|
1260
|
+
export type NotificationCategory = (typeof NotificationCategories)[number]
|