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,1751 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Video Conferencing Entity Types (Nouns)
|
|
3
|
+
*
|
|
4
|
+
* Semantic type definitions for video conferencing tools that can be used by
|
|
5
|
+
* both remote human workers AND AI agents. Each entity defines:
|
|
6
|
+
* - Properties: The data fields
|
|
7
|
+
* - Actions: Operations that can be performed (Verbs)
|
|
8
|
+
* - Events: State changes that occur
|
|
9
|
+
*
|
|
10
|
+
* @packageDocumentation
|
|
11
|
+
*/
|
|
12
|
+
// =============================================================================
|
|
13
|
+
// Meeting
|
|
14
|
+
// =============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Meeting - A video meeting/conference call
|
|
17
|
+
*
|
|
18
|
+
* Represents a scheduled or instant video meeting with participants.
|
|
19
|
+
* This is the brand-agnostic equivalent of:
|
|
20
|
+
* - Zoom Meeting
|
|
21
|
+
* - Google Meet
|
|
22
|
+
* - Microsoft Teams Meeting
|
|
23
|
+
*/
|
|
24
|
+
export const Meeting = {
|
|
25
|
+
singular: 'meeting',
|
|
26
|
+
plural: 'meetings',
|
|
27
|
+
description: 'A video conference meeting with participants',
|
|
28
|
+
properties: {
|
|
29
|
+
// Identity
|
|
30
|
+
title: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
description: 'Meeting title or topic',
|
|
33
|
+
},
|
|
34
|
+
description: {
|
|
35
|
+
type: 'string',
|
|
36
|
+
optional: true,
|
|
37
|
+
description: 'Meeting description or agenda',
|
|
38
|
+
},
|
|
39
|
+
meetingId: {
|
|
40
|
+
type: 'string',
|
|
41
|
+
description: 'Unique meeting identifier',
|
|
42
|
+
},
|
|
43
|
+
passcode: {
|
|
44
|
+
type: 'string',
|
|
45
|
+
optional: true,
|
|
46
|
+
description: 'Meeting passcode for security',
|
|
47
|
+
},
|
|
48
|
+
// URL/Link
|
|
49
|
+
joinUrl: {
|
|
50
|
+
type: 'url',
|
|
51
|
+
description: 'URL to join the meeting',
|
|
52
|
+
},
|
|
53
|
+
startUrl: {
|
|
54
|
+
type: 'url',
|
|
55
|
+
optional: true,
|
|
56
|
+
description: 'URL for the host to start the meeting',
|
|
57
|
+
},
|
|
58
|
+
// Scheduling
|
|
59
|
+
scheduledAt: {
|
|
60
|
+
type: 'datetime',
|
|
61
|
+
optional: true,
|
|
62
|
+
description: 'When the meeting is scheduled to start',
|
|
63
|
+
},
|
|
64
|
+
scheduledDuration: {
|
|
65
|
+
type: 'number',
|
|
66
|
+
optional: true,
|
|
67
|
+
description: 'Scheduled duration in minutes',
|
|
68
|
+
},
|
|
69
|
+
timezone: {
|
|
70
|
+
type: 'string',
|
|
71
|
+
optional: true,
|
|
72
|
+
description: 'Timezone for the meeting',
|
|
73
|
+
},
|
|
74
|
+
// Status & Timing
|
|
75
|
+
status: {
|
|
76
|
+
type: 'string',
|
|
77
|
+
description: 'Meeting status: scheduled, waiting, in-progress, ended, canceled',
|
|
78
|
+
examples: ['scheduled', 'waiting', 'in-progress', 'ended', 'canceled'],
|
|
79
|
+
},
|
|
80
|
+
startedAt: {
|
|
81
|
+
type: 'datetime',
|
|
82
|
+
optional: true,
|
|
83
|
+
description: 'When the meeting actually started',
|
|
84
|
+
},
|
|
85
|
+
endedAt: {
|
|
86
|
+
type: 'datetime',
|
|
87
|
+
optional: true,
|
|
88
|
+
description: 'When the meeting ended',
|
|
89
|
+
},
|
|
90
|
+
actualDuration: {
|
|
91
|
+
type: 'number',
|
|
92
|
+
optional: true,
|
|
93
|
+
description: 'Actual meeting duration in minutes',
|
|
94
|
+
},
|
|
95
|
+
// Settings
|
|
96
|
+
isRecurring: {
|
|
97
|
+
type: 'boolean',
|
|
98
|
+
optional: true,
|
|
99
|
+
description: 'Whether this is a recurring meeting',
|
|
100
|
+
},
|
|
101
|
+
recurrenceRule: {
|
|
102
|
+
type: 'string',
|
|
103
|
+
optional: true,
|
|
104
|
+
description: 'Recurrence pattern (RRULE format)',
|
|
105
|
+
},
|
|
106
|
+
requiresPassword: {
|
|
107
|
+
type: 'boolean',
|
|
108
|
+
optional: true,
|
|
109
|
+
description: 'Whether a password is required to join',
|
|
110
|
+
},
|
|
111
|
+
waitingRoomEnabled: {
|
|
112
|
+
type: 'boolean',
|
|
113
|
+
optional: true,
|
|
114
|
+
description: 'Whether waiting room is enabled',
|
|
115
|
+
},
|
|
116
|
+
recordingEnabled: {
|
|
117
|
+
type: 'boolean',
|
|
118
|
+
optional: true,
|
|
119
|
+
description: 'Whether recording is enabled',
|
|
120
|
+
},
|
|
121
|
+
autoRecording: {
|
|
122
|
+
type: 'boolean',
|
|
123
|
+
optional: true,
|
|
124
|
+
description: 'Whether to automatically start recording',
|
|
125
|
+
},
|
|
126
|
+
muteOnEntry: {
|
|
127
|
+
type: 'boolean',
|
|
128
|
+
optional: true,
|
|
129
|
+
description: 'Whether participants are muted on entry',
|
|
130
|
+
},
|
|
131
|
+
allowScreenSharing: {
|
|
132
|
+
type: 'boolean',
|
|
133
|
+
optional: true,
|
|
134
|
+
description: 'Whether screen sharing is allowed',
|
|
135
|
+
},
|
|
136
|
+
allowChat: {
|
|
137
|
+
type: 'boolean',
|
|
138
|
+
optional: true,
|
|
139
|
+
description: 'Whether chat is enabled',
|
|
140
|
+
},
|
|
141
|
+
// Statistics
|
|
142
|
+
participantCount: {
|
|
143
|
+
type: 'number',
|
|
144
|
+
optional: true,
|
|
145
|
+
description: 'Current or maximum number of participants',
|
|
146
|
+
},
|
|
147
|
+
maxParticipants: {
|
|
148
|
+
type: 'number',
|
|
149
|
+
optional: true,
|
|
150
|
+
description: 'Maximum allowed participants',
|
|
151
|
+
},
|
|
152
|
+
// Integration
|
|
153
|
+
calendarEventId: {
|
|
154
|
+
type: 'string',
|
|
155
|
+
optional: true,
|
|
156
|
+
description: 'Associated calendar event ID',
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
relationships: {
|
|
160
|
+
host: {
|
|
161
|
+
type: 'Contact',
|
|
162
|
+
description: 'Meeting host/organizer',
|
|
163
|
+
},
|
|
164
|
+
participants: {
|
|
165
|
+
type: 'MeetingParticipant[]',
|
|
166
|
+
backref: 'meeting',
|
|
167
|
+
description: 'Participants in the meeting',
|
|
168
|
+
},
|
|
169
|
+
recordings: {
|
|
170
|
+
type: 'MeetingRecording[]',
|
|
171
|
+
backref: 'meeting',
|
|
172
|
+
description: 'Recordings of this meeting',
|
|
173
|
+
},
|
|
174
|
+
breakoutRooms: {
|
|
175
|
+
type: 'BreakoutRoom[]',
|
|
176
|
+
backref: 'meeting',
|
|
177
|
+
description: 'Breakout rooms created in this meeting',
|
|
178
|
+
},
|
|
179
|
+
polls: {
|
|
180
|
+
type: 'MeetingPoll[]',
|
|
181
|
+
backref: 'meeting',
|
|
182
|
+
description: 'Polls launched during the meeting',
|
|
183
|
+
},
|
|
184
|
+
chat: {
|
|
185
|
+
type: 'MeetingChat',
|
|
186
|
+
backref: 'meeting',
|
|
187
|
+
description: 'Chat messages during the meeting',
|
|
188
|
+
},
|
|
189
|
+
room: {
|
|
190
|
+
type: 'MeetingRoom',
|
|
191
|
+
required: false,
|
|
192
|
+
description: 'Virtual meeting room if this is a persistent room',
|
|
193
|
+
},
|
|
194
|
+
},
|
|
195
|
+
actions: [
|
|
196
|
+
'schedule',
|
|
197
|
+
'start',
|
|
198
|
+
'join',
|
|
199
|
+
'leave',
|
|
200
|
+
'end',
|
|
201
|
+
'cancel',
|
|
202
|
+
'reschedule',
|
|
203
|
+
'invite',
|
|
204
|
+
'admit',
|
|
205
|
+
'remove',
|
|
206
|
+
'mute',
|
|
207
|
+
'unmute',
|
|
208
|
+
'muteAll',
|
|
209
|
+
'unmuteAll',
|
|
210
|
+
'startRecording',
|
|
211
|
+
'stopRecording',
|
|
212
|
+
'pauseRecording',
|
|
213
|
+
'resumeRecording',
|
|
214
|
+
'shareScreen',
|
|
215
|
+
'stopScreenShare',
|
|
216
|
+
'lock',
|
|
217
|
+
'unlock',
|
|
218
|
+
'createBreakoutRooms',
|
|
219
|
+
'launchPoll',
|
|
220
|
+
'sendChat',
|
|
221
|
+
],
|
|
222
|
+
events: [
|
|
223
|
+
'scheduled',
|
|
224
|
+
'started',
|
|
225
|
+
'joined',
|
|
226
|
+
'left',
|
|
227
|
+
'ended',
|
|
228
|
+
'canceled',
|
|
229
|
+
'rescheduled',
|
|
230
|
+
'participantJoined',
|
|
231
|
+
'participantLeft',
|
|
232
|
+
'participantAdmitted',
|
|
233
|
+
'participantRemoved',
|
|
234
|
+
'recordingStarted',
|
|
235
|
+
'recordingStopped',
|
|
236
|
+
'recordingPaused',
|
|
237
|
+
'recordingResumed',
|
|
238
|
+
'screenShareStarted',
|
|
239
|
+
'screenShareStopped',
|
|
240
|
+
'locked',
|
|
241
|
+
'unlocked',
|
|
242
|
+
'breakoutRoomsCreated',
|
|
243
|
+
'breakoutRoomsClosed',
|
|
244
|
+
'pollLaunched',
|
|
245
|
+
'chatMessageSent',
|
|
246
|
+
],
|
|
247
|
+
};
|
|
248
|
+
/**
|
|
249
|
+
* MeetingParticipant - A participant in a meeting
|
|
250
|
+
*
|
|
251
|
+
* Represents an individual participant's session within a meeting.
|
|
252
|
+
*/
|
|
253
|
+
export const MeetingParticipant = {
|
|
254
|
+
singular: 'meeting participant',
|
|
255
|
+
plural: 'meeting participants',
|
|
256
|
+
description: 'A participant in a video meeting',
|
|
257
|
+
properties: {
|
|
258
|
+
// Identity
|
|
259
|
+
name: {
|
|
260
|
+
type: 'string',
|
|
261
|
+
description: 'Participant display name',
|
|
262
|
+
},
|
|
263
|
+
email: {
|
|
264
|
+
type: 'string',
|
|
265
|
+
optional: true,
|
|
266
|
+
description: 'Participant email address',
|
|
267
|
+
},
|
|
268
|
+
userId: {
|
|
269
|
+
type: 'string',
|
|
270
|
+
optional: true,
|
|
271
|
+
description: 'User ID if authenticated',
|
|
272
|
+
},
|
|
273
|
+
// Role
|
|
274
|
+
role: {
|
|
275
|
+
type: 'string',
|
|
276
|
+
description: 'Participant role: host, co-host, panelist, attendee, guest',
|
|
277
|
+
examples: ['host', 'co-host', 'panelist', 'attendee', 'guest'],
|
|
278
|
+
},
|
|
279
|
+
// Timing
|
|
280
|
+
joinedAt: {
|
|
281
|
+
type: 'datetime',
|
|
282
|
+
description: 'When the participant joined',
|
|
283
|
+
},
|
|
284
|
+
leftAt: {
|
|
285
|
+
type: 'datetime',
|
|
286
|
+
optional: true,
|
|
287
|
+
description: 'When the participant left',
|
|
288
|
+
},
|
|
289
|
+
duration: {
|
|
290
|
+
type: 'number',
|
|
291
|
+
optional: true,
|
|
292
|
+
description: 'Duration of participation in minutes',
|
|
293
|
+
},
|
|
294
|
+
// Status
|
|
295
|
+
status: {
|
|
296
|
+
type: 'string',
|
|
297
|
+
description: 'Participant status: waiting, admitted, in-meeting, left, removed',
|
|
298
|
+
examples: ['waiting', 'admitted', 'in-meeting', 'left', 'removed'],
|
|
299
|
+
},
|
|
300
|
+
isOnline: {
|
|
301
|
+
type: 'boolean',
|
|
302
|
+
optional: true,
|
|
303
|
+
description: 'Whether currently connected',
|
|
304
|
+
},
|
|
305
|
+
// Media State
|
|
306
|
+
audioEnabled: {
|
|
307
|
+
type: 'boolean',
|
|
308
|
+
optional: true,
|
|
309
|
+
description: 'Whether audio is enabled',
|
|
310
|
+
},
|
|
311
|
+
videoEnabled: {
|
|
312
|
+
type: 'boolean',
|
|
313
|
+
optional: true,
|
|
314
|
+
description: 'Whether video is enabled',
|
|
315
|
+
},
|
|
316
|
+
screenSharing: {
|
|
317
|
+
type: 'boolean',
|
|
318
|
+
optional: true,
|
|
319
|
+
description: 'Whether currently sharing screen',
|
|
320
|
+
},
|
|
321
|
+
handRaised: {
|
|
322
|
+
type: 'boolean',
|
|
323
|
+
optional: true,
|
|
324
|
+
description: 'Whether hand is raised',
|
|
325
|
+
},
|
|
326
|
+
// Device & Connection
|
|
327
|
+
deviceType: {
|
|
328
|
+
type: 'string',
|
|
329
|
+
optional: true,
|
|
330
|
+
description: 'Device type: desktop, mobile, tablet, phone',
|
|
331
|
+
examples: ['desktop', 'mobile', 'tablet', 'phone'],
|
|
332
|
+
},
|
|
333
|
+
connectionQuality: {
|
|
334
|
+
type: 'string',
|
|
335
|
+
optional: true,
|
|
336
|
+
description: 'Connection quality: excellent, good, fair, poor',
|
|
337
|
+
examples: ['excellent', 'good', 'fair', 'poor'],
|
|
338
|
+
},
|
|
339
|
+
location: {
|
|
340
|
+
type: 'string',
|
|
341
|
+
optional: true,
|
|
342
|
+
description: 'Geographic location (city, country)',
|
|
343
|
+
},
|
|
344
|
+
},
|
|
345
|
+
relationships: {
|
|
346
|
+
meeting: {
|
|
347
|
+
type: 'Meeting',
|
|
348
|
+
backref: 'participants',
|
|
349
|
+
description: 'The meeting this participant is in',
|
|
350
|
+
},
|
|
351
|
+
contact: {
|
|
352
|
+
type: 'Contact',
|
|
353
|
+
required: false,
|
|
354
|
+
description: 'Associated contact record',
|
|
355
|
+
},
|
|
356
|
+
breakoutRoom: {
|
|
357
|
+
type: 'BreakoutRoom',
|
|
358
|
+
required: false,
|
|
359
|
+
description: 'Current breakout room if assigned',
|
|
360
|
+
},
|
|
361
|
+
},
|
|
362
|
+
actions: [
|
|
363
|
+
'admit',
|
|
364
|
+
'remove',
|
|
365
|
+
'promote',
|
|
366
|
+
'demote',
|
|
367
|
+
'mute',
|
|
368
|
+
'unmute',
|
|
369
|
+
'disableVideo',
|
|
370
|
+
'enableVideo',
|
|
371
|
+
'spotlight',
|
|
372
|
+
'pin',
|
|
373
|
+
'sendToBreakoutRoom',
|
|
374
|
+
'allowToTalk',
|
|
375
|
+
'putOnHold',
|
|
376
|
+
],
|
|
377
|
+
events: [
|
|
378
|
+
'joined',
|
|
379
|
+
'left',
|
|
380
|
+
'admitted',
|
|
381
|
+
'removed',
|
|
382
|
+
'promoted',
|
|
383
|
+
'demoted',
|
|
384
|
+
'muted',
|
|
385
|
+
'unmuted',
|
|
386
|
+
'videoDisabled',
|
|
387
|
+
'videoEnabled',
|
|
388
|
+
'startedScreenShare',
|
|
389
|
+
'stoppedScreenShare',
|
|
390
|
+
'raisedHand',
|
|
391
|
+
'loweredHand',
|
|
392
|
+
'sentToBreakoutRoom',
|
|
393
|
+
'returnedFromBreakoutRoom',
|
|
394
|
+
],
|
|
395
|
+
};
|
|
396
|
+
/**
|
|
397
|
+
* MeetingRecording - A recording of a meeting
|
|
398
|
+
*
|
|
399
|
+
* Represents a video/audio recording of a meeting session.
|
|
400
|
+
*/
|
|
401
|
+
export const MeetingRecording = {
|
|
402
|
+
singular: 'meeting recording',
|
|
403
|
+
plural: 'meeting recordings',
|
|
404
|
+
description: 'A recording of a video meeting',
|
|
405
|
+
properties: {
|
|
406
|
+
// Identity
|
|
407
|
+
title: {
|
|
408
|
+
type: 'string',
|
|
409
|
+
description: 'Recording title (often same as meeting title)',
|
|
410
|
+
},
|
|
411
|
+
recordingId: {
|
|
412
|
+
type: 'string',
|
|
413
|
+
description: 'Unique recording identifier',
|
|
414
|
+
},
|
|
415
|
+
// Type & Format
|
|
416
|
+
recordingType: {
|
|
417
|
+
type: 'string',
|
|
418
|
+
description: 'Recording type: cloud, local',
|
|
419
|
+
examples: ['cloud', 'local'],
|
|
420
|
+
},
|
|
421
|
+
format: {
|
|
422
|
+
type: 'string',
|
|
423
|
+
description: 'File format: mp4, m4a, mp3, txt, vtt',
|
|
424
|
+
examples: ['mp4', 'm4a', 'mp3', 'txt', 'vtt'],
|
|
425
|
+
},
|
|
426
|
+
fileType: {
|
|
427
|
+
type: 'string',
|
|
428
|
+
description: 'Content type: video, audio, transcript, chat',
|
|
429
|
+
examples: ['video', 'audio', 'transcript', 'chat'],
|
|
430
|
+
},
|
|
431
|
+
// Status & Timing
|
|
432
|
+
status: {
|
|
433
|
+
type: 'string',
|
|
434
|
+
description: 'Recording status: recording, processing, completed, failed',
|
|
435
|
+
examples: ['recording', 'processing', 'completed', 'failed'],
|
|
436
|
+
},
|
|
437
|
+
startedAt: {
|
|
438
|
+
type: 'datetime',
|
|
439
|
+
description: 'When recording started',
|
|
440
|
+
},
|
|
441
|
+
endedAt: {
|
|
442
|
+
type: 'datetime',
|
|
443
|
+
optional: true,
|
|
444
|
+
description: 'When recording ended',
|
|
445
|
+
},
|
|
446
|
+
duration: {
|
|
447
|
+
type: 'number',
|
|
448
|
+
optional: true,
|
|
449
|
+
description: 'Recording duration in minutes',
|
|
450
|
+
},
|
|
451
|
+
// File Info
|
|
452
|
+
size: {
|
|
453
|
+
type: 'number',
|
|
454
|
+
optional: true,
|
|
455
|
+
description: 'File size in bytes',
|
|
456
|
+
},
|
|
457
|
+
url: {
|
|
458
|
+
type: 'url',
|
|
459
|
+
optional: true,
|
|
460
|
+
description: 'URL to download/stream the recording',
|
|
461
|
+
},
|
|
462
|
+
playUrl: {
|
|
463
|
+
type: 'url',
|
|
464
|
+
optional: true,
|
|
465
|
+
description: 'URL to play the recording',
|
|
466
|
+
},
|
|
467
|
+
downloadUrl: {
|
|
468
|
+
type: 'url',
|
|
469
|
+
optional: true,
|
|
470
|
+
description: 'URL to download the recording',
|
|
471
|
+
},
|
|
472
|
+
// Security
|
|
473
|
+
passcode: {
|
|
474
|
+
type: 'string',
|
|
475
|
+
optional: true,
|
|
476
|
+
description: 'Passcode to access the recording',
|
|
477
|
+
},
|
|
478
|
+
shareUrl: {
|
|
479
|
+
type: 'url',
|
|
480
|
+
optional: true,
|
|
481
|
+
description: 'Shareable URL for the recording',
|
|
482
|
+
},
|
|
483
|
+
// Features
|
|
484
|
+
hasTranscript: {
|
|
485
|
+
type: 'boolean',
|
|
486
|
+
optional: true,
|
|
487
|
+
description: 'Whether transcript is available',
|
|
488
|
+
},
|
|
489
|
+
hasCaptions: {
|
|
490
|
+
type: 'boolean',
|
|
491
|
+
optional: true,
|
|
492
|
+
description: 'Whether captions are available',
|
|
493
|
+
},
|
|
494
|
+
transcriptUrl: {
|
|
495
|
+
type: 'url',
|
|
496
|
+
optional: true,
|
|
497
|
+
description: 'URL to transcript file',
|
|
498
|
+
},
|
|
499
|
+
// Settings
|
|
500
|
+
autoDelete: {
|
|
501
|
+
type: 'boolean',
|
|
502
|
+
optional: true,
|
|
503
|
+
description: 'Whether recording will be auto-deleted',
|
|
504
|
+
},
|
|
505
|
+
autoDeleteDate: {
|
|
506
|
+
type: 'datetime',
|
|
507
|
+
optional: true,
|
|
508
|
+
description: 'When recording will be auto-deleted',
|
|
509
|
+
},
|
|
510
|
+
},
|
|
511
|
+
relationships: {
|
|
512
|
+
meeting: {
|
|
513
|
+
type: 'Meeting',
|
|
514
|
+
backref: 'recordings',
|
|
515
|
+
description: 'The meeting that was recorded',
|
|
516
|
+
},
|
|
517
|
+
recordedBy: {
|
|
518
|
+
type: 'Contact',
|
|
519
|
+
description: 'Who started the recording',
|
|
520
|
+
},
|
|
521
|
+
},
|
|
522
|
+
actions: [
|
|
523
|
+
'start',
|
|
524
|
+
'stop',
|
|
525
|
+
'pause',
|
|
526
|
+
'resume',
|
|
527
|
+
'download',
|
|
528
|
+
'play',
|
|
529
|
+
'share',
|
|
530
|
+
'delete',
|
|
531
|
+
'transcribe',
|
|
532
|
+
'generateCaptions',
|
|
533
|
+
'setExpiration',
|
|
534
|
+
],
|
|
535
|
+
events: [
|
|
536
|
+
'started',
|
|
537
|
+
'stopped',
|
|
538
|
+
'paused',
|
|
539
|
+
'resumed',
|
|
540
|
+
'completed',
|
|
541
|
+
'failed',
|
|
542
|
+
'downloaded',
|
|
543
|
+
'shared',
|
|
544
|
+
'deleted',
|
|
545
|
+
'transcribed',
|
|
546
|
+
'viewed',
|
|
547
|
+
],
|
|
548
|
+
};
|
|
549
|
+
// =============================================================================
|
|
550
|
+
// Webinar
|
|
551
|
+
// =============================================================================
|
|
552
|
+
/**
|
|
553
|
+
* Webinar - A webinar event with registration and large audience
|
|
554
|
+
*
|
|
555
|
+
* Represents a large-scale online presentation or seminar, typically with
|
|
556
|
+
* panelists presenting to attendees who have registered.
|
|
557
|
+
*/
|
|
558
|
+
export const Webinar = {
|
|
559
|
+
singular: 'webinar',
|
|
560
|
+
plural: 'webinars',
|
|
561
|
+
description: 'A webinar event with registration, panelists, and attendees',
|
|
562
|
+
properties: {
|
|
563
|
+
// Identity
|
|
564
|
+
title: {
|
|
565
|
+
type: 'string',
|
|
566
|
+
description: 'Webinar title',
|
|
567
|
+
},
|
|
568
|
+
description: {
|
|
569
|
+
type: 'string',
|
|
570
|
+
optional: true,
|
|
571
|
+
description: 'Webinar description and details',
|
|
572
|
+
},
|
|
573
|
+
webinarId: {
|
|
574
|
+
type: 'string',
|
|
575
|
+
description: 'Unique webinar identifier',
|
|
576
|
+
},
|
|
577
|
+
// Scheduling
|
|
578
|
+
scheduledAt: {
|
|
579
|
+
type: 'datetime',
|
|
580
|
+
description: 'When the webinar is scheduled to start',
|
|
581
|
+
},
|
|
582
|
+
scheduledDuration: {
|
|
583
|
+
type: 'number',
|
|
584
|
+
description: 'Scheduled duration in minutes',
|
|
585
|
+
},
|
|
586
|
+
timezone: {
|
|
587
|
+
type: 'string',
|
|
588
|
+
description: 'Timezone for the webinar',
|
|
589
|
+
},
|
|
590
|
+
// Status & Timing
|
|
591
|
+
status: {
|
|
592
|
+
type: 'string',
|
|
593
|
+
description: 'Webinar status: draft, scheduled, live, ended, canceled',
|
|
594
|
+
examples: ['draft', 'scheduled', 'live', 'ended', 'canceled'],
|
|
595
|
+
},
|
|
596
|
+
startedAt: {
|
|
597
|
+
type: 'datetime',
|
|
598
|
+
optional: true,
|
|
599
|
+
description: 'When the webinar actually started',
|
|
600
|
+
},
|
|
601
|
+
endedAt: {
|
|
602
|
+
type: 'datetime',
|
|
603
|
+
optional: true,
|
|
604
|
+
description: 'When the webinar ended',
|
|
605
|
+
},
|
|
606
|
+
// Registration
|
|
607
|
+
registrationRequired: {
|
|
608
|
+
type: 'boolean',
|
|
609
|
+
description: 'Whether registration is required',
|
|
610
|
+
},
|
|
611
|
+
registrationUrl: {
|
|
612
|
+
type: 'url',
|
|
613
|
+
optional: true,
|
|
614
|
+
description: 'URL for registration page',
|
|
615
|
+
},
|
|
616
|
+
approvalRequired: {
|
|
617
|
+
type: 'boolean',
|
|
618
|
+
optional: true,
|
|
619
|
+
description: 'Whether registrations need approval',
|
|
620
|
+
},
|
|
621
|
+
registrationCapacity: {
|
|
622
|
+
type: 'number',
|
|
623
|
+
optional: true,
|
|
624
|
+
description: 'Maximum number of registrants',
|
|
625
|
+
},
|
|
626
|
+
registrationCount: {
|
|
627
|
+
type: 'number',
|
|
628
|
+
optional: true,
|
|
629
|
+
description: 'Current number of registrants',
|
|
630
|
+
},
|
|
631
|
+
attendeeCount: {
|
|
632
|
+
type: 'number',
|
|
633
|
+
optional: true,
|
|
634
|
+
description: 'Number of attendees who joined',
|
|
635
|
+
},
|
|
636
|
+
// URLs
|
|
637
|
+
joinUrl: {
|
|
638
|
+
type: 'url',
|
|
639
|
+
description: 'URL for attendees to join',
|
|
640
|
+
},
|
|
641
|
+
startUrl: {
|
|
642
|
+
type: 'url',
|
|
643
|
+
optional: true,
|
|
644
|
+
description: 'URL for host to start the webinar',
|
|
645
|
+
},
|
|
646
|
+
practiceSessionUrl: {
|
|
647
|
+
type: 'url',
|
|
648
|
+
optional: true,
|
|
649
|
+
description: 'URL for practice session',
|
|
650
|
+
},
|
|
651
|
+
// Settings
|
|
652
|
+
recordingEnabled: {
|
|
653
|
+
type: 'boolean',
|
|
654
|
+
optional: true,
|
|
655
|
+
description: 'Whether recording is enabled',
|
|
656
|
+
},
|
|
657
|
+
autoRecording: {
|
|
658
|
+
type: 'boolean',
|
|
659
|
+
optional: true,
|
|
660
|
+
description: 'Whether to automatically start recording',
|
|
661
|
+
},
|
|
662
|
+
allowQA: {
|
|
663
|
+
type: 'boolean',
|
|
664
|
+
optional: true,
|
|
665
|
+
description: 'Whether Q&A is enabled',
|
|
666
|
+
},
|
|
667
|
+
allowPolls: {
|
|
668
|
+
type: 'boolean',
|
|
669
|
+
optional: true,
|
|
670
|
+
description: 'Whether polls are enabled',
|
|
671
|
+
},
|
|
672
|
+
allowChat: {
|
|
673
|
+
type: 'boolean',
|
|
674
|
+
optional: true,
|
|
675
|
+
description: 'Whether chat is enabled',
|
|
676
|
+
},
|
|
677
|
+
practiceSessionEnabled: {
|
|
678
|
+
type: 'boolean',
|
|
679
|
+
optional: true,
|
|
680
|
+
description: 'Whether practice session is available',
|
|
681
|
+
},
|
|
682
|
+
// Email Notifications
|
|
683
|
+
sendConfirmationEmail: {
|
|
684
|
+
type: 'boolean',
|
|
685
|
+
optional: true,
|
|
686
|
+
description: 'Whether to send confirmation emails',
|
|
687
|
+
},
|
|
688
|
+
sendReminderEmail: {
|
|
689
|
+
type: 'boolean',
|
|
690
|
+
optional: true,
|
|
691
|
+
description: 'Whether to send reminder emails',
|
|
692
|
+
},
|
|
693
|
+
},
|
|
694
|
+
relationships: {
|
|
695
|
+
host: {
|
|
696
|
+
type: 'Contact',
|
|
697
|
+
description: 'Webinar host/organizer',
|
|
698
|
+
},
|
|
699
|
+
panelists: {
|
|
700
|
+
type: 'Contact[]',
|
|
701
|
+
description: 'Webinar panelists/presenters',
|
|
702
|
+
},
|
|
703
|
+
registrants: {
|
|
704
|
+
type: 'WebinarRegistrant[]',
|
|
705
|
+
backref: 'webinar',
|
|
706
|
+
description: 'People registered for the webinar',
|
|
707
|
+
},
|
|
708
|
+
recordings: {
|
|
709
|
+
type: 'MeetingRecording[]',
|
|
710
|
+
description: 'Recordings of the webinar',
|
|
711
|
+
},
|
|
712
|
+
polls: {
|
|
713
|
+
type: 'MeetingPoll[]',
|
|
714
|
+
description: 'Polls used in the webinar',
|
|
715
|
+
},
|
|
716
|
+
},
|
|
717
|
+
actions: [
|
|
718
|
+
'create',
|
|
719
|
+
'schedule',
|
|
720
|
+
'start',
|
|
721
|
+
'end',
|
|
722
|
+
'cancel',
|
|
723
|
+
'reschedule',
|
|
724
|
+
'addPanelist',
|
|
725
|
+
'removePanelist',
|
|
726
|
+
'approveRegistrant',
|
|
727
|
+
'rejectRegistrant',
|
|
728
|
+
'sendInvitation',
|
|
729
|
+
'sendReminder',
|
|
730
|
+
'startPracticeSession',
|
|
731
|
+
'startRecording',
|
|
732
|
+
'stopRecording',
|
|
733
|
+
'launchPoll',
|
|
734
|
+
'muteAttendees',
|
|
735
|
+
],
|
|
736
|
+
events: [
|
|
737
|
+
'created',
|
|
738
|
+
'scheduled',
|
|
739
|
+
'started',
|
|
740
|
+
'ended',
|
|
741
|
+
'canceled',
|
|
742
|
+
'rescheduled',
|
|
743
|
+
'panelistAdded',
|
|
744
|
+
'panelistRemoved',
|
|
745
|
+
'registrantRegistered',
|
|
746
|
+
'registrantApproved',
|
|
747
|
+
'registrantRejected',
|
|
748
|
+
'registrantJoined',
|
|
749
|
+
'registrantLeft',
|
|
750
|
+
'recordingStarted',
|
|
751
|
+
'recordingStopped',
|
|
752
|
+
'pollLaunched',
|
|
753
|
+
],
|
|
754
|
+
};
|
|
755
|
+
/**
|
|
756
|
+
* WebinarRegistrant - A registrant for a webinar
|
|
757
|
+
*
|
|
758
|
+
* Represents someone who has registered for a webinar.
|
|
759
|
+
*/
|
|
760
|
+
export const WebinarRegistrant = {
|
|
761
|
+
singular: 'webinar registrant',
|
|
762
|
+
plural: 'webinar registrants',
|
|
763
|
+
description: 'A person registered for a webinar',
|
|
764
|
+
properties: {
|
|
765
|
+
// Identity
|
|
766
|
+
email: {
|
|
767
|
+
type: 'string',
|
|
768
|
+
description: 'Registrant email address',
|
|
769
|
+
},
|
|
770
|
+
firstName: {
|
|
771
|
+
type: 'string',
|
|
772
|
+
description: 'First name',
|
|
773
|
+
},
|
|
774
|
+
lastName: {
|
|
775
|
+
type: 'string',
|
|
776
|
+
description: 'Last name',
|
|
777
|
+
},
|
|
778
|
+
organization: {
|
|
779
|
+
type: 'string',
|
|
780
|
+
optional: true,
|
|
781
|
+
description: 'Organization or company',
|
|
782
|
+
},
|
|
783
|
+
jobTitle: {
|
|
784
|
+
type: 'string',
|
|
785
|
+
optional: true,
|
|
786
|
+
description: 'Job title',
|
|
787
|
+
},
|
|
788
|
+
// Registration
|
|
789
|
+
registeredAt: {
|
|
790
|
+
type: 'datetime',
|
|
791
|
+
description: 'When they registered',
|
|
792
|
+
},
|
|
793
|
+
registrationStatus: {
|
|
794
|
+
type: 'string',
|
|
795
|
+
description: 'Registration status: pending, approved, rejected, canceled',
|
|
796
|
+
examples: ['pending', 'approved', 'rejected', 'canceled'],
|
|
797
|
+
},
|
|
798
|
+
// Attendance
|
|
799
|
+
attended: {
|
|
800
|
+
type: 'boolean',
|
|
801
|
+
optional: true,
|
|
802
|
+
description: 'Whether they attended the webinar',
|
|
803
|
+
},
|
|
804
|
+
joinedAt: {
|
|
805
|
+
type: 'datetime',
|
|
806
|
+
optional: true,
|
|
807
|
+
description: 'When they joined the webinar',
|
|
808
|
+
},
|
|
809
|
+
leftAt: {
|
|
810
|
+
type: 'datetime',
|
|
811
|
+
optional: true,
|
|
812
|
+
description: 'When they left the webinar',
|
|
813
|
+
},
|
|
814
|
+
attendanceDuration: {
|
|
815
|
+
type: 'number',
|
|
816
|
+
optional: true,
|
|
817
|
+
description: 'Duration of attendance in minutes',
|
|
818
|
+
},
|
|
819
|
+
// Access
|
|
820
|
+
joinUrl: {
|
|
821
|
+
type: 'url',
|
|
822
|
+
optional: true,
|
|
823
|
+
description: 'Personal join URL',
|
|
824
|
+
},
|
|
825
|
+
// Custom Questions
|
|
826
|
+
customAnswers: {
|
|
827
|
+
type: 'json',
|
|
828
|
+
optional: true,
|
|
829
|
+
description: 'Answers to custom registration questions',
|
|
830
|
+
},
|
|
831
|
+
},
|
|
832
|
+
relationships: {
|
|
833
|
+
webinar: {
|
|
834
|
+
type: 'Webinar',
|
|
835
|
+
backref: 'registrants',
|
|
836
|
+
description: 'The webinar they registered for',
|
|
837
|
+
},
|
|
838
|
+
contact: {
|
|
839
|
+
type: 'Contact',
|
|
840
|
+
required: false,
|
|
841
|
+
description: 'Associated contact record',
|
|
842
|
+
},
|
|
843
|
+
},
|
|
844
|
+
actions: [
|
|
845
|
+
'register',
|
|
846
|
+
'approve',
|
|
847
|
+
'reject',
|
|
848
|
+
'cancel',
|
|
849
|
+
'sendJoinUrl',
|
|
850
|
+
'sendReminder',
|
|
851
|
+
],
|
|
852
|
+
events: [
|
|
853
|
+
'registered',
|
|
854
|
+
'approved',
|
|
855
|
+
'rejected',
|
|
856
|
+
'canceled',
|
|
857
|
+
'joined',
|
|
858
|
+
'left',
|
|
859
|
+
'reminderSent',
|
|
860
|
+
],
|
|
861
|
+
};
|
|
862
|
+
// =============================================================================
|
|
863
|
+
// Meeting Room
|
|
864
|
+
// =============================================================================
|
|
865
|
+
/**
|
|
866
|
+
* MeetingRoom - A persistent virtual meeting room
|
|
867
|
+
*
|
|
868
|
+
* Represents a permanent virtual room with a fixed URL that can be used
|
|
869
|
+
* for multiple meetings over time. Similar to Zoom Personal Meeting Room.
|
|
870
|
+
*/
|
|
871
|
+
export const MeetingRoom = {
|
|
872
|
+
singular: 'meeting room',
|
|
873
|
+
plural: 'meeting rooms',
|
|
874
|
+
description: 'A persistent virtual meeting room with a permanent URL',
|
|
875
|
+
properties: {
|
|
876
|
+
// Identity
|
|
877
|
+
name: {
|
|
878
|
+
type: 'string',
|
|
879
|
+
description: 'Room name',
|
|
880
|
+
},
|
|
881
|
+
roomId: {
|
|
882
|
+
type: 'string',
|
|
883
|
+
description: 'Unique room identifier',
|
|
884
|
+
},
|
|
885
|
+
description: {
|
|
886
|
+
type: 'string',
|
|
887
|
+
optional: true,
|
|
888
|
+
description: 'Room description or purpose',
|
|
889
|
+
},
|
|
890
|
+
// Access
|
|
891
|
+
permanentUrl: {
|
|
892
|
+
type: 'url',
|
|
893
|
+
description: 'Permanent URL to join this room',
|
|
894
|
+
},
|
|
895
|
+
roomNumber: {
|
|
896
|
+
type: 'string',
|
|
897
|
+
optional: true,
|
|
898
|
+
description: 'Room number or ID (e.g., PMI)',
|
|
899
|
+
},
|
|
900
|
+
passcode: {
|
|
901
|
+
type: 'string',
|
|
902
|
+
optional: true,
|
|
903
|
+
description: 'Passcode to join the room',
|
|
904
|
+
},
|
|
905
|
+
// Settings
|
|
906
|
+
isPublic: {
|
|
907
|
+
type: 'boolean',
|
|
908
|
+
optional: true,
|
|
909
|
+
description: 'Whether the room is publicly accessible',
|
|
910
|
+
},
|
|
911
|
+
requiresPassword: {
|
|
912
|
+
type: 'boolean',
|
|
913
|
+
optional: true,
|
|
914
|
+
description: 'Whether password is required',
|
|
915
|
+
},
|
|
916
|
+
waitingRoomEnabled: {
|
|
917
|
+
type: 'boolean',
|
|
918
|
+
optional: true,
|
|
919
|
+
description: 'Whether waiting room is enabled',
|
|
920
|
+
},
|
|
921
|
+
maxParticipants: {
|
|
922
|
+
type: 'number',
|
|
923
|
+
optional: true,
|
|
924
|
+
description: 'Maximum number of participants',
|
|
925
|
+
},
|
|
926
|
+
// Status
|
|
927
|
+
isActive: {
|
|
928
|
+
type: 'boolean',
|
|
929
|
+
optional: true,
|
|
930
|
+
description: 'Whether there is currently an active meeting',
|
|
931
|
+
},
|
|
932
|
+
currentParticipantCount: {
|
|
933
|
+
type: 'number',
|
|
934
|
+
optional: true,
|
|
935
|
+
description: 'Current number of participants',
|
|
936
|
+
},
|
|
937
|
+
// Usage
|
|
938
|
+
totalMeetings: {
|
|
939
|
+
type: 'number',
|
|
940
|
+
optional: true,
|
|
941
|
+
description: 'Total number of meetings held in this room',
|
|
942
|
+
},
|
|
943
|
+
lastUsedAt: {
|
|
944
|
+
type: 'datetime',
|
|
945
|
+
optional: true,
|
|
946
|
+
description: 'When the room was last used',
|
|
947
|
+
},
|
|
948
|
+
},
|
|
949
|
+
relationships: {
|
|
950
|
+
owner: {
|
|
951
|
+
type: 'Contact',
|
|
952
|
+
description: 'Room owner',
|
|
953
|
+
},
|
|
954
|
+
coHosts: {
|
|
955
|
+
type: 'Contact[]',
|
|
956
|
+
description: 'Co-hosts with access to manage the room',
|
|
957
|
+
},
|
|
958
|
+
meetings: {
|
|
959
|
+
type: 'Meeting[]',
|
|
960
|
+
description: 'Meetings held in this room',
|
|
961
|
+
},
|
|
962
|
+
},
|
|
963
|
+
actions: [
|
|
964
|
+
'create',
|
|
965
|
+
'configure',
|
|
966
|
+
'start',
|
|
967
|
+
'lock',
|
|
968
|
+
'unlock',
|
|
969
|
+
'delete',
|
|
970
|
+
'addCoHost',
|
|
971
|
+
'removeCoHost',
|
|
972
|
+
'generateInvite',
|
|
973
|
+
'resetPasscode',
|
|
974
|
+
],
|
|
975
|
+
events: [
|
|
976
|
+
'created',
|
|
977
|
+
'configured',
|
|
978
|
+
'meetingStarted',
|
|
979
|
+
'meetingEnded',
|
|
980
|
+
'locked',
|
|
981
|
+
'unlocked',
|
|
982
|
+
'deleted',
|
|
983
|
+
'coHostAdded',
|
|
984
|
+
'coHostRemoved',
|
|
985
|
+
],
|
|
986
|
+
};
|
|
987
|
+
// =============================================================================
|
|
988
|
+
// Breakout Room
|
|
989
|
+
// =============================================================================
|
|
990
|
+
/**
|
|
991
|
+
* BreakoutRoom - A breakout room within a meeting
|
|
992
|
+
*
|
|
993
|
+
* Represents a separate sub-meeting room where participants can split
|
|
994
|
+
* into smaller groups for discussions.
|
|
995
|
+
*/
|
|
996
|
+
export const BreakoutRoom = {
|
|
997
|
+
singular: 'breakout room',
|
|
998
|
+
plural: 'breakout rooms',
|
|
999
|
+
description: 'A breakout room for small group discussions within a meeting',
|
|
1000
|
+
properties: {
|
|
1001
|
+
// Identity
|
|
1002
|
+
name: {
|
|
1003
|
+
type: 'string',
|
|
1004
|
+
description: 'Breakout room name',
|
|
1005
|
+
},
|
|
1006
|
+
roomNumber: {
|
|
1007
|
+
type: 'number',
|
|
1008
|
+
description: 'Room number (1, 2, 3, etc.)',
|
|
1009
|
+
},
|
|
1010
|
+
// Status
|
|
1011
|
+
status: {
|
|
1012
|
+
type: 'string',
|
|
1013
|
+
description: 'Room status: created, open, closed',
|
|
1014
|
+
examples: ['created', 'open', 'closed'],
|
|
1015
|
+
},
|
|
1016
|
+
isOpen: {
|
|
1017
|
+
type: 'boolean',
|
|
1018
|
+
optional: true,
|
|
1019
|
+
description: 'Whether the room is currently open',
|
|
1020
|
+
},
|
|
1021
|
+
// Timing
|
|
1022
|
+
duration: {
|
|
1023
|
+
type: 'number',
|
|
1024
|
+
optional: true,
|
|
1025
|
+
description: 'Duration in minutes',
|
|
1026
|
+
},
|
|
1027
|
+
startedAt: {
|
|
1028
|
+
type: 'datetime',
|
|
1029
|
+
optional: true,
|
|
1030
|
+
description: 'When the room was opened',
|
|
1031
|
+
},
|
|
1032
|
+
closedAt: {
|
|
1033
|
+
type: 'datetime',
|
|
1034
|
+
optional: true,
|
|
1035
|
+
description: 'When the room was closed',
|
|
1036
|
+
},
|
|
1037
|
+
// Settings
|
|
1038
|
+
allowParticipantsToReturn: {
|
|
1039
|
+
type: 'boolean',
|
|
1040
|
+
optional: true,
|
|
1041
|
+
description: 'Whether participants can return to main room',
|
|
1042
|
+
},
|
|
1043
|
+
autoMoveParticipants: {
|
|
1044
|
+
type: 'boolean',
|
|
1045
|
+
optional: true,
|
|
1046
|
+
description: 'Whether to automatically move participants',
|
|
1047
|
+
},
|
|
1048
|
+
// Statistics
|
|
1049
|
+
participantCount: {
|
|
1050
|
+
type: 'number',
|
|
1051
|
+
optional: true,
|
|
1052
|
+
description: 'Number of participants in this room',
|
|
1053
|
+
},
|
|
1054
|
+
},
|
|
1055
|
+
relationships: {
|
|
1056
|
+
meeting: {
|
|
1057
|
+
type: 'Meeting',
|
|
1058
|
+
backref: 'breakoutRooms',
|
|
1059
|
+
description: 'Parent meeting',
|
|
1060
|
+
},
|
|
1061
|
+
participants: {
|
|
1062
|
+
type: 'MeetingParticipant[]',
|
|
1063
|
+
description: 'Participants assigned to this room',
|
|
1064
|
+
},
|
|
1065
|
+
},
|
|
1066
|
+
actions: [
|
|
1067
|
+
'create',
|
|
1068
|
+
'open',
|
|
1069
|
+
'close',
|
|
1070
|
+
'assignParticipant',
|
|
1071
|
+
'removeParticipant',
|
|
1072
|
+
'broadcast',
|
|
1073
|
+
'rename',
|
|
1074
|
+
],
|
|
1075
|
+
events: [
|
|
1076
|
+
'created',
|
|
1077
|
+
'opened',
|
|
1078
|
+
'closed',
|
|
1079
|
+
'participantAssigned',
|
|
1080
|
+
'participantRemoved',
|
|
1081
|
+
'participantJoined',
|
|
1082
|
+
'participantLeft',
|
|
1083
|
+
'messageReceived',
|
|
1084
|
+
],
|
|
1085
|
+
};
|
|
1086
|
+
// =============================================================================
|
|
1087
|
+
// Meeting Poll
|
|
1088
|
+
// =============================================================================
|
|
1089
|
+
/**
|
|
1090
|
+
* MeetingPoll - A poll launched during a meeting
|
|
1091
|
+
*
|
|
1092
|
+
* Represents a poll or survey that can be launched during a meeting
|
|
1093
|
+
* to gather real-time feedback from participants.
|
|
1094
|
+
*/
|
|
1095
|
+
export const MeetingPoll = {
|
|
1096
|
+
singular: 'meeting poll',
|
|
1097
|
+
plural: 'meeting polls',
|
|
1098
|
+
description: 'A poll or survey during a meeting',
|
|
1099
|
+
properties: {
|
|
1100
|
+
// Identity
|
|
1101
|
+
title: {
|
|
1102
|
+
type: 'string',
|
|
1103
|
+
description: 'Poll title or question',
|
|
1104
|
+
},
|
|
1105
|
+
pollId: {
|
|
1106
|
+
type: 'string',
|
|
1107
|
+
description: 'Unique poll identifier',
|
|
1108
|
+
},
|
|
1109
|
+
// Question
|
|
1110
|
+
question: {
|
|
1111
|
+
type: 'string',
|
|
1112
|
+
description: 'Poll question text',
|
|
1113
|
+
},
|
|
1114
|
+
questionType: {
|
|
1115
|
+
type: 'string',
|
|
1116
|
+
description: 'Question type: single-choice, multiple-choice, rating, open-ended',
|
|
1117
|
+
examples: ['single-choice', 'multiple-choice', 'rating', 'open-ended'],
|
|
1118
|
+
},
|
|
1119
|
+
// Options
|
|
1120
|
+
options: {
|
|
1121
|
+
type: 'json',
|
|
1122
|
+
array: true,
|
|
1123
|
+
description: 'Poll answer options',
|
|
1124
|
+
},
|
|
1125
|
+
// Status
|
|
1126
|
+
status: {
|
|
1127
|
+
type: 'string',
|
|
1128
|
+
description: 'Poll status: draft, active, ended, results-shared',
|
|
1129
|
+
examples: ['draft', 'active', 'ended', 'results-shared'],
|
|
1130
|
+
},
|
|
1131
|
+
launchedAt: {
|
|
1132
|
+
type: 'datetime',
|
|
1133
|
+
optional: true,
|
|
1134
|
+
description: 'When the poll was launched',
|
|
1135
|
+
},
|
|
1136
|
+
endedAt: {
|
|
1137
|
+
type: 'datetime',
|
|
1138
|
+
optional: true,
|
|
1139
|
+
description: 'When the poll was ended',
|
|
1140
|
+
},
|
|
1141
|
+
// Settings
|
|
1142
|
+
anonymous: {
|
|
1143
|
+
type: 'boolean',
|
|
1144
|
+
optional: true,
|
|
1145
|
+
description: 'Whether responses are anonymous',
|
|
1146
|
+
},
|
|
1147
|
+
allowMultipleAnswers: {
|
|
1148
|
+
type: 'boolean',
|
|
1149
|
+
optional: true,
|
|
1150
|
+
description: 'Whether multiple answers are allowed',
|
|
1151
|
+
},
|
|
1152
|
+
showResults: {
|
|
1153
|
+
type: 'boolean',
|
|
1154
|
+
optional: true,
|
|
1155
|
+
description: 'Whether to show results to participants',
|
|
1156
|
+
},
|
|
1157
|
+
// Results
|
|
1158
|
+
totalResponses: {
|
|
1159
|
+
type: 'number',
|
|
1160
|
+
optional: true,
|
|
1161
|
+
description: 'Total number of responses',
|
|
1162
|
+
},
|
|
1163
|
+
results: {
|
|
1164
|
+
type: 'json',
|
|
1165
|
+
optional: true,
|
|
1166
|
+
description: 'Poll results and statistics',
|
|
1167
|
+
},
|
|
1168
|
+
},
|
|
1169
|
+
relationships: {
|
|
1170
|
+
meeting: {
|
|
1171
|
+
type: 'Meeting',
|
|
1172
|
+
backref: 'polls',
|
|
1173
|
+
description: 'Meeting this poll belongs to',
|
|
1174
|
+
},
|
|
1175
|
+
createdBy: {
|
|
1176
|
+
type: 'Contact',
|
|
1177
|
+
description: 'Who created the poll',
|
|
1178
|
+
},
|
|
1179
|
+
},
|
|
1180
|
+
actions: [
|
|
1181
|
+
'create',
|
|
1182
|
+
'launch',
|
|
1183
|
+
'end',
|
|
1184
|
+
'delete',
|
|
1185
|
+
'shareResults',
|
|
1186
|
+
'hideResults',
|
|
1187
|
+
'export',
|
|
1188
|
+
],
|
|
1189
|
+
events: [
|
|
1190
|
+
'created',
|
|
1191
|
+
'launched',
|
|
1192
|
+
'ended',
|
|
1193
|
+
'deleted',
|
|
1194
|
+
'responseReceived',
|
|
1195
|
+
'resultsShared',
|
|
1196
|
+
'resultsHidden',
|
|
1197
|
+
],
|
|
1198
|
+
};
|
|
1199
|
+
// =============================================================================
|
|
1200
|
+
// Meeting Chat
|
|
1201
|
+
// =============================================================================
|
|
1202
|
+
/**
|
|
1203
|
+
* MeetingChat - Chat messages during a meeting
|
|
1204
|
+
*
|
|
1205
|
+
* Represents the chat functionality within a meeting, including
|
|
1206
|
+
* messages sent to everyone or privately.
|
|
1207
|
+
*/
|
|
1208
|
+
export const MeetingChat = {
|
|
1209
|
+
singular: 'meeting chat',
|
|
1210
|
+
plural: 'meeting chats',
|
|
1211
|
+
description: 'Chat messages and conversations during a meeting',
|
|
1212
|
+
properties: {
|
|
1213
|
+
// Message
|
|
1214
|
+
text: {
|
|
1215
|
+
type: 'string',
|
|
1216
|
+
description: 'Message text content',
|
|
1217
|
+
},
|
|
1218
|
+
messageId: {
|
|
1219
|
+
type: 'string',
|
|
1220
|
+
description: 'Unique message identifier',
|
|
1221
|
+
},
|
|
1222
|
+
// Timing
|
|
1223
|
+
sentAt: {
|
|
1224
|
+
type: 'datetime',
|
|
1225
|
+
description: 'When the message was sent',
|
|
1226
|
+
},
|
|
1227
|
+
// Recipient
|
|
1228
|
+
recipientType: {
|
|
1229
|
+
type: 'string',
|
|
1230
|
+
description: 'Who can see the message: everyone, private, panelists, host',
|
|
1231
|
+
examples: ['everyone', 'private', 'panelists', 'host'],
|
|
1232
|
+
},
|
|
1233
|
+
recipientId: {
|
|
1234
|
+
type: 'string',
|
|
1235
|
+
optional: true,
|
|
1236
|
+
description: 'Recipient user ID for private messages',
|
|
1237
|
+
},
|
|
1238
|
+
// Content Type
|
|
1239
|
+
messageType: {
|
|
1240
|
+
type: 'string',
|
|
1241
|
+
description: 'Message type: text, file, emoji, system',
|
|
1242
|
+
examples: ['text', 'file', 'emoji', 'system'],
|
|
1243
|
+
},
|
|
1244
|
+
// File Attachment
|
|
1245
|
+
fileUrl: {
|
|
1246
|
+
type: 'url',
|
|
1247
|
+
optional: true,
|
|
1248
|
+
description: 'URL to attached file',
|
|
1249
|
+
},
|
|
1250
|
+
fileName: {
|
|
1251
|
+
type: 'string',
|
|
1252
|
+
optional: true,
|
|
1253
|
+
description: 'Name of attached file',
|
|
1254
|
+
},
|
|
1255
|
+
fileSize: {
|
|
1256
|
+
type: 'number',
|
|
1257
|
+
optional: true,
|
|
1258
|
+
description: 'Size of attached file in bytes',
|
|
1259
|
+
},
|
|
1260
|
+
},
|
|
1261
|
+
relationships: {
|
|
1262
|
+
meeting: {
|
|
1263
|
+
type: 'Meeting',
|
|
1264
|
+
backref: 'chat',
|
|
1265
|
+
description: 'Meeting this chat belongs to',
|
|
1266
|
+
},
|
|
1267
|
+
sender: {
|
|
1268
|
+
type: 'MeetingParticipant',
|
|
1269
|
+
description: 'Participant who sent the message',
|
|
1270
|
+
},
|
|
1271
|
+
recipient: {
|
|
1272
|
+
type: 'MeetingParticipant',
|
|
1273
|
+
required: false,
|
|
1274
|
+
description: 'Recipient for private messages',
|
|
1275
|
+
},
|
|
1276
|
+
},
|
|
1277
|
+
actions: [
|
|
1278
|
+
'send',
|
|
1279
|
+
'delete',
|
|
1280
|
+
'save',
|
|
1281
|
+
'export',
|
|
1282
|
+
'enable',
|
|
1283
|
+
'disable',
|
|
1284
|
+
'restrictToHost',
|
|
1285
|
+
],
|
|
1286
|
+
events: [
|
|
1287
|
+
'messageSent',
|
|
1288
|
+
'messageDeleted',
|
|
1289
|
+
'chatSaved',
|
|
1290
|
+
'chatExported',
|
|
1291
|
+
'chatEnabled',
|
|
1292
|
+
'chatDisabled',
|
|
1293
|
+
],
|
|
1294
|
+
};
|
|
1295
|
+
// =============================================================================
|
|
1296
|
+
// Meeting Type (Template)
|
|
1297
|
+
// =============================================================================
|
|
1298
|
+
/**
|
|
1299
|
+
* MeetingType - A template for scheduling meetings
|
|
1300
|
+
*
|
|
1301
|
+
* Represents a reusable meeting configuration (like Calendly event types).
|
|
1302
|
+
* Defines duration, location, availability, and booking settings.
|
|
1303
|
+
*/
|
|
1304
|
+
export const MeetingType = {
|
|
1305
|
+
singular: 'meeting type',
|
|
1306
|
+
plural: 'meeting types',
|
|
1307
|
+
description: 'A template for scheduling meetings with predefined settings',
|
|
1308
|
+
properties: {
|
|
1309
|
+
name: {
|
|
1310
|
+
type: 'string',
|
|
1311
|
+
description: 'Meeting type name',
|
|
1312
|
+
},
|
|
1313
|
+
slug: {
|
|
1314
|
+
type: 'string',
|
|
1315
|
+
description: 'URL-friendly identifier',
|
|
1316
|
+
},
|
|
1317
|
+
description: {
|
|
1318
|
+
type: 'string',
|
|
1319
|
+
optional: true,
|
|
1320
|
+
description: 'Description shown to invitees',
|
|
1321
|
+
},
|
|
1322
|
+
duration: {
|
|
1323
|
+
type: 'number',
|
|
1324
|
+
description: 'Default duration in minutes',
|
|
1325
|
+
},
|
|
1326
|
+
bufferBefore: {
|
|
1327
|
+
type: 'number',
|
|
1328
|
+
optional: true,
|
|
1329
|
+
description: 'Buffer time before meeting (minutes)',
|
|
1330
|
+
},
|
|
1331
|
+
bufferAfter: {
|
|
1332
|
+
type: 'number',
|
|
1333
|
+
optional: true,
|
|
1334
|
+
description: 'Buffer time after meeting (minutes)',
|
|
1335
|
+
},
|
|
1336
|
+
locationType: {
|
|
1337
|
+
type: 'string',
|
|
1338
|
+
description: 'Meeting location type',
|
|
1339
|
+
examples: ['video', 'phone', 'in-person'],
|
|
1340
|
+
},
|
|
1341
|
+
locationDetails: {
|
|
1342
|
+
type: 'string',
|
|
1343
|
+
optional: true,
|
|
1344
|
+
description: 'Location details or address',
|
|
1345
|
+
},
|
|
1346
|
+
videoProvider: {
|
|
1347
|
+
type: 'string',
|
|
1348
|
+
optional: true,
|
|
1349
|
+
description: 'Video provider: zoom, google-meet, teams',
|
|
1350
|
+
examples: ['zoom', 'google-meet', 'teams'],
|
|
1351
|
+
},
|
|
1352
|
+
minimumNotice: {
|
|
1353
|
+
type: 'number',
|
|
1354
|
+
optional: true,
|
|
1355
|
+
description: 'Minimum notice required (minutes)',
|
|
1356
|
+
},
|
|
1357
|
+
maximumAdvance: {
|
|
1358
|
+
type: 'number',
|
|
1359
|
+
optional: true,
|
|
1360
|
+
description: 'Maximum advance booking (days)',
|
|
1361
|
+
},
|
|
1362
|
+
requiresConfirmation: {
|
|
1363
|
+
type: 'boolean',
|
|
1364
|
+
optional: true,
|
|
1365
|
+
description: 'Whether host must confirm bookings',
|
|
1366
|
+
},
|
|
1367
|
+
allowReschedule: {
|
|
1368
|
+
type: 'boolean',
|
|
1369
|
+
optional: true,
|
|
1370
|
+
description: 'Whether invitees can reschedule',
|
|
1371
|
+
},
|
|
1372
|
+
allowCancel: {
|
|
1373
|
+
type: 'boolean',
|
|
1374
|
+
optional: true,
|
|
1375
|
+
description: 'Whether invitees can cancel',
|
|
1376
|
+
},
|
|
1377
|
+
customQuestions: {
|
|
1378
|
+
type: 'json',
|
|
1379
|
+
optional: true,
|
|
1380
|
+
description: 'Custom intake questions for invitees',
|
|
1381
|
+
},
|
|
1382
|
+
confirmationMessage: {
|
|
1383
|
+
type: 'string',
|
|
1384
|
+
optional: true,
|
|
1385
|
+
description: 'Message shown after booking',
|
|
1386
|
+
},
|
|
1387
|
+
color: {
|
|
1388
|
+
type: 'string',
|
|
1389
|
+
optional: true,
|
|
1390
|
+
description: 'Display color for calendar',
|
|
1391
|
+
},
|
|
1392
|
+
isActive: {
|
|
1393
|
+
type: 'boolean',
|
|
1394
|
+
optional: true,
|
|
1395
|
+
description: 'Whether this meeting type is active',
|
|
1396
|
+
},
|
|
1397
|
+
isPublic: {
|
|
1398
|
+
type: 'boolean',
|
|
1399
|
+
optional: true,
|
|
1400
|
+
description: 'Whether publicly visible',
|
|
1401
|
+
},
|
|
1402
|
+
},
|
|
1403
|
+
relationships: {
|
|
1404
|
+
host: {
|
|
1405
|
+
type: 'Contact',
|
|
1406
|
+
description: 'Host who owns this meeting type',
|
|
1407
|
+
},
|
|
1408
|
+
meetings: {
|
|
1409
|
+
type: 'Meeting[]',
|
|
1410
|
+
backref: 'meetingType',
|
|
1411
|
+
description: 'Meetings created from this type',
|
|
1412
|
+
},
|
|
1413
|
+
},
|
|
1414
|
+
actions: [
|
|
1415
|
+
'create',
|
|
1416
|
+
'update',
|
|
1417
|
+
'activate',
|
|
1418
|
+
'deactivate',
|
|
1419
|
+
'duplicate',
|
|
1420
|
+
'archive',
|
|
1421
|
+
],
|
|
1422
|
+
events: [
|
|
1423
|
+
'created',
|
|
1424
|
+
'updated',
|
|
1425
|
+
'activated',
|
|
1426
|
+
'deactivated',
|
|
1427
|
+
'archived',
|
|
1428
|
+
],
|
|
1429
|
+
};
|
|
1430
|
+
// =============================================================================
|
|
1431
|
+
// Resource (Room/Equipment)
|
|
1432
|
+
// =============================================================================
|
|
1433
|
+
/**
|
|
1434
|
+
* Resource - A bookable physical resource
|
|
1435
|
+
*
|
|
1436
|
+
* Represents a room, equipment, desk, or other physical resource
|
|
1437
|
+
* that can be reserved for meetings or other purposes.
|
|
1438
|
+
*/
|
|
1439
|
+
export const Resource = {
|
|
1440
|
+
singular: 'resource',
|
|
1441
|
+
plural: 'resources',
|
|
1442
|
+
description: 'A bookable physical resource like a room or equipment',
|
|
1443
|
+
properties: {
|
|
1444
|
+
name: {
|
|
1445
|
+
type: 'string',
|
|
1446
|
+
description: 'Resource name',
|
|
1447
|
+
},
|
|
1448
|
+
description: {
|
|
1449
|
+
type: 'string',
|
|
1450
|
+
optional: true,
|
|
1451
|
+
description: 'Resource description',
|
|
1452
|
+
},
|
|
1453
|
+
type: {
|
|
1454
|
+
type: 'string',
|
|
1455
|
+
description: 'Resource type',
|
|
1456
|
+
examples: ['room', 'equipment', 'vehicle', 'desk'],
|
|
1457
|
+
},
|
|
1458
|
+
location: {
|
|
1459
|
+
type: 'string',
|
|
1460
|
+
optional: true,
|
|
1461
|
+
description: 'Physical location',
|
|
1462
|
+
},
|
|
1463
|
+
capacity: {
|
|
1464
|
+
type: 'number',
|
|
1465
|
+
optional: true,
|
|
1466
|
+
description: 'Capacity (for rooms)',
|
|
1467
|
+
},
|
|
1468
|
+
amenities: {
|
|
1469
|
+
type: 'string',
|
|
1470
|
+
array: true,
|
|
1471
|
+
optional: true,
|
|
1472
|
+
description: 'Available amenities',
|
|
1473
|
+
},
|
|
1474
|
+
images: {
|
|
1475
|
+
type: 'url',
|
|
1476
|
+
array: true,
|
|
1477
|
+
optional: true,
|
|
1478
|
+
description: 'Resource images',
|
|
1479
|
+
},
|
|
1480
|
+
hourlyRate: {
|
|
1481
|
+
type: 'number',
|
|
1482
|
+
optional: true,
|
|
1483
|
+
description: 'Hourly rate',
|
|
1484
|
+
},
|
|
1485
|
+
currency: {
|
|
1486
|
+
type: 'string',
|
|
1487
|
+
optional: true,
|
|
1488
|
+
description: 'Rate currency',
|
|
1489
|
+
},
|
|
1490
|
+
requiresApproval: {
|
|
1491
|
+
type: 'boolean',
|
|
1492
|
+
optional: true,
|
|
1493
|
+
description: 'Whether reservations require approval',
|
|
1494
|
+
},
|
|
1495
|
+
isActive: {
|
|
1496
|
+
type: 'boolean',
|
|
1497
|
+
optional: true,
|
|
1498
|
+
description: 'Whether resource is available',
|
|
1499
|
+
},
|
|
1500
|
+
maintenanceMode: {
|
|
1501
|
+
type: 'boolean',
|
|
1502
|
+
optional: true,
|
|
1503
|
+
description: 'Whether in maintenance mode',
|
|
1504
|
+
},
|
|
1505
|
+
rules: {
|
|
1506
|
+
type: 'string',
|
|
1507
|
+
optional: true,
|
|
1508
|
+
description: 'Usage rules and guidelines',
|
|
1509
|
+
},
|
|
1510
|
+
},
|
|
1511
|
+
relationships: {
|
|
1512
|
+
reservations: {
|
|
1513
|
+
type: 'Reservation[]',
|
|
1514
|
+
backref: 'resource',
|
|
1515
|
+
description: 'Reservations for this resource',
|
|
1516
|
+
},
|
|
1517
|
+
},
|
|
1518
|
+
actions: [
|
|
1519
|
+
'create',
|
|
1520
|
+
'update',
|
|
1521
|
+
'activate',
|
|
1522
|
+
'deactivate',
|
|
1523
|
+
'setMaintenance',
|
|
1524
|
+
'clearMaintenance',
|
|
1525
|
+
],
|
|
1526
|
+
events: [
|
|
1527
|
+
'created',
|
|
1528
|
+
'updated',
|
|
1529
|
+
'activated',
|
|
1530
|
+
'deactivated',
|
|
1531
|
+
'maintenanceStarted',
|
|
1532
|
+
'maintenanceEnded',
|
|
1533
|
+
],
|
|
1534
|
+
};
|
|
1535
|
+
// =============================================================================
|
|
1536
|
+
// Reservation
|
|
1537
|
+
// =============================================================================
|
|
1538
|
+
/**
|
|
1539
|
+
* Reservation - A booking for a resource
|
|
1540
|
+
*
|
|
1541
|
+
* Represents a time-bound reservation of a physical resource.
|
|
1542
|
+
*/
|
|
1543
|
+
export const Reservation = {
|
|
1544
|
+
singular: 'reservation',
|
|
1545
|
+
plural: 'reservations',
|
|
1546
|
+
description: 'A time-bound reservation of a physical resource',
|
|
1547
|
+
properties: {
|
|
1548
|
+
title: {
|
|
1549
|
+
type: 'string',
|
|
1550
|
+
optional: true,
|
|
1551
|
+
description: 'Reservation title',
|
|
1552
|
+
},
|
|
1553
|
+
purpose: {
|
|
1554
|
+
type: 'string',
|
|
1555
|
+
optional: true,
|
|
1556
|
+
description: 'Purpose of the reservation',
|
|
1557
|
+
},
|
|
1558
|
+
status: {
|
|
1559
|
+
type: 'string',
|
|
1560
|
+
description: 'Reservation status',
|
|
1561
|
+
examples: ['pending', 'approved', 'rejected', 'cancelled', 'checked-in', 'completed'],
|
|
1562
|
+
},
|
|
1563
|
+
startTime: {
|
|
1564
|
+
type: 'datetime',
|
|
1565
|
+
description: 'Start date and time',
|
|
1566
|
+
},
|
|
1567
|
+
endTime: {
|
|
1568
|
+
type: 'datetime',
|
|
1569
|
+
description: 'End date and time',
|
|
1570
|
+
},
|
|
1571
|
+
timezone: {
|
|
1572
|
+
type: 'string',
|
|
1573
|
+
description: 'Timezone',
|
|
1574
|
+
},
|
|
1575
|
+
attendeeCount: {
|
|
1576
|
+
type: 'number',
|
|
1577
|
+
optional: true,
|
|
1578
|
+
description: 'Expected attendees',
|
|
1579
|
+
},
|
|
1580
|
+
notes: {
|
|
1581
|
+
type: 'string',
|
|
1582
|
+
optional: true,
|
|
1583
|
+
description: 'Additional notes',
|
|
1584
|
+
},
|
|
1585
|
+
approvedAt: {
|
|
1586
|
+
type: 'datetime',
|
|
1587
|
+
optional: true,
|
|
1588
|
+
description: 'Approval timestamp',
|
|
1589
|
+
},
|
|
1590
|
+
rejectionReason: {
|
|
1591
|
+
type: 'string',
|
|
1592
|
+
optional: true,
|
|
1593
|
+
description: 'Reason for rejection',
|
|
1594
|
+
},
|
|
1595
|
+
checkedInAt: {
|
|
1596
|
+
type: 'datetime',
|
|
1597
|
+
optional: true,
|
|
1598
|
+
description: 'Check-in timestamp',
|
|
1599
|
+
},
|
|
1600
|
+
checkedOutAt: {
|
|
1601
|
+
type: 'datetime',
|
|
1602
|
+
optional: true,
|
|
1603
|
+
description: 'Check-out timestamp',
|
|
1604
|
+
},
|
|
1605
|
+
},
|
|
1606
|
+
relationships: {
|
|
1607
|
+
resource: {
|
|
1608
|
+
type: 'Resource',
|
|
1609
|
+
backref: 'reservations',
|
|
1610
|
+
description: 'Reserved resource',
|
|
1611
|
+
},
|
|
1612
|
+
requestedBy: {
|
|
1613
|
+
type: 'Contact',
|
|
1614
|
+
description: 'Who made the reservation',
|
|
1615
|
+
},
|
|
1616
|
+
approvedBy: {
|
|
1617
|
+
type: 'Contact',
|
|
1618
|
+
required: false,
|
|
1619
|
+
description: 'Who approved the reservation',
|
|
1620
|
+
},
|
|
1621
|
+
meeting: {
|
|
1622
|
+
type: 'Meeting',
|
|
1623
|
+
required: false,
|
|
1624
|
+
description: 'Associated meeting if applicable',
|
|
1625
|
+
},
|
|
1626
|
+
},
|
|
1627
|
+
actions: [
|
|
1628
|
+
'create',
|
|
1629
|
+
'approve',
|
|
1630
|
+
'reject',
|
|
1631
|
+
'cancel',
|
|
1632
|
+
'checkIn',
|
|
1633
|
+
'checkOut',
|
|
1634
|
+
'extend',
|
|
1635
|
+
],
|
|
1636
|
+
events: [
|
|
1637
|
+
'created',
|
|
1638
|
+
'approved',
|
|
1639
|
+
'rejected',
|
|
1640
|
+
'cancelled',
|
|
1641
|
+
'checkedIn',
|
|
1642
|
+
'checkedOut',
|
|
1643
|
+
'extended',
|
|
1644
|
+
],
|
|
1645
|
+
};
|
|
1646
|
+
// =============================================================================
|
|
1647
|
+
// Waitlist
|
|
1648
|
+
// =============================================================================
|
|
1649
|
+
/**
|
|
1650
|
+
* Waitlist - Entry on a waitlist for a meeting or resource
|
|
1651
|
+
*
|
|
1652
|
+
* Represents someone waiting for availability.
|
|
1653
|
+
*/
|
|
1654
|
+
export const Waitlist = {
|
|
1655
|
+
singular: 'waitlist',
|
|
1656
|
+
plural: 'waitlists',
|
|
1657
|
+
description: 'An entry on a waitlist for availability',
|
|
1658
|
+
properties: {
|
|
1659
|
+
status: {
|
|
1660
|
+
type: 'string',
|
|
1661
|
+
description: 'Waitlist status',
|
|
1662
|
+
examples: ['waiting', 'notified', 'booked', 'expired', 'cancelled'],
|
|
1663
|
+
},
|
|
1664
|
+
position: {
|
|
1665
|
+
type: 'number',
|
|
1666
|
+
optional: true,
|
|
1667
|
+
description: 'Position in the waitlist',
|
|
1668
|
+
},
|
|
1669
|
+
preferredTimes: {
|
|
1670
|
+
type: 'string',
|
|
1671
|
+
array: true,
|
|
1672
|
+
optional: true,
|
|
1673
|
+
description: 'Preferred time slots',
|
|
1674
|
+
},
|
|
1675
|
+
notes: {
|
|
1676
|
+
type: 'string',
|
|
1677
|
+
optional: true,
|
|
1678
|
+
description: 'Additional notes',
|
|
1679
|
+
},
|
|
1680
|
+
notifiedAt: {
|
|
1681
|
+
type: 'datetime',
|
|
1682
|
+
optional: true,
|
|
1683
|
+
description: 'When notified of availability',
|
|
1684
|
+
},
|
|
1685
|
+
expiresAt: {
|
|
1686
|
+
type: 'datetime',
|
|
1687
|
+
optional: true,
|
|
1688
|
+
description: 'When the offer expires',
|
|
1689
|
+
},
|
|
1690
|
+
},
|
|
1691
|
+
relationships: {
|
|
1692
|
+
contact: {
|
|
1693
|
+
type: 'Contact',
|
|
1694
|
+
description: 'Person on the waitlist',
|
|
1695
|
+
},
|
|
1696
|
+
meetingType: {
|
|
1697
|
+
type: 'MeetingType',
|
|
1698
|
+
required: false,
|
|
1699
|
+
description: 'Meeting type waiting for',
|
|
1700
|
+
},
|
|
1701
|
+
resource: {
|
|
1702
|
+
type: 'Resource',
|
|
1703
|
+
required: false,
|
|
1704
|
+
description: 'Resource waiting for',
|
|
1705
|
+
},
|
|
1706
|
+
},
|
|
1707
|
+
actions: [
|
|
1708
|
+
'join',
|
|
1709
|
+
'leave',
|
|
1710
|
+
'notify',
|
|
1711
|
+
'book',
|
|
1712
|
+
],
|
|
1713
|
+
events: [
|
|
1714
|
+
'joined',
|
|
1715
|
+
'left',
|
|
1716
|
+
'notified',
|
|
1717
|
+
'booked',
|
|
1718
|
+
'expired',
|
|
1719
|
+
],
|
|
1720
|
+
};
|
|
1721
|
+
// =============================================================================
|
|
1722
|
+
// Export all entities
|
|
1723
|
+
// =============================================================================
|
|
1724
|
+
/**
|
|
1725
|
+
* All video conferencing entity types
|
|
1726
|
+
*/
|
|
1727
|
+
export const VideoConferencingEntities = {
|
|
1728
|
+
Meeting,
|
|
1729
|
+
MeetingParticipant,
|
|
1730
|
+
MeetingRecording,
|
|
1731
|
+
Webinar,
|
|
1732
|
+
WebinarRegistrant,
|
|
1733
|
+
MeetingRoom,
|
|
1734
|
+
BreakoutRoom,
|
|
1735
|
+
MeetingPoll,
|
|
1736
|
+
MeetingChat,
|
|
1737
|
+
MeetingType,
|
|
1738
|
+
Resource,
|
|
1739
|
+
Reservation,
|
|
1740
|
+
Waitlist,
|
|
1741
|
+
};
|
|
1742
|
+
/**
|
|
1743
|
+
* Entity categories for organization
|
|
1744
|
+
*/
|
|
1745
|
+
export const VideoConferencingCategories = {
|
|
1746
|
+
meeting: ['Meeting', 'MeetingParticipant', 'MeetingRecording', 'MeetingRoom', 'MeetingType'],
|
|
1747
|
+
webinar: ['Webinar', 'WebinarRegistrant'],
|
|
1748
|
+
interaction: ['BreakoutRoom', 'MeetingPoll', 'MeetingChat'],
|
|
1749
|
+
resource: ['Resource', 'Reservation', 'Waitlist'],
|
|
1750
|
+
};
|
|
1751
|
+
//# sourceMappingURL=video-conferencing.js.map
|