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,1589 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Analytics and Reporting Entity Types (Nouns)
|
|
3
|
+
*
|
|
4
|
+
* Semantic type definitions for analytics and reporting 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
|
+
// Report
|
|
14
|
+
// =============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Report entity
|
|
17
|
+
*
|
|
18
|
+
* Represents a generated report with data, visualizations, and scheduling
|
|
19
|
+
*/
|
|
20
|
+
export const Report = {
|
|
21
|
+
singular: 'report',
|
|
22
|
+
plural: 'reports',
|
|
23
|
+
description: 'A generated report containing data analysis and visualizations',
|
|
24
|
+
properties: {
|
|
25
|
+
// Identity
|
|
26
|
+
title: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
description: 'Report title',
|
|
29
|
+
},
|
|
30
|
+
description: {
|
|
31
|
+
type: 'string',
|
|
32
|
+
optional: true,
|
|
33
|
+
description: 'Report description or summary',
|
|
34
|
+
},
|
|
35
|
+
// Type and configuration
|
|
36
|
+
type: {
|
|
37
|
+
type: 'string',
|
|
38
|
+
description: 'Report type: summary, detail, comparison, trend, custom',
|
|
39
|
+
examples: ['summary', 'detail', 'comparison', 'trend', 'custom'],
|
|
40
|
+
},
|
|
41
|
+
format: {
|
|
42
|
+
type: 'string',
|
|
43
|
+
description: 'Output format: pdf, html, csv, xlsx, json',
|
|
44
|
+
examples: ['pdf', 'html', 'csv', 'xlsx', 'json'],
|
|
45
|
+
},
|
|
46
|
+
template: {
|
|
47
|
+
type: 'string',
|
|
48
|
+
optional: true,
|
|
49
|
+
description: 'Template used for report generation',
|
|
50
|
+
},
|
|
51
|
+
// Time range
|
|
52
|
+
startDate: {
|
|
53
|
+
type: 'datetime',
|
|
54
|
+
optional: true,
|
|
55
|
+
description: 'Start date for report data',
|
|
56
|
+
},
|
|
57
|
+
endDate: {
|
|
58
|
+
type: 'datetime',
|
|
59
|
+
optional: true,
|
|
60
|
+
description: 'End date for report data',
|
|
61
|
+
},
|
|
62
|
+
period: {
|
|
63
|
+
type: 'string',
|
|
64
|
+
optional: true,
|
|
65
|
+
description: 'Time period: daily, weekly, monthly, quarterly, yearly, custom',
|
|
66
|
+
examples: ['daily', 'weekly', 'monthly', 'quarterly', 'yearly', 'custom'],
|
|
67
|
+
},
|
|
68
|
+
// Scheduling
|
|
69
|
+
scheduled: {
|
|
70
|
+
type: 'boolean',
|
|
71
|
+
optional: true,
|
|
72
|
+
description: 'Whether report is automatically generated on schedule',
|
|
73
|
+
},
|
|
74
|
+
schedule: {
|
|
75
|
+
type: 'string',
|
|
76
|
+
optional: true,
|
|
77
|
+
description: 'Cron expression or schedule string',
|
|
78
|
+
},
|
|
79
|
+
scheduleTimezone: {
|
|
80
|
+
type: 'string',
|
|
81
|
+
optional: true,
|
|
82
|
+
description: 'Timezone for scheduled generation',
|
|
83
|
+
},
|
|
84
|
+
lastRunAt: {
|
|
85
|
+
type: 'datetime',
|
|
86
|
+
optional: true,
|
|
87
|
+
description: 'When report was last generated',
|
|
88
|
+
},
|
|
89
|
+
nextRunAt: {
|
|
90
|
+
type: 'datetime',
|
|
91
|
+
optional: true,
|
|
92
|
+
description: 'When report will next be generated',
|
|
93
|
+
},
|
|
94
|
+
// Status
|
|
95
|
+
status: {
|
|
96
|
+
type: 'string',
|
|
97
|
+
description: 'Report status: draft, generating, completed, failed, scheduled',
|
|
98
|
+
examples: ['draft', 'generating', 'completed', 'failed', 'scheduled'],
|
|
99
|
+
},
|
|
100
|
+
progress: {
|
|
101
|
+
type: 'number',
|
|
102
|
+
optional: true,
|
|
103
|
+
description: 'Generation progress (0-100)',
|
|
104
|
+
},
|
|
105
|
+
error: {
|
|
106
|
+
type: 'string',
|
|
107
|
+
optional: true,
|
|
108
|
+
description: 'Error message if generation failed',
|
|
109
|
+
},
|
|
110
|
+
// Content
|
|
111
|
+
content: {
|
|
112
|
+
type: 'json',
|
|
113
|
+
optional: true,
|
|
114
|
+
description: 'Generated report content/data',
|
|
115
|
+
},
|
|
116
|
+
url: {
|
|
117
|
+
type: 'url',
|
|
118
|
+
optional: true,
|
|
119
|
+
description: 'URL to access/download the report',
|
|
120
|
+
},
|
|
121
|
+
size: {
|
|
122
|
+
type: 'number',
|
|
123
|
+
optional: true,
|
|
124
|
+
description: 'Report file size in bytes',
|
|
125
|
+
},
|
|
126
|
+
// Distribution
|
|
127
|
+
recipients: {
|
|
128
|
+
type: 'string',
|
|
129
|
+
array: true,
|
|
130
|
+
optional: true,
|
|
131
|
+
description: 'Email addresses to send report to',
|
|
132
|
+
},
|
|
133
|
+
shared: {
|
|
134
|
+
type: 'boolean',
|
|
135
|
+
optional: true,
|
|
136
|
+
description: 'Whether report is publicly shared',
|
|
137
|
+
},
|
|
138
|
+
shareUrl: {
|
|
139
|
+
type: 'url',
|
|
140
|
+
optional: true,
|
|
141
|
+
description: 'Public URL for shared report',
|
|
142
|
+
},
|
|
143
|
+
// Metadata
|
|
144
|
+
tags: {
|
|
145
|
+
type: 'string',
|
|
146
|
+
array: true,
|
|
147
|
+
optional: true,
|
|
148
|
+
description: 'Tags for categorizing reports',
|
|
149
|
+
},
|
|
150
|
+
category: {
|
|
151
|
+
type: 'string',
|
|
152
|
+
optional: true,
|
|
153
|
+
description: 'Report category',
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
relationships: {
|
|
157
|
+
dataSource: {
|
|
158
|
+
type: 'DataSource',
|
|
159
|
+
description: 'Primary data source for the report',
|
|
160
|
+
},
|
|
161
|
+
dataSources: {
|
|
162
|
+
type: 'DataSource[]',
|
|
163
|
+
description: 'All data sources used in the report',
|
|
164
|
+
},
|
|
165
|
+
queries: {
|
|
166
|
+
type: 'Query[]',
|
|
167
|
+
description: 'Queries used to fetch report data',
|
|
168
|
+
},
|
|
169
|
+
metrics: {
|
|
170
|
+
type: 'Metric[]',
|
|
171
|
+
description: 'Metrics included in the report',
|
|
172
|
+
},
|
|
173
|
+
widgets: {
|
|
174
|
+
type: 'Widget[]',
|
|
175
|
+
description: 'Widgets/visualizations in the report',
|
|
176
|
+
},
|
|
177
|
+
owner: {
|
|
178
|
+
type: 'Contact',
|
|
179
|
+
description: 'Report owner/creator',
|
|
180
|
+
},
|
|
181
|
+
subscribers: {
|
|
182
|
+
type: 'Contact[]',
|
|
183
|
+
description: 'People subscribed to receive this report',
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
actions: [
|
|
187
|
+
'create',
|
|
188
|
+
'edit',
|
|
189
|
+
'generate',
|
|
190
|
+
'regenerate',
|
|
191
|
+
'schedule',
|
|
192
|
+
'unschedule',
|
|
193
|
+
'export',
|
|
194
|
+
'download',
|
|
195
|
+
'share',
|
|
196
|
+
'unshare',
|
|
197
|
+
'send',
|
|
198
|
+
'duplicate',
|
|
199
|
+
'archive',
|
|
200
|
+
'delete',
|
|
201
|
+
'subscribe',
|
|
202
|
+
'unsubscribe',
|
|
203
|
+
],
|
|
204
|
+
events: [
|
|
205
|
+
'created',
|
|
206
|
+
'edited',
|
|
207
|
+
'generating',
|
|
208
|
+
'generated',
|
|
209
|
+
'failed',
|
|
210
|
+
'scheduled',
|
|
211
|
+
'unscheduled',
|
|
212
|
+
'exported',
|
|
213
|
+
'downloaded',
|
|
214
|
+
'shared',
|
|
215
|
+
'unshared',
|
|
216
|
+
'sent',
|
|
217
|
+
'duplicated',
|
|
218
|
+
'archived',
|
|
219
|
+
'deleted',
|
|
220
|
+
],
|
|
221
|
+
};
|
|
222
|
+
// =============================================================================
|
|
223
|
+
// Dashboard
|
|
224
|
+
// =============================================================================
|
|
225
|
+
/**
|
|
226
|
+
* Dashboard entity
|
|
227
|
+
*
|
|
228
|
+
* Represents a dashboard with multiple widgets displaying metrics and data
|
|
229
|
+
*/
|
|
230
|
+
export const Dashboard = {
|
|
231
|
+
singular: 'dashboard',
|
|
232
|
+
plural: 'dashboards',
|
|
233
|
+
description: 'A dashboard containing widgets and charts for data visualization',
|
|
234
|
+
properties: {
|
|
235
|
+
// Identity
|
|
236
|
+
name: {
|
|
237
|
+
type: 'string',
|
|
238
|
+
description: 'Dashboard name',
|
|
239
|
+
},
|
|
240
|
+
description: {
|
|
241
|
+
type: 'string',
|
|
242
|
+
optional: true,
|
|
243
|
+
description: 'Dashboard description',
|
|
244
|
+
},
|
|
245
|
+
// Layout
|
|
246
|
+
layout: {
|
|
247
|
+
type: 'string',
|
|
248
|
+
description: 'Dashboard layout type: grid, freeform, fixed',
|
|
249
|
+
examples: ['grid', 'freeform', 'fixed'],
|
|
250
|
+
},
|
|
251
|
+
columns: {
|
|
252
|
+
type: 'number',
|
|
253
|
+
optional: true,
|
|
254
|
+
description: 'Number of columns in grid layout',
|
|
255
|
+
},
|
|
256
|
+
theme: {
|
|
257
|
+
type: 'string',
|
|
258
|
+
optional: true,
|
|
259
|
+
description: 'Dashboard theme: light, dark, custom',
|
|
260
|
+
examples: ['light', 'dark', 'custom'],
|
|
261
|
+
},
|
|
262
|
+
customStyles: {
|
|
263
|
+
type: 'json',
|
|
264
|
+
optional: true,
|
|
265
|
+
description: 'Custom CSS styles or theme configuration',
|
|
266
|
+
},
|
|
267
|
+
// Time settings
|
|
268
|
+
timeRange: {
|
|
269
|
+
type: 'string',
|
|
270
|
+
optional: true,
|
|
271
|
+
description: 'Default time range: last_hour, last_24h, last_7d, last_30d, last_90d, custom',
|
|
272
|
+
examples: ['last_hour', 'last_24h', 'last_7d', 'last_30d', 'last_90d', 'custom'],
|
|
273
|
+
},
|
|
274
|
+
startDate: {
|
|
275
|
+
type: 'datetime',
|
|
276
|
+
optional: true,
|
|
277
|
+
description: 'Start date for custom time range',
|
|
278
|
+
},
|
|
279
|
+
endDate: {
|
|
280
|
+
type: 'datetime',
|
|
281
|
+
optional: true,
|
|
282
|
+
description: 'End date for custom time range',
|
|
283
|
+
},
|
|
284
|
+
autoRefresh: {
|
|
285
|
+
type: 'boolean',
|
|
286
|
+
optional: true,
|
|
287
|
+
description: 'Whether dashboard auto-refreshes',
|
|
288
|
+
},
|
|
289
|
+
refreshInterval: {
|
|
290
|
+
type: 'number',
|
|
291
|
+
optional: true,
|
|
292
|
+
description: 'Auto-refresh interval in seconds',
|
|
293
|
+
},
|
|
294
|
+
lastRefreshedAt: {
|
|
295
|
+
type: 'datetime',
|
|
296
|
+
optional: true,
|
|
297
|
+
description: 'When dashboard was last refreshed',
|
|
298
|
+
},
|
|
299
|
+
// Access control
|
|
300
|
+
visibility: {
|
|
301
|
+
type: 'string',
|
|
302
|
+
description: 'Dashboard visibility: private, team, organization, public',
|
|
303
|
+
examples: ['private', 'team', 'organization', 'public'],
|
|
304
|
+
},
|
|
305
|
+
shared: {
|
|
306
|
+
type: 'boolean',
|
|
307
|
+
optional: true,
|
|
308
|
+
description: 'Whether dashboard is publicly shared',
|
|
309
|
+
},
|
|
310
|
+
shareUrl: {
|
|
311
|
+
type: 'url',
|
|
312
|
+
optional: true,
|
|
313
|
+
description: 'Public URL for shared dashboard',
|
|
314
|
+
},
|
|
315
|
+
embedded: {
|
|
316
|
+
type: 'boolean',
|
|
317
|
+
optional: true,
|
|
318
|
+
description: 'Whether dashboard can be embedded',
|
|
319
|
+
},
|
|
320
|
+
// Organization
|
|
321
|
+
favorite: {
|
|
322
|
+
type: 'boolean',
|
|
323
|
+
optional: true,
|
|
324
|
+
description: 'Whether dashboard is favorited by current user',
|
|
325
|
+
},
|
|
326
|
+
tags: {
|
|
327
|
+
type: 'string',
|
|
328
|
+
array: true,
|
|
329
|
+
optional: true,
|
|
330
|
+
description: 'Tags for categorizing dashboard',
|
|
331
|
+
},
|
|
332
|
+
category: {
|
|
333
|
+
type: 'string',
|
|
334
|
+
optional: true,
|
|
335
|
+
description: 'Dashboard category',
|
|
336
|
+
},
|
|
337
|
+
template: {
|
|
338
|
+
type: 'boolean',
|
|
339
|
+
optional: true,
|
|
340
|
+
description: 'Whether this is a template dashboard',
|
|
341
|
+
},
|
|
342
|
+
},
|
|
343
|
+
relationships: {
|
|
344
|
+
widgets: {
|
|
345
|
+
type: 'Widget[]',
|
|
346
|
+
backref: 'dashboard',
|
|
347
|
+
description: 'Widgets displayed on this dashboard',
|
|
348
|
+
},
|
|
349
|
+
dataSources: {
|
|
350
|
+
type: 'DataSource[]',
|
|
351
|
+
description: 'Data sources used by dashboard widgets',
|
|
352
|
+
},
|
|
353
|
+
owner: {
|
|
354
|
+
type: 'Contact',
|
|
355
|
+
description: 'Dashboard owner/creator',
|
|
356
|
+
},
|
|
357
|
+
viewers: {
|
|
358
|
+
type: 'Contact[]',
|
|
359
|
+
description: 'People with view access',
|
|
360
|
+
},
|
|
361
|
+
editors: {
|
|
362
|
+
type: 'Contact[]',
|
|
363
|
+
description: 'People with edit access',
|
|
364
|
+
},
|
|
365
|
+
},
|
|
366
|
+
actions: [
|
|
367
|
+
'create',
|
|
368
|
+
'edit',
|
|
369
|
+
'view',
|
|
370
|
+
'refresh',
|
|
371
|
+
'duplicate',
|
|
372
|
+
'export',
|
|
373
|
+
'share',
|
|
374
|
+
'unshare',
|
|
375
|
+
'embed',
|
|
376
|
+
'favorite',
|
|
377
|
+
'unfavorite',
|
|
378
|
+
'addWidget',
|
|
379
|
+
'removeWidget',
|
|
380
|
+
'reorderWidgets',
|
|
381
|
+
'setTimeRange',
|
|
382
|
+
'archive',
|
|
383
|
+
'delete',
|
|
384
|
+
],
|
|
385
|
+
events: [
|
|
386
|
+
'created',
|
|
387
|
+
'edited',
|
|
388
|
+
'viewed',
|
|
389
|
+
'refreshed',
|
|
390
|
+
'duplicated',
|
|
391
|
+
'exported',
|
|
392
|
+
'shared',
|
|
393
|
+
'unshared',
|
|
394
|
+
'embedded',
|
|
395
|
+
'favorited',
|
|
396
|
+
'unfavorited',
|
|
397
|
+
'widgetAdded',
|
|
398
|
+
'widgetRemoved',
|
|
399
|
+
'widgetsReordered',
|
|
400
|
+
'timeRangeChanged',
|
|
401
|
+
'archived',
|
|
402
|
+
'deleted',
|
|
403
|
+
],
|
|
404
|
+
};
|
|
405
|
+
// =============================================================================
|
|
406
|
+
// Widget
|
|
407
|
+
// =============================================================================
|
|
408
|
+
/**
|
|
409
|
+
* Widget entity
|
|
410
|
+
*
|
|
411
|
+
* Represents a dashboard widget (chart, metric, table, etc.)
|
|
412
|
+
*/
|
|
413
|
+
export const Widget = {
|
|
414
|
+
singular: 'widget',
|
|
415
|
+
plural: 'widgets',
|
|
416
|
+
description: 'A dashboard widget displaying data as a chart, metric, table, or other visualization',
|
|
417
|
+
properties: {
|
|
418
|
+
// Identity
|
|
419
|
+
title: {
|
|
420
|
+
type: 'string',
|
|
421
|
+
description: 'Widget title',
|
|
422
|
+
},
|
|
423
|
+
description: {
|
|
424
|
+
type: 'string',
|
|
425
|
+
optional: true,
|
|
426
|
+
description: 'Widget description',
|
|
427
|
+
},
|
|
428
|
+
// Type and visualization
|
|
429
|
+
type: {
|
|
430
|
+
type: 'string',
|
|
431
|
+
description: 'Widget type: metric, chart, table, text, image, iframe',
|
|
432
|
+
examples: ['metric', 'chart', 'table', 'text', 'image', 'iframe'],
|
|
433
|
+
},
|
|
434
|
+
chartType: {
|
|
435
|
+
type: 'string',
|
|
436
|
+
optional: true,
|
|
437
|
+
description: 'Chart type: line, bar, pie, area, scatter, heatmap, gauge, funnel',
|
|
438
|
+
examples: ['line', 'bar', 'pie', 'area', 'scatter', 'heatmap', 'gauge', 'funnel'],
|
|
439
|
+
},
|
|
440
|
+
visualization: {
|
|
441
|
+
type: 'json',
|
|
442
|
+
optional: true,
|
|
443
|
+
description: 'Visualization configuration (axes, colors, legend, etc.)',
|
|
444
|
+
},
|
|
445
|
+
// Layout
|
|
446
|
+
position: {
|
|
447
|
+
type: 'json',
|
|
448
|
+
description: 'Widget position and size: {x, y, width, height}',
|
|
449
|
+
},
|
|
450
|
+
minWidth: {
|
|
451
|
+
type: 'number',
|
|
452
|
+
optional: true,
|
|
453
|
+
description: 'Minimum width in grid units',
|
|
454
|
+
},
|
|
455
|
+
minHeight: {
|
|
456
|
+
type: 'number',
|
|
457
|
+
optional: true,
|
|
458
|
+
description: 'Minimum height in grid units',
|
|
459
|
+
},
|
|
460
|
+
// Data
|
|
461
|
+
data: {
|
|
462
|
+
type: 'json',
|
|
463
|
+
optional: true,
|
|
464
|
+
description: 'Current widget data',
|
|
465
|
+
},
|
|
466
|
+
aggregation: {
|
|
467
|
+
type: 'string',
|
|
468
|
+
optional: true,
|
|
469
|
+
description: 'Data aggregation method: sum, avg, min, max, count, distinct',
|
|
470
|
+
examples: ['sum', 'avg', 'min', 'max', 'count', 'distinct'],
|
|
471
|
+
},
|
|
472
|
+
groupBy: {
|
|
473
|
+
type: 'string',
|
|
474
|
+
optional: true,
|
|
475
|
+
description: 'Field to group data by',
|
|
476
|
+
},
|
|
477
|
+
filters: {
|
|
478
|
+
type: 'json',
|
|
479
|
+
optional: true,
|
|
480
|
+
description: 'Data filters applied to widget',
|
|
481
|
+
},
|
|
482
|
+
limit: {
|
|
483
|
+
type: 'number',
|
|
484
|
+
optional: true,
|
|
485
|
+
description: 'Maximum number of data points or rows',
|
|
486
|
+
},
|
|
487
|
+
// Time settings
|
|
488
|
+
timeRange: {
|
|
489
|
+
type: 'string',
|
|
490
|
+
optional: true,
|
|
491
|
+
description: 'Widget-specific time range override',
|
|
492
|
+
},
|
|
493
|
+
startDate: {
|
|
494
|
+
type: 'datetime',
|
|
495
|
+
optional: true,
|
|
496
|
+
description: 'Start date for widget data',
|
|
497
|
+
},
|
|
498
|
+
endDate: {
|
|
499
|
+
type: 'datetime',
|
|
500
|
+
optional: true,
|
|
501
|
+
description: 'End date for widget data',
|
|
502
|
+
},
|
|
503
|
+
// Display options
|
|
504
|
+
showLegend: {
|
|
505
|
+
type: 'boolean',
|
|
506
|
+
optional: true,
|
|
507
|
+
description: 'Whether to show chart legend',
|
|
508
|
+
},
|
|
509
|
+
showLabels: {
|
|
510
|
+
type: 'boolean',
|
|
511
|
+
optional: true,
|
|
512
|
+
description: 'Whether to show data labels',
|
|
513
|
+
},
|
|
514
|
+
colors: {
|
|
515
|
+
type: 'string',
|
|
516
|
+
array: true,
|
|
517
|
+
optional: true,
|
|
518
|
+
description: 'Custom color palette',
|
|
519
|
+
},
|
|
520
|
+
// Status
|
|
521
|
+
loading: {
|
|
522
|
+
type: 'boolean',
|
|
523
|
+
optional: true,
|
|
524
|
+
description: 'Whether widget is currently loading data',
|
|
525
|
+
},
|
|
526
|
+
error: {
|
|
527
|
+
type: 'string',
|
|
528
|
+
optional: true,
|
|
529
|
+
description: 'Error message if data loading failed',
|
|
530
|
+
},
|
|
531
|
+
lastUpdatedAt: {
|
|
532
|
+
type: 'datetime',
|
|
533
|
+
optional: true,
|
|
534
|
+
description: 'When widget data was last updated',
|
|
535
|
+
},
|
|
536
|
+
},
|
|
537
|
+
relationships: {
|
|
538
|
+
dashboard: {
|
|
539
|
+
type: 'Dashboard',
|
|
540
|
+
backref: 'widgets',
|
|
541
|
+
description: 'Dashboard this widget belongs to',
|
|
542
|
+
},
|
|
543
|
+
dataSource: {
|
|
544
|
+
type: 'DataSource',
|
|
545
|
+
description: 'Data source for this widget',
|
|
546
|
+
},
|
|
547
|
+
query: {
|
|
548
|
+
type: 'Query',
|
|
549
|
+
description: 'Query used to fetch widget data',
|
|
550
|
+
},
|
|
551
|
+
metrics: {
|
|
552
|
+
type: 'Metric[]',
|
|
553
|
+
description: 'Metrics displayed in this widget',
|
|
554
|
+
},
|
|
555
|
+
alerts: {
|
|
556
|
+
type: 'Alert[]',
|
|
557
|
+
description: 'Alerts configured for this widget',
|
|
558
|
+
},
|
|
559
|
+
},
|
|
560
|
+
actions: [
|
|
561
|
+
'create',
|
|
562
|
+
'edit',
|
|
563
|
+
'refresh',
|
|
564
|
+
'duplicate',
|
|
565
|
+
'resize',
|
|
566
|
+
'move',
|
|
567
|
+
'delete',
|
|
568
|
+
'export',
|
|
569
|
+
'drilldown',
|
|
570
|
+
'filter',
|
|
571
|
+
'setTimeRange',
|
|
572
|
+
'toggleLegend',
|
|
573
|
+
'changeChartType',
|
|
574
|
+
],
|
|
575
|
+
events: [
|
|
576
|
+
'created',
|
|
577
|
+
'edited',
|
|
578
|
+
'refreshed',
|
|
579
|
+
'duplicated',
|
|
580
|
+
'resized',
|
|
581
|
+
'moved',
|
|
582
|
+
'deleted',
|
|
583
|
+
'exported',
|
|
584
|
+
'drilledDown',
|
|
585
|
+
'filtered',
|
|
586
|
+
'timeRangeChanged',
|
|
587
|
+
'dataLoaded',
|
|
588
|
+
'dataFailed',
|
|
589
|
+
],
|
|
590
|
+
};
|
|
591
|
+
// =============================================================================
|
|
592
|
+
// Metric
|
|
593
|
+
// =============================================================================
|
|
594
|
+
/**
|
|
595
|
+
* Metric entity
|
|
596
|
+
*
|
|
597
|
+
* Represents a tracked metric or KPI with current value and trends
|
|
598
|
+
*/
|
|
599
|
+
export const Metric = {
|
|
600
|
+
singular: 'metric',
|
|
601
|
+
plural: 'metrics',
|
|
602
|
+
description: 'A tracked metric or key performance indicator (KPI)',
|
|
603
|
+
properties: {
|
|
604
|
+
// Identity
|
|
605
|
+
name: {
|
|
606
|
+
type: 'string',
|
|
607
|
+
description: 'Metric name',
|
|
608
|
+
},
|
|
609
|
+
displayName: {
|
|
610
|
+
type: 'string',
|
|
611
|
+
optional: true,
|
|
612
|
+
description: 'Human-readable display name',
|
|
613
|
+
},
|
|
614
|
+
description: {
|
|
615
|
+
type: 'string',
|
|
616
|
+
optional: true,
|
|
617
|
+
description: 'Metric description',
|
|
618
|
+
},
|
|
619
|
+
// Type and calculation
|
|
620
|
+
type: {
|
|
621
|
+
type: 'string',
|
|
622
|
+
description: 'Metric type: number, currency, percentage, ratio, duration, count',
|
|
623
|
+
examples: ['number', 'currency', 'percentage', 'ratio', 'duration', 'count'],
|
|
624
|
+
},
|
|
625
|
+
unit: {
|
|
626
|
+
type: 'string',
|
|
627
|
+
optional: true,
|
|
628
|
+
description: 'Unit of measurement',
|
|
629
|
+
},
|
|
630
|
+
format: {
|
|
631
|
+
type: 'string',
|
|
632
|
+
optional: true,
|
|
633
|
+
description: 'Display format string',
|
|
634
|
+
},
|
|
635
|
+
aggregation: {
|
|
636
|
+
type: 'string',
|
|
637
|
+
description: 'Aggregation method: sum, avg, min, max, count, distinct',
|
|
638
|
+
examples: ['sum', 'avg', 'min', 'max', 'count', 'distinct'],
|
|
639
|
+
},
|
|
640
|
+
formula: {
|
|
641
|
+
type: 'string',
|
|
642
|
+
optional: true,
|
|
643
|
+
description: 'Calculation formula for computed metrics',
|
|
644
|
+
},
|
|
645
|
+
// Current value
|
|
646
|
+
value: {
|
|
647
|
+
type: 'number',
|
|
648
|
+
description: 'Current metric value',
|
|
649
|
+
},
|
|
650
|
+
previousValue: {
|
|
651
|
+
type: 'number',
|
|
652
|
+
optional: true,
|
|
653
|
+
description: 'Previous period value for comparison',
|
|
654
|
+
},
|
|
655
|
+
change: {
|
|
656
|
+
type: 'number',
|
|
657
|
+
optional: true,
|
|
658
|
+
description: 'Absolute change from previous period',
|
|
659
|
+
},
|
|
660
|
+
changePercent: {
|
|
661
|
+
type: 'number',
|
|
662
|
+
optional: true,
|
|
663
|
+
description: 'Percentage change from previous period',
|
|
664
|
+
},
|
|
665
|
+
// Trend
|
|
666
|
+
trend: {
|
|
667
|
+
type: 'string',
|
|
668
|
+
optional: true,
|
|
669
|
+
description: 'Trend direction: up, down, flat',
|
|
670
|
+
examples: ['up', 'down', 'flat'],
|
|
671
|
+
},
|
|
672
|
+
trendData: {
|
|
673
|
+
type: 'json',
|
|
674
|
+
optional: true,
|
|
675
|
+
description: 'Time series data for trend visualization',
|
|
676
|
+
},
|
|
677
|
+
// Thresholds
|
|
678
|
+
target: {
|
|
679
|
+
type: 'number',
|
|
680
|
+
optional: true,
|
|
681
|
+
description: 'Target value or goal',
|
|
682
|
+
},
|
|
683
|
+
minValue: {
|
|
684
|
+
type: 'number',
|
|
685
|
+
optional: true,
|
|
686
|
+
description: 'Minimum acceptable value',
|
|
687
|
+
},
|
|
688
|
+
maxValue: {
|
|
689
|
+
type: 'number',
|
|
690
|
+
optional: true,
|
|
691
|
+
description: 'Maximum acceptable value',
|
|
692
|
+
},
|
|
693
|
+
warningThreshold: {
|
|
694
|
+
type: 'number',
|
|
695
|
+
optional: true,
|
|
696
|
+
description: 'Warning threshold value',
|
|
697
|
+
},
|
|
698
|
+
criticalThreshold: {
|
|
699
|
+
type: 'number',
|
|
700
|
+
optional: true,
|
|
701
|
+
description: 'Critical threshold value',
|
|
702
|
+
},
|
|
703
|
+
// Status
|
|
704
|
+
status: {
|
|
705
|
+
type: 'string',
|
|
706
|
+
optional: true,
|
|
707
|
+
description: 'Metric status: normal, warning, critical, unknown',
|
|
708
|
+
examples: ['normal', 'warning', 'critical', 'unknown'],
|
|
709
|
+
},
|
|
710
|
+
// Metadata
|
|
711
|
+
category: {
|
|
712
|
+
type: 'string',
|
|
713
|
+
optional: true,
|
|
714
|
+
description: 'Metric category',
|
|
715
|
+
},
|
|
716
|
+
tags: {
|
|
717
|
+
type: 'string',
|
|
718
|
+
array: true,
|
|
719
|
+
optional: true,
|
|
720
|
+
description: 'Tags for categorization',
|
|
721
|
+
},
|
|
722
|
+
dimensions: {
|
|
723
|
+
type: 'json',
|
|
724
|
+
optional: true,
|
|
725
|
+
description: 'Dimensional breakdown of metric',
|
|
726
|
+
},
|
|
727
|
+
// Timing
|
|
728
|
+
period: {
|
|
729
|
+
type: 'string',
|
|
730
|
+
optional: true,
|
|
731
|
+
description: 'Time period: hourly, daily, weekly, monthly, quarterly, yearly',
|
|
732
|
+
examples: ['hourly', 'daily', 'weekly', 'monthly', 'quarterly', 'yearly'],
|
|
733
|
+
},
|
|
734
|
+
timestamp: {
|
|
735
|
+
type: 'datetime',
|
|
736
|
+
optional: true,
|
|
737
|
+
description: 'When metric was last calculated',
|
|
738
|
+
},
|
|
739
|
+
},
|
|
740
|
+
relationships: {
|
|
741
|
+
dataSource: {
|
|
742
|
+
type: 'DataSource',
|
|
743
|
+
description: 'Data source for this metric',
|
|
744
|
+
},
|
|
745
|
+
query: {
|
|
746
|
+
type: 'Query',
|
|
747
|
+
description: 'Query used to calculate metric',
|
|
748
|
+
},
|
|
749
|
+
goal: {
|
|
750
|
+
type: 'Goal',
|
|
751
|
+
required: false,
|
|
752
|
+
description: 'Associated goal or target',
|
|
753
|
+
},
|
|
754
|
+
alerts: {
|
|
755
|
+
type: 'Alert[]',
|
|
756
|
+
backref: 'metric',
|
|
757
|
+
description: 'Alerts configured for this metric',
|
|
758
|
+
},
|
|
759
|
+
reports: {
|
|
760
|
+
type: 'Report[]',
|
|
761
|
+
description: 'Reports that include this metric',
|
|
762
|
+
},
|
|
763
|
+
dashboards: {
|
|
764
|
+
type: 'Dashboard[]',
|
|
765
|
+
description: 'Dashboards that display this metric',
|
|
766
|
+
},
|
|
767
|
+
},
|
|
768
|
+
actions: [
|
|
769
|
+
'calculate',
|
|
770
|
+
'refresh',
|
|
771
|
+
'setTarget',
|
|
772
|
+
'setThreshold',
|
|
773
|
+
'track',
|
|
774
|
+
'compare',
|
|
775
|
+
'export',
|
|
776
|
+
'archive',
|
|
777
|
+
'delete',
|
|
778
|
+
],
|
|
779
|
+
events: [
|
|
780
|
+
'calculated',
|
|
781
|
+
'refreshed',
|
|
782
|
+
'targetSet',
|
|
783
|
+
'thresholdSet',
|
|
784
|
+
'thresholdExceeded',
|
|
785
|
+
'targetReached',
|
|
786
|
+
'trendChanged',
|
|
787
|
+
'archived',
|
|
788
|
+
'deleted',
|
|
789
|
+
],
|
|
790
|
+
};
|
|
791
|
+
// =============================================================================
|
|
792
|
+
// Goal
|
|
793
|
+
// =============================================================================
|
|
794
|
+
/**
|
|
795
|
+
* Goal entity
|
|
796
|
+
*
|
|
797
|
+
* Represents a goal or target with progress tracking
|
|
798
|
+
*/
|
|
799
|
+
export const Goal = {
|
|
800
|
+
singular: 'goal',
|
|
801
|
+
plural: 'goals',
|
|
802
|
+
description: 'A goal or target with progress tracking',
|
|
803
|
+
properties: {
|
|
804
|
+
// Identity
|
|
805
|
+
name: {
|
|
806
|
+
type: 'string',
|
|
807
|
+
description: 'Goal name',
|
|
808
|
+
},
|
|
809
|
+
description: {
|
|
810
|
+
type: 'string',
|
|
811
|
+
optional: true,
|
|
812
|
+
description: 'Goal description',
|
|
813
|
+
},
|
|
814
|
+
// Target
|
|
815
|
+
target: {
|
|
816
|
+
type: 'number',
|
|
817
|
+
description: 'Target value to achieve',
|
|
818
|
+
},
|
|
819
|
+
unit: {
|
|
820
|
+
type: 'string',
|
|
821
|
+
optional: true,
|
|
822
|
+
description: 'Unit of measurement',
|
|
823
|
+
},
|
|
824
|
+
type: {
|
|
825
|
+
type: 'string',
|
|
826
|
+
description: 'Goal type: increase, decrease, maintain, threshold',
|
|
827
|
+
examples: ['increase', 'decrease', 'maintain', 'threshold'],
|
|
828
|
+
},
|
|
829
|
+
// Current state
|
|
830
|
+
current: {
|
|
831
|
+
type: 'number',
|
|
832
|
+
description: 'Current value',
|
|
833
|
+
},
|
|
834
|
+
progress: {
|
|
835
|
+
type: 'number',
|
|
836
|
+
description: 'Progress percentage (0-100)',
|
|
837
|
+
},
|
|
838
|
+
remaining: {
|
|
839
|
+
type: 'number',
|
|
840
|
+
optional: true,
|
|
841
|
+
description: 'Remaining amount to reach goal',
|
|
842
|
+
},
|
|
843
|
+
// Timing
|
|
844
|
+
startDate: {
|
|
845
|
+
type: 'datetime',
|
|
846
|
+
description: 'Goal start date',
|
|
847
|
+
},
|
|
848
|
+
endDate: {
|
|
849
|
+
type: 'datetime',
|
|
850
|
+
description: 'Goal target completion date',
|
|
851
|
+
},
|
|
852
|
+
completedAt: {
|
|
853
|
+
type: 'datetime',
|
|
854
|
+
optional: true,
|
|
855
|
+
description: 'When goal was achieved',
|
|
856
|
+
},
|
|
857
|
+
// Status
|
|
858
|
+
status: {
|
|
859
|
+
type: 'string',
|
|
860
|
+
description: 'Goal status: active, completed, failed, cancelled, paused',
|
|
861
|
+
examples: ['active', 'completed', 'failed', 'cancelled', 'paused'],
|
|
862
|
+
},
|
|
863
|
+
onTrack: {
|
|
864
|
+
type: 'boolean',
|
|
865
|
+
optional: true,
|
|
866
|
+
description: 'Whether goal is on track to be achieved',
|
|
867
|
+
},
|
|
868
|
+
projectedCompletion: {
|
|
869
|
+
type: 'datetime',
|
|
870
|
+
optional: true,
|
|
871
|
+
description: 'Projected completion date based on current progress',
|
|
872
|
+
},
|
|
873
|
+
// Organization
|
|
874
|
+
priority: {
|
|
875
|
+
type: 'string',
|
|
876
|
+
optional: true,
|
|
877
|
+
description: 'Goal priority: low, medium, high, critical',
|
|
878
|
+
examples: ['low', 'medium', 'high', 'critical'],
|
|
879
|
+
},
|
|
880
|
+
category: {
|
|
881
|
+
type: 'string',
|
|
882
|
+
optional: true,
|
|
883
|
+
description: 'Goal category',
|
|
884
|
+
},
|
|
885
|
+
tags: {
|
|
886
|
+
type: 'string',
|
|
887
|
+
array: true,
|
|
888
|
+
optional: true,
|
|
889
|
+
description: 'Tags for categorization',
|
|
890
|
+
},
|
|
891
|
+
// Notifications
|
|
892
|
+
notifyOnProgress: {
|
|
893
|
+
type: 'boolean',
|
|
894
|
+
optional: true,
|
|
895
|
+
description: 'Whether to notify on progress milestones',
|
|
896
|
+
},
|
|
897
|
+
notifyOnCompletion: {
|
|
898
|
+
type: 'boolean',
|
|
899
|
+
optional: true,
|
|
900
|
+
description: 'Whether to notify when goal is achieved',
|
|
901
|
+
},
|
|
902
|
+
},
|
|
903
|
+
relationships: {
|
|
904
|
+
metric: {
|
|
905
|
+
type: 'Metric',
|
|
906
|
+
description: 'Metric being tracked for this goal',
|
|
907
|
+
},
|
|
908
|
+
owner: {
|
|
909
|
+
type: 'Contact',
|
|
910
|
+
description: 'Goal owner/responsible person',
|
|
911
|
+
},
|
|
912
|
+
team: {
|
|
913
|
+
type: 'Contact[]',
|
|
914
|
+
description: 'Team members working towards this goal',
|
|
915
|
+
},
|
|
916
|
+
milestones: {
|
|
917
|
+
type: 'Goal[]',
|
|
918
|
+
description: 'Sub-goals or milestones',
|
|
919
|
+
},
|
|
920
|
+
parentGoal: {
|
|
921
|
+
type: 'Goal',
|
|
922
|
+
required: false,
|
|
923
|
+
description: 'Parent goal if this is a milestone',
|
|
924
|
+
},
|
|
925
|
+
},
|
|
926
|
+
actions: [
|
|
927
|
+
'create',
|
|
928
|
+
'update',
|
|
929
|
+
'track',
|
|
930
|
+
'complete',
|
|
931
|
+
'fail',
|
|
932
|
+
'cancel',
|
|
933
|
+
'pause',
|
|
934
|
+
'resume',
|
|
935
|
+
'setTarget',
|
|
936
|
+
'addMilestone',
|
|
937
|
+
'delete',
|
|
938
|
+
],
|
|
939
|
+
events: [
|
|
940
|
+
'created',
|
|
941
|
+
'updated',
|
|
942
|
+
'progressed',
|
|
943
|
+
'completed',
|
|
944
|
+
'failed',
|
|
945
|
+
'cancelled',
|
|
946
|
+
'paused',
|
|
947
|
+
'resumed',
|
|
948
|
+
'targetChanged',
|
|
949
|
+
'milestoneAdded',
|
|
950
|
+
'milestoneReached',
|
|
951
|
+
'deleted',
|
|
952
|
+
],
|
|
953
|
+
};
|
|
954
|
+
// =============================================================================
|
|
955
|
+
// DataSource
|
|
956
|
+
// =============================================================================
|
|
957
|
+
/**
|
|
958
|
+
* DataSource entity
|
|
959
|
+
*
|
|
960
|
+
* Represents a connection to a data source (database, API, file, etc.)
|
|
961
|
+
*/
|
|
962
|
+
export const DataSource = {
|
|
963
|
+
singular: 'data source',
|
|
964
|
+
plural: 'data sources',
|
|
965
|
+
description: 'A connection to a data source for analytics and reporting',
|
|
966
|
+
properties: {
|
|
967
|
+
// Identity
|
|
968
|
+
name: {
|
|
969
|
+
type: 'string',
|
|
970
|
+
description: 'Data source name',
|
|
971
|
+
},
|
|
972
|
+
description: {
|
|
973
|
+
type: 'string',
|
|
974
|
+
optional: true,
|
|
975
|
+
description: 'Data source description',
|
|
976
|
+
},
|
|
977
|
+
// Type and connection
|
|
978
|
+
type: {
|
|
979
|
+
type: 'string',
|
|
980
|
+
description: 'Data source type: database, api, file, webhook, streaming',
|
|
981
|
+
examples: ['database', 'api', 'file', 'webhook', 'streaming'],
|
|
982
|
+
},
|
|
983
|
+
subtype: {
|
|
984
|
+
type: 'string',
|
|
985
|
+
optional: true,
|
|
986
|
+
description: 'Specific data source subtype: postgresql, mysql, mongodb, rest, graphql, csv, json, etc.',
|
|
987
|
+
examples: ['postgresql', 'mysql', 'mongodb', 'rest', 'graphql', 'csv', 'json'],
|
|
988
|
+
},
|
|
989
|
+
connectionString: {
|
|
990
|
+
type: 'string',
|
|
991
|
+
optional: true,
|
|
992
|
+
description: 'Connection string or URL (may be encrypted)',
|
|
993
|
+
},
|
|
994
|
+
host: {
|
|
995
|
+
type: 'string',
|
|
996
|
+
optional: true,
|
|
997
|
+
description: 'Host address',
|
|
998
|
+
},
|
|
999
|
+
port: {
|
|
1000
|
+
type: 'number',
|
|
1001
|
+
optional: true,
|
|
1002
|
+
description: 'Port number',
|
|
1003
|
+
},
|
|
1004
|
+
database: {
|
|
1005
|
+
type: 'string',
|
|
1006
|
+
optional: true,
|
|
1007
|
+
description: 'Database name',
|
|
1008
|
+
},
|
|
1009
|
+
schema: {
|
|
1010
|
+
type: 'string',
|
|
1011
|
+
optional: true,
|
|
1012
|
+
description: 'Schema name',
|
|
1013
|
+
},
|
|
1014
|
+
// Authentication
|
|
1015
|
+
authType: {
|
|
1016
|
+
type: 'string',
|
|
1017
|
+
optional: true,
|
|
1018
|
+
description: 'Authentication type: none, basic, apikey, oauth, certificate',
|
|
1019
|
+
examples: ['none', 'basic', 'apikey', 'oauth', 'certificate'],
|
|
1020
|
+
},
|
|
1021
|
+
username: {
|
|
1022
|
+
type: 'string',
|
|
1023
|
+
optional: true,
|
|
1024
|
+
description: 'Username for authentication',
|
|
1025
|
+
},
|
|
1026
|
+
encrypted: {
|
|
1027
|
+
type: 'boolean',
|
|
1028
|
+
optional: true,
|
|
1029
|
+
description: 'Whether credentials are encrypted',
|
|
1030
|
+
},
|
|
1031
|
+
// Configuration
|
|
1032
|
+
config: {
|
|
1033
|
+
type: 'json',
|
|
1034
|
+
optional: true,
|
|
1035
|
+
description: 'Additional configuration options',
|
|
1036
|
+
},
|
|
1037
|
+
timeout: {
|
|
1038
|
+
type: 'number',
|
|
1039
|
+
optional: true,
|
|
1040
|
+
description: 'Connection timeout in milliseconds',
|
|
1041
|
+
},
|
|
1042
|
+
maxConnections: {
|
|
1043
|
+
type: 'number',
|
|
1044
|
+
optional: true,
|
|
1045
|
+
description: 'Maximum number of concurrent connections',
|
|
1046
|
+
},
|
|
1047
|
+
ssl: {
|
|
1048
|
+
type: 'boolean',
|
|
1049
|
+
optional: true,
|
|
1050
|
+
description: 'Whether to use SSL/TLS',
|
|
1051
|
+
},
|
|
1052
|
+
// Status
|
|
1053
|
+
status: {
|
|
1054
|
+
type: 'string',
|
|
1055
|
+
description: 'Connection status: connected, disconnected, error, testing',
|
|
1056
|
+
examples: ['connected', 'disconnected', 'error', 'testing'],
|
|
1057
|
+
},
|
|
1058
|
+
lastConnectedAt: {
|
|
1059
|
+
type: 'datetime',
|
|
1060
|
+
optional: true,
|
|
1061
|
+
description: 'When connection was last established',
|
|
1062
|
+
},
|
|
1063
|
+
lastTestedAt: {
|
|
1064
|
+
type: 'datetime',
|
|
1065
|
+
optional: true,
|
|
1066
|
+
description: 'When connection was last tested',
|
|
1067
|
+
},
|
|
1068
|
+
error: {
|
|
1069
|
+
type: 'string',
|
|
1070
|
+
optional: true,
|
|
1071
|
+
description: 'Connection error message',
|
|
1072
|
+
},
|
|
1073
|
+
// Metadata
|
|
1074
|
+
tables: {
|
|
1075
|
+
type: 'string',
|
|
1076
|
+
array: true,
|
|
1077
|
+
optional: true,
|
|
1078
|
+
description: 'Available tables or collections',
|
|
1079
|
+
},
|
|
1080
|
+
dataSchema: {
|
|
1081
|
+
type: 'json',
|
|
1082
|
+
optional: true,
|
|
1083
|
+
description: 'Data schema information',
|
|
1084
|
+
},
|
|
1085
|
+
tags: {
|
|
1086
|
+
type: 'string',
|
|
1087
|
+
array: true,
|
|
1088
|
+
optional: true,
|
|
1089
|
+
description: 'Tags for categorization',
|
|
1090
|
+
},
|
|
1091
|
+
// Access control
|
|
1092
|
+
readOnly: {
|
|
1093
|
+
type: 'boolean',
|
|
1094
|
+
optional: true,
|
|
1095
|
+
description: 'Whether connection is read-only',
|
|
1096
|
+
},
|
|
1097
|
+
shared: {
|
|
1098
|
+
type: 'boolean',
|
|
1099
|
+
optional: true,
|
|
1100
|
+
description: 'Whether data source is shared with team',
|
|
1101
|
+
},
|
|
1102
|
+
},
|
|
1103
|
+
relationships: {
|
|
1104
|
+
reports: {
|
|
1105
|
+
type: 'Report[]',
|
|
1106
|
+
description: 'Reports using this data source',
|
|
1107
|
+
},
|
|
1108
|
+
dashboards: {
|
|
1109
|
+
type: 'Dashboard[]',
|
|
1110
|
+
description: 'Dashboards using this data source',
|
|
1111
|
+
},
|
|
1112
|
+
queries: {
|
|
1113
|
+
type: 'Query[]',
|
|
1114
|
+
backref: 'dataSource',
|
|
1115
|
+
description: 'Queries saved for this data source',
|
|
1116
|
+
},
|
|
1117
|
+
metrics: {
|
|
1118
|
+
type: 'Metric[]',
|
|
1119
|
+
description: 'Metrics calculated from this data source',
|
|
1120
|
+
},
|
|
1121
|
+
owner: {
|
|
1122
|
+
type: 'Contact',
|
|
1123
|
+
description: 'Data source owner',
|
|
1124
|
+
},
|
|
1125
|
+
collaborators: {
|
|
1126
|
+
type: 'Contact[]',
|
|
1127
|
+
description: 'People with access to this data source',
|
|
1128
|
+
},
|
|
1129
|
+
},
|
|
1130
|
+
actions: [
|
|
1131
|
+
'create',
|
|
1132
|
+
'edit',
|
|
1133
|
+
'connect',
|
|
1134
|
+
'disconnect',
|
|
1135
|
+
'test',
|
|
1136
|
+
'refresh',
|
|
1137
|
+
'query',
|
|
1138
|
+
'sync',
|
|
1139
|
+
'share',
|
|
1140
|
+
'unshare',
|
|
1141
|
+
'delete',
|
|
1142
|
+
],
|
|
1143
|
+
events: [
|
|
1144
|
+
'created',
|
|
1145
|
+
'edited',
|
|
1146
|
+
'connected',
|
|
1147
|
+
'disconnected',
|
|
1148
|
+
'tested',
|
|
1149
|
+
'refreshed',
|
|
1150
|
+
'queried',
|
|
1151
|
+
'synced',
|
|
1152
|
+
'shared',
|
|
1153
|
+
'unshared',
|
|
1154
|
+
'failed',
|
|
1155
|
+
'deleted',
|
|
1156
|
+
],
|
|
1157
|
+
};
|
|
1158
|
+
// =============================================================================
|
|
1159
|
+
// Query
|
|
1160
|
+
// =============================================================================
|
|
1161
|
+
/**
|
|
1162
|
+
* Query entity
|
|
1163
|
+
*
|
|
1164
|
+
* Represents a saved query or filter for data retrieval
|
|
1165
|
+
*/
|
|
1166
|
+
export const Query = {
|
|
1167
|
+
singular: 'query',
|
|
1168
|
+
plural: 'queries',
|
|
1169
|
+
description: 'A saved query or filter for retrieving data',
|
|
1170
|
+
properties: {
|
|
1171
|
+
// Identity
|
|
1172
|
+
name: {
|
|
1173
|
+
type: 'string',
|
|
1174
|
+
description: 'Query name',
|
|
1175
|
+
},
|
|
1176
|
+
description: {
|
|
1177
|
+
type: 'string',
|
|
1178
|
+
optional: true,
|
|
1179
|
+
description: 'Query description',
|
|
1180
|
+
},
|
|
1181
|
+
// Query definition
|
|
1182
|
+
queryType: {
|
|
1183
|
+
type: 'string',
|
|
1184
|
+
description: 'Query type: sql, graphql, rest, nosql, custom',
|
|
1185
|
+
examples: ['sql', 'graphql', 'rest', 'nosql', 'custom'],
|
|
1186
|
+
},
|
|
1187
|
+
queryString: {
|
|
1188
|
+
type: 'string',
|
|
1189
|
+
description: 'The query text (SQL, GraphQL, etc.)',
|
|
1190
|
+
},
|
|
1191
|
+
parameters: {
|
|
1192
|
+
type: 'json',
|
|
1193
|
+
optional: true,
|
|
1194
|
+
description: 'Query parameters and their default values',
|
|
1195
|
+
},
|
|
1196
|
+
variables: {
|
|
1197
|
+
type: 'json',
|
|
1198
|
+
optional: true,
|
|
1199
|
+
description: 'Current variable values',
|
|
1200
|
+
},
|
|
1201
|
+
// Filters and transformations
|
|
1202
|
+
filters: {
|
|
1203
|
+
type: 'json',
|
|
1204
|
+
optional: true,
|
|
1205
|
+
description: 'Additional filters applied to results',
|
|
1206
|
+
},
|
|
1207
|
+
sort: {
|
|
1208
|
+
type: 'json',
|
|
1209
|
+
optional: true,
|
|
1210
|
+
description: 'Sort configuration',
|
|
1211
|
+
},
|
|
1212
|
+
limit: {
|
|
1213
|
+
type: 'number',
|
|
1214
|
+
optional: true,
|
|
1215
|
+
description: 'Maximum number of results',
|
|
1216
|
+
},
|
|
1217
|
+
offset: {
|
|
1218
|
+
type: 'number',
|
|
1219
|
+
optional: true,
|
|
1220
|
+
description: 'Result offset for pagination',
|
|
1221
|
+
},
|
|
1222
|
+
transformations: {
|
|
1223
|
+
type: 'json',
|
|
1224
|
+
optional: true,
|
|
1225
|
+
description: 'Data transformations to apply',
|
|
1226
|
+
},
|
|
1227
|
+
// Caching
|
|
1228
|
+
cached: {
|
|
1229
|
+
type: 'boolean',
|
|
1230
|
+
optional: true,
|
|
1231
|
+
description: 'Whether to cache query results',
|
|
1232
|
+
},
|
|
1233
|
+
cacheDuration: {
|
|
1234
|
+
type: 'number',
|
|
1235
|
+
optional: true,
|
|
1236
|
+
description: 'Cache duration in seconds',
|
|
1237
|
+
},
|
|
1238
|
+
lastExecutedAt: {
|
|
1239
|
+
type: 'datetime',
|
|
1240
|
+
optional: true,
|
|
1241
|
+
description: 'When query was last executed',
|
|
1242
|
+
},
|
|
1243
|
+
// Performance
|
|
1244
|
+
executionTime: {
|
|
1245
|
+
type: 'number',
|
|
1246
|
+
optional: true,
|
|
1247
|
+
description: 'Last execution time in milliseconds',
|
|
1248
|
+
},
|
|
1249
|
+
rowCount: {
|
|
1250
|
+
type: 'number',
|
|
1251
|
+
optional: true,
|
|
1252
|
+
description: 'Number of rows returned',
|
|
1253
|
+
},
|
|
1254
|
+
timeout: {
|
|
1255
|
+
type: 'number',
|
|
1256
|
+
optional: true,
|
|
1257
|
+
description: 'Query timeout in milliseconds',
|
|
1258
|
+
},
|
|
1259
|
+
// Status
|
|
1260
|
+
status: {
|
|
1261
|
+
type: 'string',
|
|
1262
|
+
optional: true,
|
|
1263
|
+
description: 'Query status: ready, running, completed, failed',
|
|
1264
|
+
examples: ['ready', 'running', 'completed', 'failed'],
|
|
1265
|
+
},
|
|
1266
|
+
error: {
|
|
1267
|
+
type: 'string',
|
|
1268
|
+
optional: true,
|
|
1269
|
+
description: 'Error message if query failed',
|
|
1270
|
+
},
|
|
1271
|
+
// Organization
|
|
1272
|
+
category: {
|
|
1273
|
+
type: 'string',
|
|
1274
|
+
optional: true,
|
|
1275
|
+
description: 'Query category',
|
|
1276
|
+
},
|
|
1277
|
+
tags: {
|
|
1278
|
+
type: 'string',
|
|
1279
|
+
array: true,
|
|
1280
|
+
optional: true,
|
|
1281
|
+
description: 'Tags for categorization',
|
|
1282
|
+
},
|
|
1283
|
+
favorite: {
|
|
1284
|
+
type: 'boolean',
|
|
1285
|
+
optional: true,
|
|
1286
|
+
description: 'Whether query is favorited',
|
|
1287
|
+
},
|
|
1288
|
+
shared: {
|
|
1289
|
+
type: 'boolean',
|
|
1290
|
+
optional: true,
|
|
1291
|
+
description: 'Whether query is shared with team',
|
|
1292
|
+
},
|
|
1293
|
+
},
|
|
1294
|
+
relationships: {
|
|
1295
|
+
dataSource: {
|
|
1296
|
+
type: 'DataSource',
|
|
1297
|
+
backref: 'queries',
|
|
1298
|
+
description: 'Data source this query runs against',
|
|
1299
|
+
},
|
|
1300
|
+
reports: {
|
|
1301
|
+
type: 'Report[]',
|
|
1302
|
+
description: 'Reports using this query',
|
|
1303
|
+
},
|
|
1304
|
+
widgets: {
|
|
1305
|
+
type: 'Widget[]',
|
|
1306
|
+
description: 'Widgets using this query',
|
|
1307
|
+
},
|
|
1308
|
+
metrics: {
|
|
1309
|
+
type: 'Metric[]',
|
|
1310
|
+
description: 'Metrics calculated from this query',
|
|
1311
|
+
},
|
|
1312
|
+
owner: {
|
|
1313
|
+
type: 'Contact',
|
|
1314
|
+
description: 'Query owner/creator',
|
|
1315
|
+
},
|
|
1316
|
+
collaborators: {
|
|
1317
|
+
type: 'Contact[]',
|
|
1318
|
+
description: 'People with access to this query',
|
|
1319
|
+
},
|
|
1320
|
+
},
|
|
1321
|
+
actions: [
|
|
1322
|
+
'create',
|
|
1323
|
+
'edit',
|
|
1324
|
+
'execute',
|
|
1325
|
+
'cancel',
|
|
1326
|
+
'test',
|
|
1327
|
+
'validate',
|
|
1328
|
+
'optimize',
|
|
1329
|
+
'schedule',
|
|
1330
|
+
'export',
|
|
1331
|
+
'duplicate',
|
|
1332
|
+
'share',
|
|
1333
|
+
'unshare',
|
|
1334
|
+
'favorite',
|
|
1335
|
+
'unfavorite',
|
|
1336
|
+
'delete',
|
|
1337
|
+
],
|
|
1338
|
+
events: [
|
|
1339
|
+
'created',
|
|
1340
|
+
'edited',
|
|
1341
|
+
'executed',
|
|
1342
|
+
'cancelled',
|
|
1343
|
+
'tested',
|
|
1344
|
+
'validated',
|
|
1345
|
+
'optimized',
|
|
1346
|
+
'scheduled',
|
|
1347
|
+
'exported',
|
|
1348
|
+
'duplicated',
|
|
1349
|
+
'shared',
|
|
1350
|
+
'unshared',
|
|
1351
|
+
'favorited',
|
|
1352
|
+
'unfavorited',
|
|
1353
|
+
'failed',
|
|
1354
|
+
'deleted',
|
|
1355
|
+
],
|
|
1356
|
+
};
|
|
1357
|
+
// =============================================================================
|
|
1358
|
+
// Alert
|
|
1359
|
+
// =============================================================================
|
|
1360
|
+
/**
|
|
1361
|
+
* Alert entity
|
|
1362
|
+
*
|
|
1363
|
+
* Represents an alert or notification triggered by metric thresholds
|
|
1364
|
+
*/
|
|
1365
|
+
export const Alert = {
|
|
1366
|
+
singular: 'alert',
|
|
1367
|
+
plural: 'alerts',
|
|
1368
|
+
description: 'An alert or notification based on metric thresholds and conditions',
|
|
1369
|
+
properties: {
|
|
1370
|
+
// Identity
|
|
1371
|
+
name: {
|
|
1372
|
+
type: 'string',
|
|
1373
|
+
description: 'Alert name',
|
|
1374
|
+
},
|
|
1375
|
+
description: {
|
|
1376
|
+
type: 'string',
|
|
1377
|
+
optional: true,
|
|
1378
|
+
description: 'Alert description',
|
|
1379
|
+
},
|
|
1380
|
+
// Condition
|
|
1381
|
+
condition: {
|
|
1382
|
+
type: 'string',
|
|
1383
|
+
description: 'Alert condition expression',
|
|
1384
|
+
},
|
|
1385
|
+
operator: {
|
|
1386
|
+
type: 'string',
|
|
1387
|
+
description: 'Comparison operator: gt, gte, lt, lte, eq, ne, between, outside',
|
|
1388
|
+
examples: ['gt', 'gte', 'lt', 'lte', 'eq', 'ne', 'between', 'outside'],
|
|
1389
|
+
},
|
|
1390
|
+
threshold: {
|
|
1391
|
+
type: 'number',
|
|
1392
|
+
description: 'Threshold value',
|
|
1393
|
+
},
|
|
1394
|
+
secondThreshold: {
|
|
1395
|
+
type: 'number',
|
|
1396
|
+
optional: true,
|
|
1397
|
+
description: 'Second threshold for between/outside operators',
|
|
1398
|
+
},
|
|
1399
|
+
// Evaluation
|
|
1400
|
+
evaluationInterval: {
|
|
1401
|
+
type: 'number',
|
|
1402
|
+
description: 'How often to evaluate condition (in seconds)',
|
|
1403
|
+
},
|
|
1404
|
+
evaluationWindow: {
|
|
1405
|
+
type: 'number',
|
|
1406
|
+
optional: true,
|
|
1407
|
+
description: 'Time window for evaluation (in seconds)',
|
|
1408
|
+
},
|
|
1409
|
+
evaluationCount: {
|
|
1410
|
+
type: 'number',
|
|
1411
|
+
optional: true,
|
|
1412
|
+
description: 'Number of consecutive evaluations before triggering',
|
|
1413
|
+
},
|
|
1414
|
+
// Severity
|
|
1415
|
+
severity: {
|
|
1416
|
+
type: 'string',
|
|
1417
|
+
description: 'Alert severity: info, warning, error, critical',
|
|
1418
|
+
examples: ['info', 'warning', 'error', 'critical'],
|
|
1419
|
+
},
|
|
1420
|
+
priority: {
|
|
1421
|
+
type: 'string',
|
|
1422
|
+
optional: true,
|
|
1423
|
+
description: 'Alert priority: low, medium, high',
|
|
1424
|
+
examples: ['low', 'medium', 'high'],
|
|
1425
|
+
},
|
|
1426
|
+
// Status
|
|
1427
|
+
enabled: {
|
|
1428
|
+
type: 'boolean',
|
|
1429
|
+
description: 'Whether alert is enabled',
|
|
1430
|
+
},
|
|
1431
|
+
status: {
|
|
1432
|
+
type: 'string',
|
|
1433
|
+
description: 'Alert status: active, triggered, resolved, snoozed, disabled',
|
|
1434
|
+
examples: ['active', 'triggered', 'resolved', 'snoozed', 'disabled'],
|
|
1435
|
+
},
|
|
1436
|
+
triggeredAt: {
|
|
1437
|
+
type: 'datetime',
|
|
1438
|
+
optional: true,
|
|
1439
|
+
description: 'When alert was triggered',
|
|
1440
|
+
},
|
|
1441
|
+
resolvedAt: {
|
|
1442
|
+
type: 'datetime',
|
|
1443
|
+
optional: true,
|
|
1444
|
+
description: 'When alert condition was resolved',
|
|
1445
|
+
},
|
|
1446
|
+
snoozedUntil: {
|
|
1447
|
+
type: 'datetime',
|
|
1448
|
+
optional: true,
|
|
1449
|
+
description: 'Alert is snoozed until this time',
|
|
1450
|
+
},
|
|
1451
|
+
lastEvaluatedAt: {
|
|
1452
|
+
type: 'datetime',
|
|
1453
|
+
optional: true,
|
|
1454
|
+
description: 'When condition was last evaluated',
|
|
1455
|
+
},
|
|
1456
|
+
nextEvaluationAt: {
|
|
1457
|
+
type: 'datetime',
|
|
1458
|
+
optional: true,
|
|
1459
|
+
description: 'When condition will be evaluated next',
|
|
1460
|
+
},
|
|
1461
|
+
// Notification
|
|
1462
|
+
notificationChannels: {
|
|
1463
|
+
type: 'string',
|
|
1464
|
+
array: true,
|
|
1465
|
+
optional: true,
|
|
1466
|
+
description: 'Notification channels: email, sms, slack, webhook, push',
|
|
1467
|
+
examples: ['email', 'sms', 'slack', 'webhook', 'push'],
|
|
1468
|
+
},
|
|
1469
|
+
recipients: {
|
|
1470
|
+
type: 'string',
|
|
1471
|
+
array: true,
|
|
1472
|
+
optional: true,
|
|
1473
|
+
description: 'Recipients to notify',
|
|
1474
|
+
},
|
|
1475
|
+
message: {
|
|
1476
|
+
type: 'string',
|
|
1477
|
+
optional: true,
|
|
1478
|
+
description: 'Custom alert message',
|
|
1479
|
+
},
|
|
1480
|
+
notifyOnResolve: {
|
|
1481
|
+
type: 'boolean',
|
|
1482
|
+
optional: true,
|
|
1483
|
+
description: 'Whether to notify when alert resolves',
|
|
1484
|
+
},
|
|
1485
|
+
// History
|
|
1486
|
+
triggerCount: {
|
|
1487
|
+
type: 'number',
|
|
1488
|
+
optional: true,
|
|
1489
|
+
description: 'Number of times alert has triggered',
|
|
1490
|
+
},
|
|
1491
|
+
lastTriggerValue: {
|
|
1492
|
+
type: 'number',
|
|
1493
|
+
optional: true,
|
|
1494
|
+
description: 'Metric value when last triggered',
|
|
1495
|
+
},
|
|
1496
|
+
// Organization
|
|
1497
|
+
tags: {
|
|
1498
|
+
type: 'string',
|
|
1499
|
+
array: true,
|
|
1500
|
+
optional: true,
|
|
1501
|
+
description: 'Tags for categorization',
|
|
1502
|
+
},
|
|
1503
|
+
category: {
|
|
1504
|
+
type: 'string',
|
|
1505
|
+
optional: true,
|
|
1506
|
+
description: 'Alert category',
|
|
1507
|
+
},
|
|
1508
|
+
},
|
|
1509
|
+
relationships: {
|
|
1510
|
+
metric: {
|
|
1511
|
+
type: 'Metric',
|
|
1512
|
+
backref: 'alerts',
|
|
1513
|
+
description: 'Metric being monitored',
|
|
1514
|
+
},
|
|
1515
|
+
widget: {
|
|
1516
|
+
type: 'Widget',
|
|
1517
|
+
required: false,
|
|
1518
|
+
description: 'Widget associated with this alert',
|
|
1519
|
+
},
|
|
1520
|
+
dataSource: {
|
|
1521
|
+
type: 'DataSource',
|
|
1522
|
+
description: 'Data source for alert evaluation',
|
|
1523
|
+
},
|
|
1524
|
+
owner: {
|
|
1525
|
+
type: 'Contact',
|
|
1526
|
+
description: 'Alert owner/creator',
|
|
1527
|
+
},
|
|
1528
|
+
subscribers: {
|
|
1529
|
+
type: 'Contact[]',
|
|
1530
|
+
description: 'People subscribed to alert notifications',
|
|
1531
|
+
},
|
|
1532
|
+
},
|
|
1533
|
+
actions: [
|
|
1534
|
+
'create',
|
|
1535
|
+
'edit',
|
|
1536
|
+
'enable',
|
|
1537
|
+
'disable',
|
|
1538
|
+
'trigger',
|
|
1539
|
+
'resolve',
|
|
1540
|
+
'snooze',
|
|
1541
|
+
'unsnooze',
|
|
1542
|
+
'test',
|
|
1543
|
+
'acknowledge',
|
|
1544
|
+
'escalate',
|
|
1545
|
+
'delete',
|
|
1546
|
+
],
|
|
1547
|
+
events: [
|
|
1548
|
+
'created',
|
|
1549
|
+
'edited',
|
|
1550
|
+
'enabled',
|
|
1551
|
+
'disabled',
|
|
1552
|
+
'triggered',
|
|
1553
|
+
'resolved',
|
|
1554
|
+
'snoozed',
|
|
1555
|
+
'unsnoozed',
|
|
1556
|
+
'tested',
|
|
1557
|
+
'acknowledged',
|
|
1558
|
+
'escalated',
|
|
1559
|
+
'notificationSent',
|
|
1560
|
+
'notificationFailed',
|
|
1561
|
+
'deleted',
|
|
1562
|
+
],
|
|
1563
|
+
};
|
|
1564
|
+
// =============================================================================
|
|
1565
|
+
// Export all entities as a schema
|
|
1566
|
+
// =============================================================================
|
|
1567
|
+
/**
|
|
1568
|
+
* All analytics and reporting entity types
|
|
1569
|
+
*/
|
|
1570
|
+
export const AnalyticsEntities = {
|
|
1571
|
+
Report,
|
|
1572
|
+
Dashboard,
|
|
1573
|
+
Widget,
|
|
1574
|
+
Metric,
|
|
1575
|
+
Goal,
|
|
1576
|
+
DataSource,
|
|
1577
|
+
Query,
|
|
1578
|
+
Alert,
|
|
1579
|
+
};
|
|
1580
|
+
/**
|
|
1581
|
+
* Entity categories for organization
|
|
1582
|
+
*/
|
|
1583
|
+
export const AnalyticsCategories = {
|
|
1584
|
+
reporting: ['Report'],
|
|
1585
|
+
visualization: ['Dashboard', 'Widget'],
|
|
1586
|
+
tracking: ['Metric', 'Goal', 'Alert'],
|
|
1587
|
+
data: ['DataSource', 'Query'],
|
|
1588
|
+
};
|
|
1589
|
+
//# sourceMappingURL=analytics.js.map
|