diff --git a/api/src/middlewares/FileHandlerMiddleware.ts b/api/src/middlewares/FileHandlerMiddleware.ts index a5229c5..2cb1e72 100644 --- a/api/src/middlewares/FileHandlerMiddleware.ts +++ b/api/src/middlewares/FileHandlerMiddleware.ts @@ -2,6 +2,8 @@ import fs from 'fs'; import multer from 'multer'; import { Request, Response, NextFunction } from 'express'; import {v4 as uuidv4} from 'uuid'; +import { sanitizePathSegment } from '../utils/path-utils'; +import path from 'path'; const addFilenameToBody = (...fieldNames: string[]) => (req: any, res: any, next: NextFunction) => { fieldNames.forEach(fieldName => { @@ -33,45 +35,97 @@ const handleFileUpload = (imageFieldNames: string[], folder: string) => { } } -const handlePricingUpload = (pricingFieldNames: string[], folder: string) => { +const handlePricingUpload = (pricingFieldNames: string[], baseFolder: string) => { const storage = multer.diskStorage({ - destination: function (req, file, cb) { - fs.mkdirSync(folder + `/${req.body.saasName}`, { recursive: true }) - cb(null, folder) + destination: (req, _file, cb) => { + try { + const saasName = sanitizePathSegment(req.body?.saasName, "unknown-saas") + const targetDir = path.resolve(baseFolder, saasName) + + // Ensure the directory exists + fs.mkdirSync(targetDir, { recursive: true }) + + cb(null, targetDir) + } catch (error) { + cb(error as Error, baseFolder) + } }, - filename: function (req, file, cb) { - if (file) { - cb(null, req.body.saasName + "/" + req.body.version + '.' + file.originalname.split('.').pop()) - } else { - cb(new Error('File does not exist'), "fail.yml") + + filename: (req, file, cb) => { + try { + if (!file) { + cb(new Error("File does not exist"), "fail.yml") + return + } + + const version = sanitizePathSegment(req.body?.version, "0.0.0") + + // Keep original extension (including .yml / .yaml) + const ext = path.extname(file.originalname) || ".yml" + + cb(null, `${version}${ext}`) + } catch (error) { + cb(error as Error, "fail.yml") } } }) if (pricingFieldNames.length === 1) { return multer({ storage }).single(pricingFieldNames[0]) - } else { - const fields = pricingFieldNames.map(pricingFieldNames => { return { name: pricingFieldNames, maxCount: 1 } }) - return multer({ storage }).fields(fields) } + + const fields = pricingFieldNames.map((name) => ({ name, maxCount: 1 })) + return multer({ storage }).fields(fields) } -const handleCollectionUpload = (collectionFieldNames: string[], folder: string) => { +const handleCollectionUpload = ( + collectionFieldNames: string[], + baseFolder: string +) => { const storage = multer.diskStorage({ - destination: function (req, file, cb) { - fs.mkdirSync(folder + `/`, { recursive: true }) - cb(null, folder) - }, - filename: function (req, file, cb) { - cb(null, uuidv4() + '.' + file.originalname.split('.').pop()) + destination: (_req, _file, cb) => { + try { + const targetDir = path.resolve(baseFolder) + + fs.mkdirSync(targetDir, { recursive: true }) + + cb(null, targetDir) + } catch (error) { + cb(error as Error, baseFolder) + } }, + + filename: (_req, file, cb) => { + try { + if (!file) { + cb(new Error("File does not exist"), "fail.zip") + return + } + + const extension = path.extname(file.originalname) || ".zip" + + cb(null, `${uuidv4()}${extension}`) + } catch (error) { + cb(error as Error, "fail.zip") + } + } }) if (collectionFieldNames.length === 1) { - return multer({ storage: storage, limits: {fileSize: 2 * 1024 * 1024} }).single(collectionFieldNames[0]) - } else { - const fields = collectionFieldNames.map(collectionFieldNames => { return { name: collectionFieldNames, maxCount: 1 } }) - return multer({ storage }).fields(fields) + return multer({ + storage, + limits: { fileSize: 2 * 1024 * 1024 } + }).single(collectionFieldNames[0]) } + + const fields = collectionFieldNames.map((name) => ({ + name, + maxCount: 1 + })) + + return multer({ + storage, + limits: { fileSize: 2 * 1024 * 1024 } + }).fields(fields) } export { handleFileUpload, addFilenameToBody, handlePricingUpload, handleCollectionUpload } diff --git a/api/src/routes/PricingCollectionRoutes.ts b/api/src/routes/PricingCollectionRoutes.ts index 092cad5..08822af 100644 --- a/api/src/routes/PricingCollectionRoutes.ts +++ b/api/src/routes/PricingCollectionRoutes.ts @@ -5,11 +5,16 @@ import PricingController from '../controllers/PricingController'; import { handleValidation } from '../middlewares/ValidationHandlingMiddleware'; import * as PricingCollectionValidator from '../controllers/validation/PricingCollectionValidation'; import { handleCollectionUpload } from '../middlewares/FileHandlerMiddleware'; +import path from 'path'; const loadFileRoutes = function (app: express.Application) { const pricingCollectionController = new PricingCollectionController(); const pricingController = new PricingController(); - const upload = handleCollectionUpload(['zip'], './public/static/collections'); + + const upload = handleCollectionUpload( + ['zip'], + path.resolve(process.cwd(), 'public', 'static', 'collections') + ); const baseUrl = process.env.BASE_URL_PATH; @@ -40,7 +45,7 @@ const loadFileRoutes = function (app: express.Application) { ) .delete(isLoggedIn, pricingCollectionController.destroy); - app + app .route(baseUrl + '/pricings/collections/:userId/:collectionName/download') .get(pricingCollectionController.downloadCollection); }; diff --git a/api/src/routes/PricingRoutes.ts b/api/src/routes/PricingRoutes.ts index e1f671a..436f0b5 100644 --- a/api/src/routes/PricingRoutes.ts +++ b/api/src/routes/PricingRoutes.ts @@ -4,10 +4,14 @@ import PricingController from '../controllers/PricingController'; import { handlePricingUpload } from '../middlewares/FileHandlerMiddleware'; import * as PricingValidator from '../controllers/validation/PricingValidation'; import { handleValidation } from '../middlewares/ValidationHandlingMiddleware'; +import path from 'path'; const loadFileRoutes = function (app: express.Application) { const pricingController = new PricingController(); - const upload = handlePricingUpload(['yaml'], './public/static/pricings/uploaded'); + const upload = handlePricingUpload( + ["yaml"], + path.resolve(process.cwd(), "public", "static", "pricings", "uploaded") +) const baseUrl = process.env.BASE_URL_PATH; diff --git a/api/src/utils/path-utils.ts b/api/src/utils/path-utils.ts new file mode 100644 index 0000000..53d1d19 --- /dev/null +++ b/api/src/utils/path-utils.ts @@ -0,0 +1,20 @@ +/** + * Conservative sanitization for filesystem path segments. + * - Removes Windows-illegal characters: < > : " / \ | ? * + * - Collapses whitespace + * - Blocks path traversal via "." and ".." + */ +export const sanitizePathSegment = (raw: unknown, fallback: string): string => { + const value = typeof raw === "string" ? raw.trim() : "" + if (!value) return fallback + + // Remove illegal characters and normalize spaces + const cleaned = value + .replace(/[<>:"/\\|?*\u0000-\u001F]/g, "") // illegal + control chars + .replace(/\s+/g, "_") + + // Prevent "." / ".." and empty results + if (cleaned === "." || cleaned === ".." || cleaned.length === 0) return fallback + + return cleaned +} \ No newline at end of file diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 0c26434..2876f5a 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -30,7 +30,6 @@ "framer-motion": "^12.23.16", "globe.gl": "^2.33.1", "helmet": "^8.0.0", - "js-yaml": "^4.1.0", "lz-string": "^1.5.0", "monaco-editor": "^0.52.0", "pricing4ts": "^0.10.4", @@ -54,7 +53,6 @@ }, "devDependencies": { "@eslint/js": "^9.11.1", - "@types/js-yaml": "^4.0.5", "@types/react": "^18.3.10", "@types/react-dom": "^18.3.0", "@vitejs/plugin-react": "^4.3.2", @@ -2473,12 +2471,6 @@ "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", "license": "MIT" }, - "node_modules/@types/js-yaml": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", - "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", - "dev": true - }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", diff --git a/frontend/src/modules/harvey/components/ChatTranscript.tsx b/frontend/src/modules/harvey/components/ChatTranscript.tsx index 6269ae0..a2568f8 100644 --- a/frontend/src/modules/harvey/components/ChatTranscript.tsx +++ b/frontend/src/modules/harvey/components/ChatTranscript.tsx @@ -1,9 +1,19 @@ import ReactMarkdown from 'react-markdown'; import remarkGfm from 'remark-gfm'; -import { Box, Typography, Paper, Button, Accordion, AccordionSummary, AccordionDetails, CircularProgress } from '@mui/material'; +import { + Box, + Typography, + Paper, + Button, + Accordion, + AccordionSummary, + AccordionDetails, + CircularProgress, +} from '@mui/material'; import { grey, primary } from '../../core/theme/palette'; import type { ChatMessage, PromptPreset } from '../types/types'; +import usePlayground from '../hooks/usePlayground'; interface Props { messages: ChatMessage[]; @@ -13,12 +23,18 @@ interface Props { } function ChatTranscript({ messages, isLoading, promptPresets = [], onPresetSelect }: Props) { + const isPlaygroundEnabled = usePlayground(); + + const isPresetGalleyEnabled = !isPlaygroundEnabled && promptPresets.length > 0 && onPresetSelect; + return ( {messages.length === 0 && !isLoading ? ( - 💬 + + 💬 + Welcome to H.A.R.V.E.Y. @@ -26,9 +42,17 @@ function ChatTranscript({ messages, isLoading, promptPresets = [], onPresetSelec Enabling seamless execution of the Pricing Intelligence Interpretation Process. - {promptPresets.length > 0 && onPresetSelect && ( - - {promptPresets.map((preset) => ( + {isPresetGalleyEnabled && ( + + {promptPresets.map(preset => ( diff --git a/frontend/src/modules/harvey/components/ContextManagerItem.tsx b/frontend/src/modules/harvey/components/ContextManagerItem.tsx index 21dab52..5200f51 100644 --- a/frontend/src/modules/harvey/components/ContextManagerItem.tsx +++ b/frontend/src/modules/harvey/components/ContextManagerItem.tsx @@ -3,6 +3,10 @@ import { PricingContextItem } from '../types/types'; import { Box } from '@mui/system'; import { grey } from '@mui/material/colors'; import { OpenInNew } from '@mui/icons-material'; +import { usePreset } from '../hooks/usePreset'; +import usePlayground from '../hooks/usePlayground'; +import { UseCases } from '../use-cases'; +import { parseStringYamlToEncodedYaml } from '../../pricing-editor/services/export.service'; const HARVEY_API_BASE_URL = import.meta.env.VITE_HARVEY_URL ?? 'http://localhost:8086'; @@ -47,6 +51,10 @@ function computeContextItemMetadata(pricingContextItem: PricingContextItem): str } function ContextManagerItem({ item, onRemove }: ContextManagerItemProps) { + const isPlaygroundEnabled = usePlayground(); + + const { preset } = usePreset(); + const formatSphereEditorLink = (url: string) => `/editor?pricingUrl=${url}`; const formatEditorLink = (): string => { @@ -55,7 +63,9 @@ function ContextManagerItem({ item, onRemove }: ContextManagerItemProps) { case 'user': case 'detected': case 'agent': - return formatSphereEditorLink(`https:/${import.meta.env.VITE_SPHERE_URL}${HARVEY_API_BASE_URL}/static/${item.id}.yaml`); + return formatSphereEditorLink( + `https:/${import.meta.env.VITE_SPHERE_URL}${HARVEY_API_BASE_URL}/static/${item.id}.yaml` + ); case 'sphere': return formatSphereEditorLink(item.yamlPath); default: @@ -63,6 +73,25 @@ function ContextManagerItem({ item, onRemove }: ContextManagerItemProps) { } }; + const formatPlaygroundModeLink = (): string => { + + if (!preset) { + return ''; + } + + if (preset.id === UseCases.AMINT) { + const url = + 'https://gist.githubusercontent.com/pgmarc/570f51424ef80fcb720f9bc656645a89/raw/549721cb3e7d14a6cc91555ab827e167dfa4f51c/protonmail-2026.yaml'; + return formatSphereEditorLink(url); + } + + if (item.kind === 'yaml') { + return `/editor?pricing=${parseStringYamlToEncodedYaml(item.value)}`; + } + + return "#" + }; + const isSphereEditorLinkEnabled = item.kind === 'yaml' || (item.kind === 'url' && item.transform === 'done'); @@ -98,7 +127,7 @@ function ContextManagerItem({ item, onRemove }: ContextManagerItemProps) { size="small" variant="text" target="_blank" - href={formatEditorLink()} + href={!isPlaygroundEnabled ? formatEditorLink() : formatPlaygroundModeLink()} startIcon={} > Open in editor diff --git a/frontend/src/modules/harvey/components/ControlPanel.tsx b/frontend/src/modules/harvey/components/ControlPanel.tsx index 97974e5..0f1b9d5 100644 --- a/frontend/src/modules/harvey/components/ControlPanel.tsx +++ b/frontend/src/modules/harvey/components/ControlPanel.tsx @@ -15,9 +15,11 @@ import { import CloseIcon from '@mui/icons-material/Close'; import ContextManager from './ContextManager'; -import type { ContextInputType, PricingContextItem } from '../types/types'; +import type { ContextInputType, PricingContextItem, PromptPreset } from '../types/types'; import SearchPricings from './SearchPricings'; import { grey } from '@mui/material/colors'; +import usePlayground from '../hooks/usePlayground'; +import UseCaseSelect from './UseCaseSelect'; interface Props { question: string; @@ -25,6 +27,7 @@ interface Props { contextItems: PricingContextItem[]; isSubmitting: boolean; isSubmitDisabled: boolean; + onPresetSelect: (preset: PromptPreset) => void; onQuestionChange: (value: string) => void; onSubmit: (event: FormEvent) => void; onFileSelect: (files: FileList | null) => void; @@ -47,8 +50,10 @@ function ControlPanel({ onContextRemove, onSphereContextRemove, onContextClear, + onPresetSelect }: Props) { const [showPricingModal, setPricingModal] = useState(false); + const isPlaygroundEnabled = usePlayground(); const handleQuestionChange = (event: ChangeEvent) => { onQuestionChange(event.target.value); @@ -63,12 +68,14 @@ function ControlPanel({ onSubmit={onSubmit} sx={{ display: 'flex', flexDirection: 'column', gap: 3, p: 2 }} > + {isPlaygroundEnabled && } - - Add Pricing Context - + {!isPlaygroundEnabled && ( + + Add Pricing Context + + )} - }> - - - - Upload pricing YAML (optional) - - - Uploaded YAMLs appear in the pricing context above so you can remove them at any time. - - + {!isPlaygroundEnabled && ( + }> + + + + Upload pricing YAML (optional) + + + Uploaded YAMLs appear in the pricing context above so you can remove them at any time. + + - - - - Add SPHERE iPricing (optional) - - - Add iPricings with our SPHERE integration (our iPricing repository). - - - You can further customize the search if you type a pricing name in the search bar. - + + + + Add SPHERE iPricing (optional) + + + Add iPricings with our SPHERE integration (our iPricing repository). + + + You can further customize the search if you type a pricing name in the search bar. + - - - - - - - Search Pricings - - - - - - + + + + + + + Search Pricings + + + + + + + )} ); } diff --git a/frontend/src/modules/harvey/components/PlaygroundProvider.tsx b/frontend/src/modules/harvey/components/PlaygroundProvider.tsx new file mode 100644 index 0000000..0f19e81 --- /dev/null +++ b/frontend/src/modules/harvey/components/PlaygroundProvider.tsx @@ -0,0 +1,12 @@ +import { PlaygroundContext } from '../context/playgroundContext'; + +interface Props { + playground: boolean; + children: React.ReactNode; +} + +function PlaygroundProvider({ playground, children }: Props) { + return {children}; +} + +export default PlaygroundProvider; diff --git a/frontend/src/modules/harvey/components/PresetProvider.tsx b/frontend/src/modules/harvey/components/PresetProvider.tsx new file mode 100644 index 0000000..bacd26c --- /dev/null +++ b/frontend/src/modules/harvey/components/PresetProvider.tsx @@ -0,0 +1,12 @@ +import { PresetContext, PresetContextType } from '../context/presetContext'; + +interface Props { + presetContext: PresetContextType; + children: React.ReactNode; +} + +function PresetProvider({ presetContext, children }: Props) { + return {children}; +} + +export default PresetProvider; diff --git a/frontend/src/modules/harvey/components/UseCaseSelect.tsx b/frontend/src/modules/harvey/components/UseCaseSelect.tsx new file mode 100644 index 0000000..832aa25 --- /dev/null +++ b/frontend/src/modules/harvey/components/UseCaseSelect.tsx @@ -0,0 +1,52 @@ +import { FormControl, InputLabel, MenuItem, Select, SelectChangeEvent } from '@mui/material'; +import { usePreset } from '../hooks/usePreset'; +import { USE_CASES } from '../use-cases'; +import { PromptPreset } from '../types/types'; + +interface Props { + onPresetSelect: (preset: PromptPreset) => void; +} + +function UseCaseSelect({ onPresetSelect }: Props) { + const { preset, setPreset } = usePreset(); + + const findPresetById = (presetId: string): PromptPreset | null => { + const res = USE_CASES.filter(preset => preset.id === presetId); + if (res.length === 0) { + return null; + } + return res[0]; + }; + + const handlePresetChange = (event: SelectChangeEvent) => { + const currPreset = findPresetById(event.target.value as string); + setPreset(currPreset); + if (currPreset) { + onPresetSelect(currPreset); + } + }; + + const availablePresets = USE_CASES.filter(preset => preset.response) + + return ( + + Select a use case + + + ); +} + +export default UseCaseSelect; diff --git a/frontend/src/modules/harvey/context/playgroundContext.ts b/frontend/src/modules/harvey/context/playgroundContext.ts new file mode 100644 index 0000000..5ddafba --- /dev/null +++ b/frontend/src/modules/harvey/context/playgroundContext.ts @@ -0,0 +1,3 @@ +import { createContext } from "react"; + +export const PlaygroundContext = createContext(null) \ No newline at end of file diff --git a/frontend/src/modules/harvey/context/presetContext.ts b/frontend/src/modules/harvey/context/presetContext.ts new file mode 100644 index 0000000..831c4ab --- /dev/null +++ b/frontend/src/modules/harvey/context/presetContext.ts @@ -0,0 +1,9 @@ +import { createContext } from "react"; +import { PromptPreset } from "../types/types"; + +export interface PresetContextType { + preset: PromptPreset | null + setPreset: React.Dispatch> +} + +export const PresetContext = createContext(undefined) \ No newline at end of file diff --git a/frontend/src/modules/harvey/hooks/usePlayground.ts b/frontend/src/modules/harvey/hooks/usePlayground.ts new file mode 100644 index 0000000..553b87d --- /dev/null +++ b/frontend/src/modules/harvey/hooks/usePlayground.ts @@ -0,0 +1,14 @@ +import { useContext } from 'react'; +import { PlaygroundContext } from '../context/playgroundContext'; + +function usePlayground() { + const value = useContext(PlaygroundContext); + + if (value === null) { + throw new Error('usePlayground must be used within PlaygroundProvider'); + } + + return value; +} + +export default usePlayground \ No newline at end of file diff --git a/frontend/src/modules/harvey/hooks/usePreset.ts b/frontend/src/modules/harvey/hooks/usePreset.ts new file mode 100644 index 0000000..f71dbf5 --- /dev/null +++ b/frontend/src/modules/harvey/hooks/usePreset.ts @@ -0,0 +1,17 @@ +import { useContext } from 'react'; +import { PresetContext } from '../context/presetContext'; + +export function usePreset() { + const presetContext = useContext(PresetContext); + + if (!presetContext) { + throw Error('usePreset has to be used within PresetProvider'); + } + + const { preset, setPreset } = presetContext; + + return { + preset, + setPreset + }; +} diff --git a/frontend/src/modules/harvey/pages/pricing-assistant/index.tsx b/frontend/src/modules/harvey/pages/pricing-assistant/index.tsx index f9fbb1a..6a154fe 100644 --- a/frontend/src/modules/harvey/pages/pricing-assistant/index.tsx +++ b/frontend/src/modules/harvey/pages/pricing-assistant/index.tsx @@ -1,5 +1,13 @@ import { FormEvent, useEffect, useMemo, useState } from 'react'; -import { Box, Container, Typography, Button, Paper } from '@mui/material'; +import { + Box, + Container, + Typography, + Button, + Paper, + Alert, + listItemSecondaryActionClasses, +} from '@mui/material'; import Grid from '@mui/material/Grid2'; import { grey } from '../../../core/theme/palette'; @@ -10,6 +18,7 @@ import type { ChatRequest, ContextInputType, NotificationUrlEvent, + PresetContextInput, PricingContextItem, PricingContextUrlWithId, PromptPreset, @@ -25,39 +34,51 @@ import { extractPricingUrls, uploadYamlPricing, } from '../../utils'; +import PlaygroundProvider from '../../components/PlaygroundProvider'; +import PresetProvider from '../../components/PresetProvider'; +import { + playgroundMockUrlTrnasformEvent, + sseUrlTransformEvent, + UrlTransformEvent, +} from '../../sse'; +import { UseCases } from '../../use-cases'; const HARVEY_API_BASE_URL = import.meta.env.VITE_HARVEY_URL ?? 'http://localhost:8086'; -function PricingAssistantPage() { +interface Props { + playground?: boolean; +} + +function PricingAssistantPage({ playground = false }: Props) { const [messages, setMessages] = useState([]); const [question, setQuestion] = useState(''); const [contextItems, setContextItems] = useState([]); const [isLoading, setIsLoading] = useState(false); + const [preset, setPreset] = useState(null); - useEffect(() => { - const eventSource = new EventSource(`${HARVEY_API_BASE_URL}/events`); + const urlTransformEvent: UrlTransformEvent = !playground + ? sseUrlTransformEvent + : playgroundMockUrlTrnasformEvent; - eventSource.onopen = () => console.log('Connection established'); + const handleUrlNotification = (notification: NotificationUrlEvent) => + setContextItems(previous => + previous.map(item => + item.kind === 'url' && item.id === notification.id + ? { ...item, transform: 'done', value: notification.yaml_content } + : item + ) + ); - eventSource.addEventListener('url_transform', (event: MessageEvent) => { - const notification: NotificationUrlEvent = JSON.parse(event.data); - setContextItems(previous => - previous.map(item => - item.kind === 'url' && item.id === notification.id - ? { ...item, transform: 'done', value: notification.yaml_content } - : item - ) - ); - }); - return () => eventSource.close(); - }, []); + useEffect(() => { + return urlTransformEvent.connect(handleUrlNotification); + }, [playground]); const detectedPricingUrls = useMemo(() => extractPricingUrls(question), [question]); const isSubmitDisabled = useMemo(() => { const hasQuestion = Boolean(question.trim()); - return isLoading || !hasQuestion; - }, [question, isLoading]); + return isLoading || !hasQuestion || (playground && messages.length > 0); + }, [question, isLoading, messages]); const createPricingContextItems = (contextInputItems: ContextInputType[]): PricingContextItem[] => contextInputItems @@ -80,17 +101,19 @@ function PricingAssistantPage() { const newPricingContextItems: PricingContextItem[] = createPricingContextItems(inputs); - const uploadPromises = newPricingContextItems - .filter( - item => - item.kind === 'yaml' && - item.origin && - (item.origin === 'user' || item.origin === 'preset') - ) - .map(item => uploadYamlPricing(`${item.id}.yaml`, item.value)); + if (!playground) { + const uploadPromises = newPricingContextItems + .filter( + item => + item.kind === 'yaml' && + item.origin && + (item.origin === 'user' || item.origin === 'preset') + ) + .map(item => uploadYamlPricing(`${item.id}.yaml`, item.value)); - if (uploadPromises.length > 0) { - Promise.all(uploadPromises).catch(err => console.error('Upload failed', err)); + if (uploadPromises.length > 0) { + Promise.all(uploadPromises).catch(err => console.error('Upload failed', err)); + } } setContextItems(previous => [...previous, ...newPricingContextItems]); @@ -103,18 +126,21 @@ function PricingAssistantPage() { }; const removeContextItem = (id: string) => { - const deletePromises = contextItems - .filter( - item => - item.id === id && - item.kind === 'yaml' && - item.origin && - (item.origin === 'user' || item.origin === 'preset') - ) - .map(item => deleteYamlPricing(`${item.id}.yaml`)); - if (deletePromises.length > 0) { - Promise.all(deletePromises); + if (!playground) { + const deletePromises = contextItems + .filter( + item => + item.id === id && + item.kind === 'yaml' && + item.origin && + (item.origin === 'user' || item.origin === 'preset') + ) + .map(item => deleteYamlPricing(`${item.id}.yaml`)); + if (deletePromises.length > 0) { + Promise.all(deletePromises); + } } + setContextItems(previous => previous.filter(item => item.id !== id)); }; @@ -126,14 +152,16 @@ function PricingAssistantPage() { const clearContext = () => { setContextItems([]); - const storedYamls = contextItems - .filter( - item => - (item.kind === 'yaml' && item.origin && item.origin !== 'sphere') || - (item.kind === 'url' && item.transform === 'done') - ) - .map(item => deleteYamlPricing(`${item.id}.yaml`)); - Promise.all(storedYamls).catch(() => console.error('Failed to delete yamls')); + if (!playground) { + const storedYamls = contextItems + .filter( + item => + (item.kind === 'yaml' && item.origin && item.origin !== 'sphere') || + (item.kind === 'url' && item.transform === 'done') + ) + .map(item => deleteYamlPricing(`${item.id}.yaml`)); + Promise.all(storedYamls).catch(() => console.error('Failed to delete yamls')); + } }; const handleFilesSelected = (files: FileList | null) => { @@ -183,17 +211,28 @@ function PricingAssistantPage() { }); }; + const mapPresetContexttoContext = (contextInput: PresetContextInput): ContextInputType => { + if (contextInput.kind === 'url') { + return { + kind: 'url', + label: contextInput.label, + value: contextInput.value, + url: contextInput.value, + transform: 'not-started', + origin: 'preset', + }; + } + + return { kind: 'yaml', label: contextInput.label, value: contextInput.value, origin: 'preset' }; + }; + const handlePromptSelect = (preset: PromptPreset) => { setQuestion(preset.question); if (preset.context.length > 0) { - addContextItems( - preset.context.map(entry => ({ - kind: entry.kind, - label: entry.label, - value: entry.value, - origin: 'preset', - })) + const mappedInput: ContextInputType[] = preset.context.map(entry => + mapPresetContexttoContext(entry) ); + addContextItems(mappedInput); } }; @@ -202,6 +241,7 @@ function PricingAssistantPage() { setQuestion(''); setContextItems([]); setIsLoading(false); + setPreset(null); }; const getUrlItems = () => @@ -299,67 +339,98 @@ function PricingAssistantPage() { } }; + const handlePlaygroundSubmit = (event: FormEvent) => { + event.preventDefault(); + + if (preset) { + const message: ChatMessage = { + id: preset.id, + role: 'assistant', + content: preset.response?.answer ?? '', + createdAt: new Date().toLocaleString(), + metadata: { + plan: preset.response?.plan ?? {}, + result: preset.response?.result ?? {}, + }, + }; + if (preset.id === UseCases.AMINT) { + setContextItems(items => + items.map(item => (item.kind === 'url' ? { ...item, transform: 'done' } : item)) + ); + } + + setMessages(messages => [...messages, message]); + } + }; + return ( - - - - + + + - - - H.A.R.V.E.Y. Pricing Assistant - - - Ask about optimal subscriptions and pricing insights using the Holistic Agent for - Reasoning on Value and Economic analYsis (HARVEY). - - - - + + {playground && Playground mode is active} + + + + H.A.R.V.E.Y. Pricing Assistant + + + + Ask about optimal subscriptions and pricing insights using the Holistic Agent + for Reasoning on Value and Economic analYsis (HARVEY). + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + + + + ); } diff --git a/frontend/src/modules/harvey/prompts.ts b/frontend/src/modules/harvey/prompts.ts index 8e447ff..32fcecb 100644 --- a/frontend/src/modules/harvey/prompts.ts +++ b/frontend/src/modules/harvey/prompts.ts @@ -1,12 +1,14 @@ import overleaf2023 from './samples/overleaf-2023.yaml?raw'; import twoPlansEqual from './samples/two-plans-equal.yaml?raw'; + import type { PromptPreset } from './types/types'; export const PROMPT_PRESETS: PromptPreset[] = [ { id: 'overleaf-optimal-plan', label: 'Find the cheapest Overleaf subscription that includes certain features', - description: 'Find the most affordable Overleaf configuration available to establish a subscription that includes GitHub integration and document history.', + description: + 'Find the most affordable Overleaf configuration available to establish a subscription that includes GitHub integration and document history.', question: 'Using the Overleaf pricing, what is the cheapest configuration that bundles GitHub integration and the full document history? Compare it with the more expensive tiers.', context: [ @@ -14,14 +16,14 @@ export const PROMPT_PRESETS: PromptPreset[] = [ kind: 'yaml', label: 'overleaf-2023.yaml', value: overleaf2023, - origin: 'preset' - } - ] + }, + ], }, { id: 'overleaf-seat-limits', label: 'Compare usage limits across Overleaf pricing', - description: 'Compare the collaborator capacity per Overleaf configuration and highlight the maximum.', + description: + 'Compare the collaborator capacity per Overleaf configuration and highlight the maximum.', question: 'From the Overleaf pricing, list each plan with its collaborator limit and indicate which plan allows the highest number of collaborators.', context: [ @@ -29,9 +31,8 @@ export const PROMPT_PRESETS: PromptPreset[] = [ kind: 'yaml', label: 'overleaf-2023.yaml', value: overleaf2023, - origin: 'preset' - } - ] + }, + ], }, { id: 'sample-plan-diagnostics', @@ -44,8 +45,7 @@ export const PROMPT_PRESETS: PromptPreset[] = [ kind: 'yaml', label: 'two-plans-equal.yaml', value: twoPlansEqual, - origin: 'preset' - } - ] - } + }, + ], + }, ]; diff --git a/frontend/src/modules/harvey/samples/circleci-2024.yaml b/frontend/src/modules/harvey/samples/circleci-2024.yaml new file mode 100644 index 0000000..da5aad1 --- /dev/null +++ b/frontend/src/modules/harvey/samples/circleci-2024.yaml @@ -0,0 +1,504 @@ +syntaxVersion: '2.1' +saasName: CircleCI - Cloud +createdAt: '2024-07-16' +version: '2024' +billing: + monthly: 1.0 +currency: USD +url: https://web.archive.org/web/20240716021906/https://circleci.com/pricing/ +features: + network: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + storage: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + smallX86DockerVM: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + mediumX86DockerVM: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + mediumX86PlusDockerVM: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + largeX86DockerVM: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + xLargeX86DockerVM: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + 2xLargeX86DockerVM: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + 2xLargePlusX86DockerVM: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + mediumArmDockerVM: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + largeArmDockerVM: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + xLargeArmDockerVM: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + 2xLargeArmDockerVM: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + mediumLinuxVM: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + largeLinuxVM: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + xLargeLinuxVM: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + 2xLargeLinuxVM: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + 2xLargePlusLinuxVM: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + mediumArmVM: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + largeArmVM: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + xlargeArmVM: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + 2xlargeArmVM: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + mediumWindowsVM: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + largeWindowsVM: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + xLargeWindowsVM: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + 2xLargeWindowsVM: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + m1MediumMacOsVM: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + m1LargeMacOsVM: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + smallGpuNvidia: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + smallMultiGpuNvidia: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + smallGen2GpuNvidia: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + mediumGpuNvidia: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + mediumMultiGpuNvidia: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + mediumWindowsGpuNvidia: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + largeGpuNvidia: + description: "" + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + concurrentJobRuns: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + selfHostedRunners: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + dockerLayerCatching: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + ipRanges: + description: "" + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + flakyTestDetection: + description: "" + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: BOT + privateOrbs: + description: "" + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + components: + description: "" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + componentsRelease: + description: "250 credits per release" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + communitySupport: + description: "" + valueType: BOOLEAN + defaultValue: true + type: SUPPORT + ticketBasedGlobalSupport: + description: "" + valueType: BOOLEAN + defaultValue: false + type: SUPPORT + 8x5SLA: + description: "" + valueType: BOOLEAN + defaultValue: false + type: SUPPORT + 12x5SLA: + description: "" + valueType: BOOLEAN + defaultValue: false + type: SUPPORT + 24x5SLA: + description: "" + valueType: BOOLEAN + defaultValue: false + type: SUPPORT + 24x7SLA: + description: "" + valueType: BOOLEAN + defaultValue: false + type: SUPPORT +usageLimits: + maxUsers: + description: '' + valueType: NUMERIC + defaultValue: 5 + unit: user + type: NON_RENEWABLE + creditsLimit: + description: '' + valueType: NUMERIC + defaultValue: 30000 + unit: credit/month + type: RENEWABLE + networkLimit: + description: '' + valueType: NUMERIC + defaultValue: 1 + unit: GB + type: NON_RENEWABLE + linkedFeatures: + - network + storageLimit: + description: '' + valueType: NUMERIC + defaultValue: 2 + unit: GB + type: NON_RENEWABLE + linkedFeatures: + - storage + concurrentJobRunsLimitNonMacOs: + description: '' + valueType: NUMERIC + defaultValue: 30 + unit: job + type: NON_RENEWABLE + linkedFeatures: + - concurrentJobRuns + concurrentJobRunsLimitMacOs: + description: '' + valueType: NUMERIC + defaultValue: 1 + unit: job + type: NON_RENEWABLE + linkedFeatures: + - concurrentJobRuns + selfHostedRunnersLimit: + description: '' + valueType: NUMERIC + defaultValue: 5 + unit: runner + type: NON_RENEWABLE + linkedFeatures: + - selfHostedRunners + flakyTestDetectionLimit: + description: '' + valueType: NUMERIC + defaultValue: 5 + unit: test + type: NON_RENEWABLE + linkedFeatures: + - flakyTestDetection + componentsLimit: + description: '' + valueType: NUMERIC + defaultValue: 3 + unit: component/month + type: RENEWABLE + linkedFeatures: + - components +plans: + FREE: + description: "" + price: 0 + unit: /month + features: null + usageLimits: null + PERFORMANCE: + description: "" + price: 15 + unit: /month + features: + xLargeX86DockerVM: + value: true + xLargeArmDockerVM: + value: true + xLargeLinuxVM: + value: true + xlargeArmVM: + value: true + xLargeWindowsVM: + value: true + m1LargeMacOsVM: + value: true + ipRanges: + value: true + ticketBasedGlobalSupport: + value: true + usageLimits: + networkLimit: + value: 5 + storageLimit: + value: 2 + concurrentJobRunsLimitNonMacOs: + value: 80 + concurrentJobRunsLimitMacOs: + value: 15 + selfHostedRunnersLimit: + value: 20 + flakyTestDetectionLimit: + value: .inf + SCALE: + description: "" + price: "Contact us" + unit: /month + features: + xLargeX86DockerVM: + value: true + 2xLargeX86DockerVM: + value: true + 2xLargePlusX86DockerVM: + value: true + xLargeArmDockerVM: + value: true + 2xLargeArmDockerVM: + value: true + xLargeLinuxVM: + value: true + 2xLargeLinuxVM: + value: true + 2xLargePlusLinuxVM: + value: true + xlargeArmVM: + value: true + 2xlargeArmVM: + value: true + xLargeWindowsVM: + value: true + 2xLargeWindowsVM: + value: true + m1LargeMacOsVM: + value: true + smallGpuNvidia: + value: true + smallMultiGpuNvidia: + value: true + smallGen2GpuNvidia: + value: true + mediumGpuNvidia: + value: true + mediumMultiGpuNvidia: + value: true + mediumWindowsGpuNvidia: + value: true + largeGpuNvidia: + value: true + ipRanges: + value: true + ticketBasedGlobalSupport: + value: true + usageLimits: + maxUsers: + value: .inf + creditsLimit: + value: .inf + networkLimit: + value: 50 + storageLimit: + value: 200 + concurrentJobRunsLimitNonMacOs: + value: .inf + concurrentJobRunsLimitMacOs: + value: .inf + selfHostedRunnersLimit: + value: .inf + flakyTestDetectionLimit: + value: .inf +addOns: + extraUsers: + description: "" + availableFor: + - PERFORMANCE + price: 15 + unit: /month + usageLimitsExtensions: + maxUsers: + value: 1 + extraCredits: + description: "" + availableFor: + - PERFORMANCE + price: 15 + unit: /month + usageLimitsExtensions: + creditsLimit: + value: 25000 + extraComponents: + description: "" + availableFor: + - PERFORMANCE + - SCALE + price: 24 + unit: component + usageLimitsExtensions: + componentsLimit: + value: 1 + 8x5SLA: + description: "" + excludes: + - 12x5SLA + availableFor: + - PERFORMANCE + price: "Contact us" + unit: /month + features: + 8x5SLA: + value: true + 12x5SLA: + description: "" + excludes: + - 8x5SLA + availableFor: + - PERFORMANCE + price: "Contact us" + unit: /month + features: + 12x5SLA: + value: true + 24x5SLA: + description: "" + excludes: + - 24x7SLA + availableFor: + - SCALE + price: "Contact us" + unit: /month + features: + 24x5SLA: + value: true + 24x7SLA: + description: "" + excludes: + - 24x5SLA + availableFor: + - SCALE + price: "Contact us" + unit: /month + features: + 24x7SLA: + value: true diff --git a/frontend/src/modules/harvey/samples/clickup-2022.yaml b/frontend/src/modules/harvey/samples/clickup-2022.yaml new file mode 100644 index 0000000..209f29f --- /dev/null +++ b/frontend/src/modules/harvey/samples/clickup-2022.yaml @@ -0,0 +1,1458 @@ +syntaxVersion: '2.1' +saasName: ClickUp +createdAt: '2022-11-28' +version: '2022-11-28' +billing: + monthly: 1.0 +currency: USD +url: https://web.archive.org/web/20221128182756/https://clickup.com/pricing +features: + tasks: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + spaces: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + listsPerFolder: + description: 100 Lists per Space, includes Lists in Folders + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + foldersPerSpace: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + customViews: + description: '' + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + fileStorage: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + privacy: + description: Hide Folders, Lists, or tasks from other users in your Workspace + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + sharing: + description: Invite members to private items and invite guests to private or public + items + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + guests: + description: Invite guests to your Workspace + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + guestsPermissions: + description: Control what guests can see and do in your Workspace + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + customFields: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + templateEverything: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + list: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + board: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + calendar: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + box: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + gantt: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + activity: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + timeline: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + workload: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + workloadCustomCapacityAndAdditionalGroups: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + table: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + map: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + mindMaps: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + whiteboards: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + doc: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + chat: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + form: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + formBrandingAndCustomization: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + embed: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + customStatuses: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + customTasksIDs: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + superRichEditing: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + automations: + description: '' + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TASK_AUTOMATION + multipleActionsInAutomations: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TASK_AUTOMATION + portfolios: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + portfoliosPermissions: + description: '' + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + portfoliosSharing: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + futureRecurringTasksOnCalendar: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + multipleAssignees: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + multitaskToolbar: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + taskChecklists: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + dependencies: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + whiteLabeling: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + relationships: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tags: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + priorities: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + columnCalculations: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + apiCalls: + description: '' + valueType: BOOLEAN + defaultValue: true + type: INTEGRATION + integrationType: API + docTags: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + proofing: + description: 'Image & PDF Annotation: Add and assign comments directly to task + attachments such as design mockups, PDF documents, and more.' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + publiclyShare: + description: Everything View + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + inAppVideoRecording: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + emailInClickUp: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + teams: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + teamSharing: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + teamSharingForSpaces: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + guestVisibility: + description: Hide Time Tracking, Time Estimates and Tags from guests. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + naturalLanguageProcessing: + description: '' + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: BOT + smartNotifications: + description: '' + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TRACKING + assignComments: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + delegateReminders: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + privateDocs: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + cloudStorage: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tasksInMultipleLists: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + subtasksInMultipleLists: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + goals: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + goalFolders: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + dashboards: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + dashboardsWidget: + description: '' + valueType: TEXT + defaultValue: NONE + type: DOMAIN + timeTracking: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + granularTimeEstimates: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + timeInStatus: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + sprints: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + sprintPoints: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + pulseLiveOverview: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + pulseLiveOverviewHistoricalData: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + milestones: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + homeAndScheduling: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + workloadProfiles: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + everything: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + workInProgressLimits: + description: '' + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + customExporting: + description: X exports of List Views, Table View and Form View + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + criticalPathAndSlackTime: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + timeTrackingWidgets: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + timeTrackingWidgetsBillableReportsAndTimesheets: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + nativeIntegrations: + description: 50+ Native Integrations + valueType: BOOLEAN + defaultValue: true + type: INTEGRATION + integrationType: MARKETPLACE + timeTrackingNotesLabelsAndBillableTime: + description: Notes, labels & billable time + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + timeSheets: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + zapier: + description: '' + valueType: BOOLEAN + defaultValue: true + type: INTEGRATION + integrationType: WEB_SAAS + pricingUrls: + - https://zapier.com/app/planbuilder/pricing + make: + description: '' + valueType: BOOLEAN + defaultValue: true + type: INTEGRATION + integrationType: WEB_SAAS + pricingUrls: + - https://www.make.com/en/pricing + googleDrive: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: WEB_SAAS + pricingUrls: + - https://one.google.com/about/plans + dropbox: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: WEB_SAAS + pricingUrls: + - https://www.dropbox.com/plans + boxCloudStorage: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: WEB_SAAS + pricingUrls: + - https://www.box.com/pricing + oneDriveCloudStorage: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: WEB_SAAS + pricingUrls: + - https://www.microsoft.com/en-us/microsoft-365/onedrive/compare-onedrive-plans + tableauWebConnector: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: EXTENSION + twoFactorAuthentication: + description: '' + valueType: BOOLEAN + defaultValue: true + type: INTEGRATION + integrationType: EXTERNAL_DEVICE + smsTwoFactorAuthentication: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: EXTERNAL_DEVICE + requireTwoFactorAuthentication: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + googleSSO: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: IDENTITY_PROVIDER + microsoftSSO: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: IDENTITY_PROVIDER + customSamlSSO: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: IDENTITY_PROVIDER + oktaSSO: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: IDENTITY_PROVIDER + oktaSupportForCustomRoles: + description: '' + valueType: BOOLEAN + defaultValue: false + type: GUARANTEE + sessionManagement: + description: '' + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + hipaaCompliance: + description: '' + valueType: TEXT + defaultValue: None + type: GUARANTEE + contractAndLegalReview: + description: '' + valueType: TEXT + defaultValue: None + type: SUPPORT + customPermissions: + description: Change the default settings for Guests, Members & Admins + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + customRoles: + description: Create unique roles to suit your team's needs + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + restrictPublicSharing: + description: '' + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + managePrivateSpaces: + description: '' + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + restrictWhoCanAddGuests: + description: '' + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + defaultPersonalViews: + description: '' + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + addAndRemoveUsersViaAPI: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: API + anytimeSupport: + description: 24/7 Support + valueType: BOOLEAN + defaultValue: true + type: SUPPORT + liveChatSupport: + description: '' + valueType: BOOLEAN + defaultValue: false + type: SUPPORT + prioritySupport: + description: Receive an enhanced level of support to quickly resolve your highest + priority issues + valueType: BOOLEAN + defaultValue: false + type: SUPPORT + dedicatedCustomerSuccessManager: + description: Enterprise Plan customers are eligible for receiving a Dedicated + Success Manager. Conditions apply. + valueType: BOOLEAN + defaultValue: false + type: SUPPORT + onboardingTrainingWorkshop: + description: Live, virtual, workshop-style classroom training delivered by ClickUp + Experts. + valueType: BOOLEAN + defaultValue: false + type: SUPPORT + adminTrainingWebinar: + description: Get exclusive access to our weekly admin training webinar. + valueType: BOOLEAN + defaultValue: false + type: SUPPORT + accessToManagedServices: + description: Add on Admin Services or Enterprise Support for an additional fee + valueType: BOOLEAN + defaultValue: false + type: SUPPORT +usageLimits: + useUsers: + description: '' + valueType: NUMERIC + defaultValue: 1000000 + unit: user + type: NON_RENEWABLE + useTasks: + description: '' + valueType: NUMERIC + defaultValue: 1000000000000 + unit: task + type: NON_RENEWABLE + linkedFeatures: + - tasks + useSpaces: + description: '' + valueType: NUMERIC + defaultValue: 5 + unit: space + type: NON_RENEWABLE + linkedFeatures: + - spaces + useListsPerFolder: + description: X Lists per Space, includes Lists in Folders + valueType: NUMERIC + defaultValue: 100 + unit: list + type: NON_RENEWABLE + linkedFeatures: + - listsPerFolder + useFoldersPerSpace: + description: '' + valueType: NUMERIC + defaultValue: 400 + unit: folder + type: NON_RENEWABLE + linkedFeatures: + - foldersPerSpace + useCustomViews: + description: '' + valueType: NUMERIC + defaultValue: 1000000000 + unit: view + type: NON_RENEWABLE + linkedFeatures: + - customViews + useFileStorage: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: MB + type: NON_RENEWABLE + linkedFeatures: + - fileStorage + useGuests: + description: '' + valueType: NUMERIC + defaultValue: 1000000 + unit: guest + type: NON_RENEWABLE + linkedFeatures: + - guests + useGuestsPermissions: + description: '' + valueType: NUMERIC + defaultValue: 0 + unit: guest + type: NON_RENEWABLE + linkedFeatures: + - guestsPermissions + useCustomFields: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - customFields + useGantt: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - gantt + useActivity: + description: '' + valueType: NUMERIC + defaultValue: 1 + unit: day + type: NON_RENEWABLE + linkedFeatures: + - activity + useTimeline: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - timeline + useWorkload: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - workload + useMap: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - map + useMindMaps: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - mindMaps + useWhiteboards: + description: '' + valueType: NUMERIC + defaultValue: 3 + unit: whiteboard + type: NON_RENEWABLE + linkedFeatures: + - whiteboards + useChat: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - chat + useAutomations: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: automation/month + type: RENEWABLE + linkedFeatures: + - automations + usePortfolios: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - portfolios + useApiCalls: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: call/minute + type: RENEWABLE + linkedFeatures: + - apiCalls + useDocTags: + valueType: NUMERIC + defaultValue: 100 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - docTags + useEmailInClickUp: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - emailInClickUp + useEmailAccountsInClickUp: + description: The number of email accounts per Workspace + valueType: NUMERIC + defaultValue: 1 + unit: account + type: NON_RENEWABLE + linkedFeatures: + - emailInClickUp + useTeams: + description: '' + valueType: NUMERIC + defaultValue: 0 + unit: team + type: NON_RENEWABLE + linkedFeatures: + - teams + useTasksInMultipleLists: + description: '' + valueType: NUMERIC + defaultValue: 1000000000 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - tasksInMultipleLists + useSubtasksInMultipleLists: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - subtasksInMultipleLists + useGoals: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - goals + useDashboards: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - dashboards + useSprintPoints: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - sprintPoints + usePulseLiveOverview: + description: '' + valueType: NUMERIC + defaultValue: 100 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - pulseLiveOverview + useMilestones: + description: '' + valueType: NUMERIC + defaultValue: 10 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - milestones + useCustomExporting: + description: X exports of List View and X exports of Table View + valueType: NUMERIC + defaultValue: 5 + unit: export + type: NON_RENEWABLE + linkedFeatures: + - customExporting + useCriticalPathAndSlackTime: + description: '' + valueType: NUMERIC + defaultValue: 0 + unit: use + type: NON_RENEWABLE + linkedFeatures: + - criticalPathAndSlackTime + useCustomRoles: + description: '' + valueType: NUMERIC + defaultValue: 0 + unit: role + type: NON_RENEWABLE + linkedFeatures: + - customRoles +plans: + FREE: + description: Best for personal use + price: 0 + unit: member/month + features: null + usageLimits: null + UNLIMITED: + description: Best for small teams + price: 9 + unit: member/month + features: + guestsPermissions: + value: true + futureRecurringTasksOnCalendar: + value: true + columnCalculations: + value: true + teams: + value: true + guestVisibility: + value: true + delegateReminders: + value: true + privateDocs: + value: true + dashboardsWidget: + value: LIMITED + criticalPathAndSlackTime: + value: true + timeTrackingWidgets: + value: true + googleDrive: + value: true + dropbox: + value: true + boxCloudStorage: + value: true + oneDriveCloudStorage: + value: true + liveChatSupport: + value: true + usageLimits: + useSpaces: + value: 1000000 + useListsPerFolder: + value: 400 + useFileStorage: + value: 1000000000 + useGuestsPermissions: + value: 1000000 + useCustomFields: + value: 1000000000 + useGantt: + value: 1000000000 + useActivity: + value: 7 + useMap: + value: 1000000000 + useWhiteboards: + value: 10 + useChat: + value: 1000000000 + useAutomations: + value: 1000 + useEmailInClickUp: + value: 1000000000 + useTeams: + value: 1 + useDashboards: + value: 1000000000 + usePulseLiveOverview: + value: 1000000000 + useMilestones: + value: 1000000000 + useCriticalPathAndSlackTime: + value: 100 + BUSINESS: + description: Best for mid-sized teams + price: 19 + unit: member/month + features: + guestsPermissions: + value: true + box: + value: true + form: + value: true + formBrandingAndCustomization: + value: true + customTasksIDs: + value: true + multipleActionsInAutomations: + value: true + portfoliosPermissions: + value: true + futureRecurringTasksOnCalendar: + value: true + columnCalculations: + value: true + publiclyShare: + value: true + teams: + value: true + guestVisibility: + value: true + delegateReminders: + value: true + privateDocs: + value: true + goalFolders: + value: true + dashboardsWidget: + value: FULL + granularTimeEstimates: + value: true + timeInStatus: + value: true + pulseLiveOverviewHistoricalData: + value: true + workInProgressLimits: + value: true + criticalPathAndSlackTime: + value: true + timeTrackingWidgets: + value: true + timeTrackingWidgetsBillableReportsAndTimesheets: + value: true + timeTrackingNotesLabelsAndBillableTime: + value: true + timeSheets: + value: true + googleDrive: + value: true + dropbox: + value: true + boxCloudStorage: + value: true + oneDriveCloudStorage: + value: true + smsTwoFactorAuthentication: + value: true + requireTwoFactorAuthentication: + value: true + googleSSO: + value: true + liveChatSupport: + value: true + usageLimits: + useSpaces: + value: 1000000 + useListsPerFolder: + value: 400 + useFileStorage: + value: 1000000000 + useGuestsPermissions: + value: 1000000 + useCustomFields: + value: 1000000000 + useGantt: + value: 1000000000 + useActivity: + value: 1000000000 + useTimeline: + value: 1000000000 + useWorkload: + value: 1000000000 + useMap: + value: 1000000000 + useMindMaps: + value: 1000000000 + useWhiteboards: + value: 1000000000 + useChat: + value: 1000000000 + useAutomations: + value: 10000 + useEmailInClickUp: + value: 1000000000 + useEmailAccountsInClickUp: + value: 2 + useTeams: + value: 1000000000 + useSubtasksInMultipleLists: + value: 1000 + useDashboards: + value: 1000000000 + useSprintPoints: + value: 1000000000 + usePulseLiveOverview: + value: 1000000000 + useMilestones: + value: 1000000000 + useCustomExporting: + value: 1000000000 + useCriticalPathAndSlackTime: + value: 1000000000 + BUSINESS_PLUS: + description: Best for multiple teams + price: 29 + unit: member/month + features: + guestsPermissions: + value: true + box: + value: true + workloadCustomCapacityAndAdditionalGroups: + value: true + form: + value: true + formBrandingAndCustomization: + value: true + customTasksIDs: + value: true + multipleActionsInAutomations: + value: true + portfoliosPermissions: + value: true + portfoliosSharing: + value: true + futureRecurringTasksOnCalendar: + value: true + columnCalculations: + value: true + publiclyShare: + value: true + teams: + value: true + teamSharing: + value: true + guestVisibility: + value: true + delegateReminders: + value: true + privateDocs: + value: true + goalFolders: + value: true + dashboardsWidget: + value: FULL + granularTimeEstimates: + value: true + timeInStatus: + value: true + pulseLiveOverviewHistoricalData: + value: true + workInProgressLimits: + value: true + criticalPathAndSlackTime: + value: true + timeTrackingWidgets: + value: true + timeTrackingWidgetsBillableReportsAndTimesheets: + value: true + timeTrackingNotesLabelsAndBillableTime: + value: true + timeSheets: + value: true + googleDrive: + value: true + dropbox: + value: true + boxCloudStorage: + value: true + oneDriveCloudStorage: + value: true + smsTwoFactorAuthentication: + value: true + requireTwoFactorAuthentication: + value: true + googleSSO: + value: true + customPermissions: + value: true + customRoles: + value: true + restrictWhoCanAddGuests: + value: true + liveChatSupport: + value: true + prioritySupport: + value: true + adminTrainingWebinar: + value: true + usageLimits: + useSpaces: + value: 1000000 + useListsPerFolder: + value: 400 + useFileStorage: + value: 1000000000 + useGuestsPermissions: + value: 10 + useCustomFields: + value: 1000000000 + useGantt: + value: 1000000000 + useActivity: + value: 1000000000 + useTimeline: + value: 1000000000 + useWorkload: + value: 1000000000 + useMap: + value: 1000000000 + useMindMaps: + value: 1000000000 + useWhiteboards: + value: 1000000000 + useChat: + value: 1000000000 + useAutomations: + value: 25000 + useApiCalls: + value: 1000 + useDocTags: + value: 1000000000 + useEmailInClickUp: + value: 1000000000 + useEmailAccountsInClickUp: + value: 2 + useTeams: + value: 1000000000 + useSubtasksInMultipleLists: + value: 1000000000 + useDashboards: + value: 1000000000 + useSprintPoints: + value: 1000000000 + usePulseLiveOverview: + value: 1000000000 + useMilestones: + value: 1000000000 + useCustomExporting: + value: 1000000000 + useCriticalPathAndSlackTime: + value: 1000000000 + useCustomRoles: + value: 1 + ENTERPRISE: + description: Best for many large teams + price: Contact Sales + unit: member/month + features: + guestsPermissions: + value: true + box: + value: true + workloadCustomCapacityAndAdditionalGroups: + value: true + form: + value: true + formBrandingAndCustomization: + value: true + customTasksIDs: + value: true + multipleActionsInAutomations: + value: true + portfoliosPermissions: + value: true + portfoliosSharing: + value: true + futureRecurringTasksOnCalendar: + value: true + whiteLabeling: + value: true + columnCalculations: + value: true + publiclyShare: + value: true + teams: + value: true + teamSharing: + value: true + teamSharingForSpaces: + value: true + guestVisibility: + value: true + delegateReminders: + value: true + privateDocs: + value: true + goalFolders: + value: true + dashboardsWidget: + value: FULL + granularTimeEstimates: + value: true + timeInStatus: + value: true + pulseLiveOverviewHistoricalData: + value: true + workInProgressLimits: + value: true + criticalPathAndSlackTime: + value: true + timeTrackingWidgets: + value: true + timeTrackingWidgetsBillableReportsAndTimesheets: + value: true + timeTrackingNotesLabelsAndBillableTime: + value: true + timeSheets: + value: true + googleDrive: + value: true + dropbox: + value: true + boxCloudStorage: + value: true + oneDriveCloudStorage: + value: true + tableauWebConnector: + value: true + smsTwoFactorAuthentication: + value: true + requireTwoFactorAuthentication: + value: true + googleSSO: + value: true + microsoftSSO: + value: true + customSamlSSO: + value: true + oktaSSO: + value: true + oktaSupportForCustomRoles: + value: true + sessionManagement: + value: true + hipaaCompliance: + value: Contact Sales + contractAndLegalReview: + value: Contact Sales + customPermissions: + value: true + customRoles: + value: true + restrictPublicSharing: + value: true + managePrivateSpaces: + value: true + restrictWhoCanAddGuests: + value: true + defaultPersonalViews: + value: true + addAndRemoveUsersViaAPI: + value: true + liveChatSupport: + value: true + prioritySupport: + value: true + dedicatedCustomerSuccessManager: + value: true + onboardingTrainingWorkshop: + value: true + adminTrainingWebinar: + value: true + accessToManagedServices: + value: true + usageLimits: + useSpaces: + value: 1000000 + useListsPerFolder: + value: 400 + useFileStorage: + value: 1000000000 + useGuestsPermissions: + value: 10 + useCustomFields: + value: 1000000000 + useGantt: + value: 1000000000 + useActivity: + value: 1000000000 + useTimeline: + value: 1000000000 + useWorkload: + value: 1000000000 + useMap: + value: 1000000000 + useMindMaps: + value: 1000000000 + useWhiteboards: + value: 1000000000 + useChat: + value: 1000000000 + useAutomations: + value: 250000 + useApiCalls: + value: 10000 + useDocTags: + value: 1000000000 + useEmailInClickUp: + value: 1000000000 + useEmailAccountsInClickUp: + value: 2 + useTeams: + value: 1000000000 + useSubtasksInMultipleLists: + value: 1000000000 + useDashboards: + value: 1000000000 + useSprintPoints: + value: 1000000000 + usePulseLiveOverview: + value: 1000000000 + useMilestones: + value: 1000000000 + useCustomExporting: + value: 1000000000 + useCriticalPathAndSlackTime: + value: 1000000000 + useCustomRoles: + value: 1000000000 +addOns: + extraEmailAccountInClickUp: + availableFor: + - UNLIMITED + - BUSINESS + - BUSINESS_PLUS + - ENTERPRISE + price: 2 + unit: account/month + features: null + usageLimits: null + usageLimitsExtensions: + useEmailAccountsInClickUp: + value: 1 diff --git a/frontend/src/modules/harvey/samples/github-2024.yaml b/frontend/src/modules/harvey/samples/github-2024.yaml new file mode 100644 index 0000000..d9ef46a --- /dev/null +++ b/frontend/src/modules/harvey/samples/github-2024.yaml @@ -0,0 +1,996 @@ +syntaxVersion: '2.1' +saasName: Github +createdAt: '2024-06-08' +version: '2024-06-08' +billing: + monthly: 1.0 +currency: EUR +url: http://web.archive.org/web/20240608002610/https://github.com/pricing +features: + publicRepositories: + description: Host open source projects in public GitHub repositories, accessible + via web or command line. Public repositories are accessible to anyone at GitHub.com. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + privateRepositories: + description: Host code in private GitHub repositories, accessible via appliance, + web, and command line. Private repositories are only accessible to you and people + you share them with. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + githubCodespaces: + description: Spin up fully configured dev environments in the cloud with the power + of your favorite editor. A "core hour" denotes compute usage. On a 2-core machine, + you would get 60 hours free. On a 4-core machine, you would get 30 hours free, + etc. Free hours are assigned to personal accounts, rather than free organizations. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + githubActions: + description: Use execution minutes with GitHub Actions to automate your software + development workflows. Write tasks and combine them to build, test, and deploy + any code project on GitHub. Minutes are free for public repositories. + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TASK_AUTOMATION + githubPackages: + description: Host your own software packages or use them as dependencies in other + projects. Both private and public hosting available. Packages are free for public + repositories. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + codeReviews: + description: Review new code, see visual code changes, and confidently merge code + changes with automated status checks. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + pullRequests: + description: Allow contributors to easily notify you of changes they've pushed + to a repository with access limited to the contributors you specify. Easily + merge changes you accept. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + protectedBranches: + description: Enforce restrictions on how code branches are merged, including requiring + reviews by selected collaborators, or allowing only specific contributors to + work on a particular branch. + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + codeOwners: + description: Automatically request reviews or require approval by selected contributors + when changes are made to sections of code that they own. + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TRACKING + draftPullRequests: + description: Easily discuss and collaborate on pull requests before submitting + to formal review. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + multiplePullRequestsAssignees: + description: Assign more than one person to a pull request. + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + repositoryInsights: + description: See data about activity and contributions within your repositories, + including trends. You can use this data to improve collaboration and make development + faster and more effective. + valueType: BOOLEAN + defaultValue: true + type: INFORMATION + scheduledReminders: + description: Send scheduled messages to you or your team listing open pull requests. + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TASK_AUTOMATION + automaticCodeReviewAssigment: + description: Automatically assign code reviews to members of your team based on + one of two algorithms. + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TASK_AUTOMATION + enviromentProtectionRules: + description: When a workflow job references an environment, the job won't start + until all of the environment's protection rules pass. + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + enviromentDeploymentBranchesAndSecrets: + description: A job cannot access secrets that are defined in an environment unless + it is running on the specified branch. + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + collaboratorsForPublicRepositories: + description: Invite any GitHub member, or all GitHub members, to work with you + on code in a public repository you control including making changes and opening + issues. + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + collaboratorsForPrivateRepositories: + description: Invite any GitHub member, or all GitHub members, to work with you + on code in a private repository you control including making changes and opening + issues. + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + issues: + description: Track bugs, enhancements, and other requests, prioritize work, and + communicate with stakeholders as changes are proposed and merged. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + projects: + description: Visualize and manage issues and pull requests across tables, boards, + and roadmaps with custom fields and views that you can arrange to suit your + workflow. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + milestones: + description: Track progress on groups of issues or pull requests in a repository, + and map groups to overall project goals. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + teamDiscussions: + description: Discuss any topic, unattached to a specific project or issue. Control + who has access, notify discussion participants with updates, and link from anywhere. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + organizationAndTeamManagement: + description: Manage access to projects on a team-by-team, or individual user, + basis. + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + pagesAndWikis: + description: Host documentation and simple websites for your project in a wiki + format that contributors can easily edit either on the web or command line. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + multipleIssueAssignees: + description: Assign more than one person to an issue. + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + codeScanning: + description: Integrate automated security review into your pull requests with + CodeQL. Find, prioritize, and fix vulnerabilities in your repositories without + disrupting your workflow. + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TRACKING + secretScanning: + description: Detect credentials exposed in your git history, comments, or discussions. + Prevent further exposures with push protection, which proactively blocks secrets + from being pushed into your code. + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TRACKING + dependencyReview: + description: Understand the security impact of newly introduced dependencies during + pull requests, before they get merged. + valueType: BOOLEAN + defaultValue: true + type: INFORMATION + securityOverview: + description: Get a centralized view of your organization's security risks. Know + where security features have and haven’t yet been configured. + valueType: BOOLEAN + defaultValue: false + type: INFORMATION + dependabotAlerts: + description: Get notified when there are new vulnerabilities affecting dependencies + in your repositories. + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TRACKING + dependabotSecurityUpdates: + description: Keep projects secure by automatically opening pull requests that + update vulnerable dependencies to secure versions. + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TASK_AUTOMATION + dependabotVersionUpdates: + description: Keep projects up-to-date by automatically opening pull requests that + update out-of-date dependencies. + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TASK_AUTOMATION + repositoryRules: + description: Enforce branch and tag protections across repositories. Rule insights + allow you to review rule enforcement and understand its impact. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + requiredReviews: + description: Ensure that pull requests have a specific number of approving reviews + before collaborators can make changes to a protected branch. + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + requiredStatusChecks: + description: Ensure that all required CI tests are passing before collaborators + can make changes to a protected branch. + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + githubSecurityAdvisories: + description: Privately discuss, fix, and publish information about security vulnerabilities + found in your repository. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + roleBasedAccessControl: + description: Define users' level of access to your code, data and settings. + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + required2FA: + description: Use an extra layer of security with two factor authentication (2FA) + when logging into GitHub. + valueType: BOOLEAN + defaultValue: true + type: INTEGRATION + integrationType: EXTERNAL_DEVICE + auditLog: + description: Quickly review the actions performed by members of your organization. + valueType: BOOLEAN + defaultValue: true + type: INFORMATION + auditLogAPI: + description: Keep copies of audit log data to ensure secure IP and maintain compliance + for your organization. + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: API + githubConnect: + description: Share features and workflows between your GitHub Enterprise Server + instance and GitHub Enterprise Cloud. + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: EXTERNAL_DEVICE + singleSignOn: + description: Use an identity provider to manage the identities of GitHub users + and applications. + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: IDENTITY_PROVIDER + ldap: + description: Access GitHub Enterprise Server using your existing accounts and + centrally manage repository access. + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: IDENTITY_PROVIDER + ipAllowList: + description: Limit access to known allowed IP addresses. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + githubApps: + description: Install apps that integrate directly with GitHub's API to improve + development workflows – or build your own for private use or publication in + the GitHub Marketplace. + valueType: BOOLEAN + defaultValue: true + type: INTEGRATION + integrationType: MARKETPLACE + statusChecks: + description: Define tests that GitHub automatically runs against code being committed + to your repository, and get details about failures and what is causing them. + valueType: BOOLEAN + defaultValue: true + type: INFORMATION + preReceiveHooks: + description: Create requirements for automatically accepting or rejecting a push + based on the contents of the push. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TASK_AUTOMATION + communitySupport: + description: Get help with most of your GitHub questions and issues in our Community + Forum. + valueType: BOOLEAN + defaultValue: true + type: SUPPORT + standardSupport: + description: GitHub Support can help you troubleshoot issues you run into while + using GitHub. Get support via the web. + valueType: BOOLEAN + defaultValue: false + type: SUPPORT + premiumAndPremiumPlusSupport: + description: With Premium, get a 30-minute SLA on Urgent tickets and 24/7 web + and phone support via callback request. With Premium Plus, get everything in + Premium, assigned Customer Reliability Engineer and more. + valueType: BOOLEAN + defaultValue: false + type: SUPPORT + invoiceBilling: + description: Pay bills via invoice, rather than using your credit card. + valueType: TEXT + defaultValue: + - CARD + type: PAYMENT + selfHostedDeployment: + description: Self-hosted GitHub for on-prem appliances or self-managed cloud tenants. + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: EXTERNAL_DEVICE + copilotMessagesAndInteractions: + description: Chat with Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotContextAwareCodingSupport: + description: Get code suggestions from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotContextAwareCodingExplanation: + description: Get code suggestions from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotDebuggingAssistance: + description: Get debugging assistance from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotSecurityRemediationAssistance: + description: Get security remediation assistance from Copilot in your IDE and + mobile devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotConversationsTailoredToRepositories: + description: Get tailored conversations from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotAnswersBasedOnKnowledgeBase: + description: Get answers from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotAccessToKnowledgeFromTopOpenSourceRepos: + description: Get access to knowledge from top open source repositories in your + IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotPullRequestDiffAnalysis: + description: Get pull request diff analysis from Copilot in your IDE and mobile + devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotWebSearch: + description: Get web search from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotRealTimeCodeSuggestions: + description: Get real-time code suggestions from Copilot in your IDE and mobile + devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotCommentsToCode: + description: Get comments to code from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotFineTunedModels: + description: Get fine-tuned models from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotInlineChat: + description: Get inline chat from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: EXTENSION + copilotPromptSuggestions: + description: Get prompt suggestions from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotSlashCommandsAndContextVariables: + description: Get slash commands from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotCommitmessageGeneration: + description: Get commit message generation from Copilot in your IDE and mobile + devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotPullRequestDescriptionAndSummarization: + description: Get pull request description and summarization from Copilot in your + IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotIDEIntegration: + description: Get IDE integration from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: EXTENSION + copilotCLIIntegration: + description: Get IDE integration from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: EXTENSION + copilotForGithubMobile: + description: Get IDE integration from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: EXTERNAL_DEVICE + copilotForGithubWebsite: + description: Get IDE integration from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: EXTENSION + copilotPublicCodeFilter: + description: Get public code filter from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + copilotUserManagement: + description: Get user management from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + copilotDataExcludedFromTrainingByDefault: + description: Get data excluded from training by default from Copilot in your IDE + and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + copilotIpIndemnity: + description: Get IP indemnity from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + copilotContentExclusions: + description: Get content exclusions from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + copilotSSO: + description: Get SSO from Copilot in your IDE and mobile devices. + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: IDENTITY_PROVIDER + gitLFS: + description: '' + valueType: BOOLEAN + defaultValue: true + type: INTEGRATION + integrationType: EXTERNAL_DEVICE +usageLimits: + githubOnlyForPublicRepositoriesFreeTier: + description: Free tier usage limit for public repositories + valueType: BOOLEAN + defaultValue: false + type: NON_RENEWABLE + linkedFeatures: + - protectedBranches + - codeOwners + - draftPullRequests + - multiplePullRequestsAssignees + - repositoryInsights + - scheduledReminders + - automaticCodeReviewAssigment + - enviromentProtectionRules + - enviromentDeploymentBranchesAndSecrets + - pagesAndWikis + - multipleIssueAssignees + - codeScanning + - secretScanning + - dependencyReview + - requiredReviews + - requiredStatusChecks + - githubSecurityAdvisories + githubOnlyForPublicRepositoriesTeamTier: + description: Team tear usage limit for public repositories + valueType: BOOLEAN + defaultValue: true + type: NON_RENEWABLE + linkedFeatures: + - enviromentProtectionRules + - codeScanning + - secretScanning + - dependencyReview + - githubSecurityAdvisories + githubActionsQuota: + description: '' + valueType: NUMERIC + defaultValue: 2000 + unit: minute/month + type: TIME_DRIVEN + linkedFeatures: + - githubActions + diskSpaceForGithubPackages: + description: '' + valueType: NUMERIC + defaultValue: 0.5 + unit: GB + type: NON_RENEWABLE + linkedFeatures: + - githubPackages + githubCodepacesStorage: + description: Free storage included in personal accounts like Free and Pro + valueType: NUMERIC + defaultValue: 15 + unit: GB/month + type: RENEWABLE + linkedFeatures: + - githubCodespaces + githubCodepacesCoreHours: + description: Free storage included in personal accounts like Free and Pro + valueType: NUMERIC + defaultValue: 120 + unit: coreHours/month + type: RENEWABLE + linkedFeatures: + - githubCodespaces + gitLFSMaximunFileSize: + description: '' + valueType: NUMERIC + defaultValue: 2 + unit: GB + type: NON_RENEWABLE + linkedFeatures: + - gitLFS + gitLFSStorageLimit: + description: '' + valueType: NUMERIC + defaultValue: 1 + unit: GB + type: NON_RENEWABLE + linkedFeatures: + - gitLFS + gitLFSBandwithLimit: + description: '' + valueType: NUMERIC + defaultValue: 1 + unit: GB + type: NON_RENEWABLE + linkedFeatures: + - gitLFS +plans: + FREE: + description: The basics for individuals and organizations + price: 0 + unit: user/month + features: null + usageLimits: + githubOnlyForPublicRepositoriesFreeTier: + value: true + TEAM: + description: Advanced collaboration for individuals and organizations + price: 4 + unit: user/month + features: + standardSupport: + value: true + usageLimits: + githubOnlyForPublicRepositoriesTeamTier: + value: true + githubActionsQuota: + value: 3000 + diskSpaceForGithubPackages: + value: 2 + githubCodepacesStorage: + value: 20 + githubCodepacesCoreHours: + value: 180 + gitLFSMaximunFileSize: + value: 4 + ENTERPRISE: + description: Security, compliance, and flexible deployment + price: 21 + unit: user/month + features: + securityOverview: + value: true + repositoryRules: + value: true + auditLogAPI: + value: true + githubConnect: + value: true + singleSignOn: + value: true + ldap: + value: true + standardSupport: + value: true + invoiceBilling: + value: + - CARD + - INVOICE + usageLimits: + githubOnlyForPublicRepositoriesTeamTier: + value: true + githubActionsQuota: + value: 50000 + diskSpaceForGithubPackages: + value: 50 + gitLFSMaximunFileSize: + value: 5 +addOns: + githubCopilotIndividuals: + availableFor: + - FREE + - TEAM + excludes: + - githubCopilotBusiness + - githubCopilotEnterprise + price: 10 + unit: user/month + features: + copilotMessagesAndInteractions: + value: true + copilotContextAwareCodingSupport: + value: true + copilotContextAwareCodingExplanation: + value: true + copilotDebuggingAssistance: + value: true + copilotSecurityRemediationAssistance: + value: true + copilotRealTimeCodeSuggestions: + value: true + copilotCommentsToCode: + value: true + copilotInlineChat: + value: true + copilotPromptSuggestions: + value: true + copilotSlashCommandsAndContextVariables: + value: true + copilotCommitmessageGeneration: + value: true + copilotIDEIntegration: + value: true + copilotCLIIntegration: + value: true + copilotForGithubMobile: + value: true + copilotPublicCodeFilter: + value: true + usageLimits: null + usageLimitsExtensions: null + githubCopilotBusiness: + availableFor: + - TEAM + - ENTERPRISE + excludes: + - githubCopilotIndividuals + - githubCopilotEnterprise + price: 19 + unit: user/month + features: + copilotMessagesAndInteractions: + value: true + copilotContextAwareCodingSupport: + value: true + copilotContextAwareCodingExplanation: + value: true + copilotDebuggingAssistance: + value: true + copilotSecurityRemediationAssistance: + value: true + copilotRealTimeCodeSuggestions: + value: true + copilotCommentsToCode: + value: true + copilotInlineChat: + value: true + copilotPromptSuggestions: + value: true + copilotSlashCommandsAndContextVariables: + value: true + copilotCommitmessageGeneration: + value: true + copilotIDEIntegration: + value: true + copilotCLIIntegration: + value: true + copilotForGithubMobile: + value: true + copilotPublicCodeFilter: + value: true + copilotUserManagement: + value: true + copilotDataExcludedFromTrainingByDefault: + value: true + copilotIpIndemnity: + value: true + copilotContentExclusions: + value: true + copilotSSO: + value: true + usageLimits: null + usageLimitsExtensions: null + githubCopilotEnterprise: + availableFor: + - ENTERPRISE + excludes: + - githubCopilotIndividuals + - githubCopilotBusiness + price: 39 + unit: user/month + features: + copilotMessagesAndInteractions: + value: true + copilotContextAwareCodingSupport: + value: true + copilotContextAwareCodingExplanation: + value: true + copilotDebuggingAssistance: + value: true + copilotSecurityRemediationAssistance: + value: true + copilotConversationsTailoredToRepositories: + value: true + copilotAnswersBasedOnKnowledgeBase: + value: true + copilotAccessToKnowledgeFromTopOpenSourceRepos: + value: true + copilotPullRequestDiffAnalysis: + value: true + copilotWebSearch: + value: true + copilotRealTimeCodeSuggestions: + value: true + copilotCommentsToCode: + value: true + copilotFineTunedModels: + value: true + copilotInlineChat: + value: true + copilotPromptSuggestions: + value: true + copilotSlashCommandsAndContextVariables: + value: true + copilotCommitmessageGeneration: + value: true + copilotPullRequestDescriptionAndSummarization: + value: true + copilotIDEIntegration: + value: true + copilotCLIIntegration: + value: true + copilotForGithubMobile: + value: true + copilotForGithubWebsite: + value: true + copilotPublicCodeFilter: + value: true + copilotUserManagement: + value: true + copilotDataExcludedFromTrainingByDefault: + value: true + copilotIpIndemnity: + value: true + copilotContentExclusions: + value: true + copilotSSO: + value: true + usageLimits: null + usageLimitsExtensions: null + githubCodespaces2Core: + availableFor: + - FREE + - TEAM + - ENTERPRISE + excludes: + - githubCodespaces4Core + - githubCodespaces8Core + - githubCodespaces16Core + - githubCodespaces32Core + price: 0.18 + unit: activeHour + features: + githubCodespaces: + value: true + usageLimits: null + usageLimitsExtensions: null + githubCodespaces4Core: + availableFor: + - FREE + - TEAM + - ENTERPRISE + excludes: + - githubCodespaces2Core + - githubCodespaces8Core + - githubCodespaces16Core + - githubCodespaces32Core + price: 0.36 + unit: activeHour + features: + githubCodespaces: + value: true + usageLimits: null + usageLimitsExtensions: null + githubCodespaces8Core: + availableFor: + - FREE + - TEAM + - ENTERPRISE + excludes: + - githubCodespaces2Core + - githubCodespaces4Core + - githubCodespaces16Core + - githubCodespaces32Core + price: 0.72 + unit: activeHour + features: + githubCodespaces: + value: true + usageLimits: null + usageLimitsExtensions: null + githubCodespaces16Core: + availableFor: + - FREE + - TEAM + - ENTERPRISE + excludes: + - githubCodespaces2Core + - githubCodespaces4Core + - githubCodespaces8Core + - githubCodespaces32Core + price: 1.44 + unit: activeHour + features: + githubCodespaces: + value: true + usageLimits: null + usageLimitsExtensions: null + githubCodespaces32Core: + availableFor: + - FREE + - TEAM + - ENTERPRISE + excludes: + - githubCodespaces2Core + - githubCodespaces4Core + - githubCodespaces8Core + - githubCodespaces16Core + price: 2.88 + unit: activeHour + features: + githubCodespaces: + value: true + usageLimits: null + usageLimitsExtensions: null + githubCodespacesStorage: + availableFor: + - FREE + - TEAM + - ENTERPRISE + price: 0.07 + unit: GB/month + features: null + usageLimits: null + usageLimitsExtensions: + githubCodepacesStorage: + value: 1 + gitLFSDataPack: + availableFor: + - FREE + - TEAM + - ENTERPRISE + price: 5 + unit: user/month + features: null + usageLimits: null + usageLimitsExtensions: + gitLFSStorageLimit: + value: 50 + gitLFSBandwithLimit: + value: 50 + githubAdvancedSecurity: + availableFor: + - ENTERPRISE + price: 49 + unit: activeCommiter/month + features: + codeScanning: + value: true + secretScanning: + value: true + dependencyReview: + value: true + usageLimits: null + usageLimitsExtensions: null + premiumSupport: + availableFor: + - ENTERPRISE + price: Contact Sales + unit: user/month + features: + premiumAndPremiumPlusSupport: + value: true + usageLimits: null + usageLimitsExtensions: null + enterpriseServer: + availableFor: + - ENTERPRISE + price: Contact Sales + unit: user/month + features: + preReceiveHooks: + value: true + selfHostedDeployment: + value: true + usageLimits: null + usageLimitsExtensions: null + enterpriseCloud: + availableFor: + - ENTERPRISE + price: Contact Sales + unit: user/month + features: + githubSecurityAdvisories: + value: true + ipAllowList: + value: true + usageLimits: null + usageLimitsExtensions: null diff --git a/frontend/src/modules/harvey/samples/protonmail-2026.yaml b/frontend/src/modules/harvey/samples/protonmail-2026.yaml new file mode 100644 index 0000000..94a47c0 --- /dev/null +++ b/frontend/src/modules/harvey/samples/protonmail-2026.yaml @@ -0,0 +1,405 @@ +syntaxVersion: "3.0" +saasName: Proton Mail +createdAt: 2026-02-11 +version: "2026-02-11" +currency: EUR +url: https://web.archive.org/web/20260211182642/https://proton.me/mail/pricing +tags: + - Proton Mail + - Proton Calendar + - Proton Drive + - Proton VPN + - Proton Pass + - Proton Wallet +features: + storage: + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + priorityCustomerSupport: + valueType: BOOLEAN + defaultValue: false + type: SUPPORT + easySwitchImportAssistant: + description: Quickly transfer your emails, calendars or contacts from any provider. + valueType: BOOLEAN + defaultValue: true + type: INTEGRATION + integrationType: WEB_SAAS + pricingUrls: + - https://mail.google.com + protonSentinelProgram: + description: Provides the highest level of account security protection and specialist support. + valueType: BOOLEAN + defaultValue: false + type: SUPPORT + emergencyAccess: + description: Grant permission to trusted contacts to securely access your + Proton account in an emergency, after a set period of time. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + darkWebMonitoring: + description: Dark Web Monitoring scans hidden parts of the internet for Proton Mail email addresses that have ended up in illegal data markets. If our system detects a breach, you'll + receive a Security Center alert along with actions you can take to mitigate the risk. + valueType: BOOLEAN + defaultValue: false + type: GUARANTEE + emailAdresses: + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Proton Mail + customEmailDomains: + description: Use your own custom email domain addresses, e.g., you@yourname.com + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Proton Mail + messages: + description: Bulk promotional or programmatic email sending is currently not supported. + We recommend using a dedicated email service provider for this use case. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Proton Mail + folders: + description: Keep your inbox organized with folders. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Proton Mail + labels: + description: Labels are simple tags you can add to messages to make them easier to find or to apply filters to. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Proton Mail + customFilters: + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Proton Mail + attachments: + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Proton Mail + short@pm.meAddress: + description: Activate an extra and free email alias yourname@pm.me, easy to remember and share. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Proton Mail + contactGroups: + description: Send emails to large groups quickly and easily by creating as many contact groups as you need (up to 100 contacts per group). + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Proton Mail + emailClientSupport: + description: Proton Mail supports desktop clients such as Outlook, Apple Mail, Thunderbird, etc. via Proton Mail Bridge. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Proton Mail + autoReply: + description: Allows you to set up automatic responses (auto-reply) for your incoming messages. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Proton Mail + catchAllEmail: + description: Ensures you receive all emails sent to your domain, even if the email address doesn't exist, no longer exists, or has a typo. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Proton Mail + automaticForwarding: + description: Automatically forward emails from Proton Mail to any other account. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Proton Mail + autoDeleteSpamAndTrash: + description: Automatically clear out messages older than 30 days from Trash and Spam. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Proton Mail + scheduleAndSnoozeEmails: + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Proton Mail + protonScribeWritingAssistant: + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Proton Mail + desktopApp: + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: EXTERNAL_DEVICE + tag: Proton Mail + htmlSignatures: + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Proton Mail + endToEndEncryption: + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Proton Mail + passwordProtectedEmails: + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Proton Mail + encryptedContactDetails: + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Proton Mail + hideMyEmailAliases: + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Proton Mail +usageLimits: + storageLimit: + description: Storage space is shared across Proton Mail, Proton Calendar, and Proton Drive. + valueType: NUMERIC + defaultValue: 1 + unit: GB + type: NON_RENEWABLE + trackable: true + linkedFeatures: + - storage + usersLimit: + valueType: NUMERIC + defaultValue: 1 + unit: user + type: NON_RENEWABLE + trackable: true + emailAdressesLimit: + valueType: NUMERIC + defaultValue: 1 + unit: email + type: NON_RENEWABLE + trackable: true + linkedFeatures: + - emailAdresses + customEmailDomainsLimit: + valueType: NUMERIC + defaultValue: 0 + unit: domain + type: NON_RENEWABLE + trackable: true + linkedFeatures: + - customEmailDomains + messagesLimit: + valueType: NUMERIC + defaultValue: 150 + unit: message + type: RENEWABLE + period: + value: 1 + unit: DAY + linkedFeatures: + - messages + foldersLimit: + valueType: NUMERIC + defaultValue: 3 + unit: folder + type: NON_RENEWABLE + trackable: true + linkedFeatures: + - folders + labelsLimit: + valueType: NUMERIC + defaultValue: 3 + unit: label + type: NON_RENEWABLE + trackable: true + linkedFeatures: + - labels + customFiltersLimit: + valueType: NUMERIC + defaultValue: 1 + unit: filter + type: NON_RENEWABLE + trackable: true + linkedFeatures: + - customFilters + attachmentsLimit: + valueType: NUMERIC + defaultValue: 25 + unit: MB + type: NON_RENEWABLE + trackable: false + linkedFeatures: + - attachments + hideMyEmailAliasesLimit: + valueType: NUMERIC + defaultValue: 10 + unit: email + type: NON_RENEWABLE + trackable: true + linkedFeatures: + - hideMyEmailAliases +plans: + PROTON_FREE: + price: 0 + unit: user/month + features: null + usageLimits: null + MAIL_PLUS: + price: 4.99 + unit: user/month + features: + priorityCustomerSupport: + value: true + emergencyAccess: + value: true + darkWebMonitoring: + value: true + customEmailDomains: + value: true + desktopApp: + value: true + short@pm.meAddress: + value: true + contactGroups: + value: true + emailClientSupport: + value: true + autoReply: + value: true + catchAllEmail: + value: true + automaticForwarding: + value: true + autoDeleteSpamAndTrash: + value: true + scheduleAndSnoozeEmails: + value: true + usageLimits: + storageLimit: + value: 15 + emailAdressesLimit: + value: 10 + customEmailDomainsLimit: + value: 1 + messagesLimit: + value: .inf + foldersLimit: + value: .inf + labelsLimit: + value: .inf + customFiltersLimit: + value: .inf + PROTON_UNLIMITED: + price: 9.99 + unit: user/month + features: + priorityCustomerSupport: + value: true + protonSentinelProgram: + value: true + emergencyAccess: + value: true + darkWebMonitoring: + value: true + desktopApp: + value: true + customEmailDomains: + value: true + short@pm.meAddress: + value: true + contactGroups: + value: true + emailClientSupport: + value: true + autoReply: + value: true + catchAllEmail: + value: true + automaticForwarding: + value: true + autoDeleteSpamAndTrash: + value: true + scheduleAndSnoozeEmails: + value: true + usageLimits: + storageLimit: + value: 500 + emailAdressesLimit: + value: 15 + customEmailDomainsLimit: + value: 3 + messagesLimit: + value: .inf + foldersLimit: + value: .inf + labelsLimit: + value: .inf + customFiltersLimit: + value: .inf + hideMyEmailAliasesLimit: + value: .inf + PROTON_DUO: + price: 19.99 + unit: user/month + features: + priorityCustomerSupport: + value: true + protonSentinelProgram: + value: true + emergencyAccess: + value: true + darkWebMonitoring: + value: true + desktopApp: + value: true + customEmailDomains: + value: true + short@pm.meAddress: + value: true + contactGroups: + value: true + emailClientSupport: + value: true + autoReply: + value: true + catchAllEmail: + value: true + automaticForwarding: + value: true + autoDeleteSpamAndTrash: + value: true + scheduleAndSnoozeEmails: + value: true + protonScribeWritingAssistant: + value: true + usageLimits: + storageLimit: + value: 2000 + usersLimit: + value: 2 + emailAdressesLimit: + value: 30 + customEmailDomainsLimit: + value: 3 + messagesLimit: + value: .inf + foldersLimit: + value: .inf + labelsLimit: + value: .inf + customFiltersLimit: + value: .inf + hideMyEmailAliasesLimit: + value: .inf \ No newline at end of file diff --git a/frontend/src/modules/harvey/samples/tableau-2021.yaml b/frontend/src/modules/harvey/samples/tableau-2021.yaml new file mode 100644 index 0000000..0f907d6 --- /dev/null +++ b/frontend/src/modules/harvey/samples/tableau-2021.yaml @@ -0,0 +1,399 @@ +syntaxVersion: '2.1' +saasName: Tableau +createdAt: '2021-11-29' +version: '2021-11-29' +billing: + monthly: 1.0 +currency: USD +url: http://web.archive.org/web/20211129003551/https://www.tableau.com/pricing/teams-orgs +features: + manageUserPermissions: + description: Manage site roles, content ownership, and user permissions. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + curateDataSources: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + shareDataSources: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + manageContent: + description: Manage projects and workbooks. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + certifyDataSources: + description: Manage data sources certification + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + authorFromCuratedData: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + viewLineageAndImpact: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + setDataQualityWarnings: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + advancedServerDeploymentMonitoring: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TRACKING + programmaticContentMigration: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: API + interactWithVisualizations: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + interactWithDashboards: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + createCustomViews: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + shareCustomViews: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + downloadVisualizationAsImages: + description: Download a snapshot of a visualization or dashboard as either a .pdf + or .png file. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + downloadSummaryData: + description: Download only the aggregate data used by the visualization or dashboard. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + downloadFullData: + description: Download the full data set associated with the visualization or dashboard. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + seeDataQualityWarnings: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + consumePredictiveModels: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + commentOnDashboard: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + commentOnVisualization: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + createASubscriptionForYourself: + description: '' + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TRACKING + receiveDataDrivenAlerts: + description: '' + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TRACKING + createSubscriptionsForOthers: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TRACKING + createDataDrivenAlerts: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TRACKING + editExistingWorkbooks: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + editExistingVisualizations: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + createAndPublishNewWorkbookFromExistingDataSource: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + askData: + description: Explore an existing data source published to Tableau Server or Tableau + Online with Ask Data. + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: BOT + createAndPublishNewWorkbookFromNewDataSources: + description: Create and share content by connecting to a new data source, including + raw data. You're not restricted to existing, published data sources. + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: MARKETPLACE + createAndPublishNewDataSources: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + createNewWorkbooksBasedOnPreBuiltDashboardStarters: + description: Dashboard Starters allow you to connect prebuilt dashboards to common + enterprise applications. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + createNewDataFlows: + description: Combine, shape and clean data, and save the process as a data flow. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + editDataFlow: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + exportData: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + publishFlows: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + runFlows: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + scheduleFlows: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TASK_AUTOMATION + monitorFlowPerformance: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INFORMATION + monitorFlowHealth: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INFORMATION +usageLimits: + flowsLimit: + description: The maximum number of flows that can be created and run by a user. + valueType: NUMERIC + defaultValue: 0 + unit: flow + type: NON_RENEWABLE + linkedFeatures: + - runFlows +plans: + VIEWER: + description: View and interact with dashboards and visualizations in a secure, + easy-to-use platform. + price: 12 + unit: user/month + features: null + usageLimits: null + EXPLORER: + description: Explore trusted data and answer your own questions faster with full + self-service analytics. + price: 35 + unit: user/month + features: + manageUserPermissions: + value: true + manageContent: + value: true + certifyDataSources: + value: true + authorFromCuratedData: + value: true + downloadFullData: + value: true + createSubscriptionsForOthers: + value: true + createDataDrivenAlerts: + value: true + editExistingWorkbooks: + value: true + editExistingVisualizations: + value: true + createAndPublishNewWorkbookFromExistingDataSource: + value: true + usageLimits: null + CREATOR: + description: Discover insights with a powerful suite of products that support + your end-to-end analytics workflow. + price: 70 + unit: user/month + features: + manageUserPermissions: + value: true + curateDataSources: + value: true + shareDataSources: + value: true + manageContent: + value: true + certifyDataSources: + value: true + authorFromCuratedData: + value: true + downloadFullData: + value: true + createSubscriptionsForOthers: + value: true + createDataDrivenAlerts: + value: true + editExistingWorkbooks: + value: true + editExistingVisualizations: + value: true + createAndPublishNewWorkbookFromExistingDataSource: + value: true + createAndPublishNewWorkbookFromNewDataSources: + value: true + createAndPublishNewDataSources: + value: true + createNewWorkbooksBasedOnPreBuiltDashboardStarters: + value: true + createNewDataFlows: + value: true + editDataFlow: + value: true + exportData: + value: true + usageLimits: null +addOns: + dataManagementViewer: + availableFor: + - VIEWER + price: Contact Sales + unit: user/month + features: + viewLineageAndImpact: + value: true + seeDataQualityWarnings: + value: true + usageLimits: null + usageLimitsExtensions: null + dataManagementExplorer: + availableFor: + - EXPLORER + price: Contact Sales + unit: user/month + features: + viewLineageAndImpact: + value: true + setDataQualityWarnings: + value: true + seeDataQualityWarnings: + value: true + scheduleFlows: + value: true + usageLimits: null + usageLimitsExtensions: null + dataManagementCreator: + availableFor: + - CREATOR + price: Contact Sales + unit: user/month + features: + viewLineageAndImpact: + value: true + setDataQualityWarnings: + value: true + seeDataQualityWarnings: + value: true + publishFlows: + value: true + runFlows: + value: true + scheduleFlows: + value: true + monitorFlowPerformance: + value: true + monitorFlowHealth: + value: true + usageLimits: + flowsLimit: + value: 1 + usageLimitsExtensions: null + resourceBlocks: + availableFor: + - CREATOR + price: 250 + unit: block/month + features: null + usageLimits: null + usageLimitsExtensions: + flowsLimit: + value: 1 + serverManagement: + availableFor: + - CREATOR + price: Contact Sales + unit: user/month + features: + advancedServerDeploymentMonitoring: + value: true + programmaticContentMigration: + value: true + usageLimits: null + usageLimitsExtensions: null + einsteinDiscovery: + availableFor: + - VIEWER + - EXPLORER + - CREATOR + price: Contact Sales + unit: user/month + features: + consumePredictiveModels: + value: true + usageLimits: null + usageLimitsExtensions: null diff --git a/frontend/src/modules/harvey/samples/tableau-2022.yaml b/frontend/src/modules/harvey/samples/tableau-2022.yaml new file mode 100644 index 0000000..f7aba17 --- /dev/null +++ b/frontend/src/modules/harvey/samples/tableau-2022.yaml @@ -0,0 +1,397 @@ +syntaxVersion: '2.1' +saasName: Tableau +createdAt: '2022-11-30' +version: '2022-11-30' +billing: + monthly: 1.0 +currency: USD +url: http://web.archive.org/web/20221130132704/https://www.tableau.com/pricing/teams-orgs +features: + manageUserPermissions: + description: Manage site roles, content ownership, and user permissions. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + curateDataSources: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + shareDataSources: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + manageContent: + description: Manage projects and workbooks. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + certifyDataSources: + description: Manage data sources certification + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + authorFromCuratedData: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + viewLineageAndImpact: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + setDataQualityWarnings: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + advancedServerDeploymentMonitoring: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TRACKING + programmaticContentMigration: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: API + interactWithVisualizations: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + interactWithDashboards: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + createCustomViews: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + shareCustomViews: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + downloadVisualizationAsImages: + description: Download a snapshot of a visualization or dashboard as either a .pdf + or .png file. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + downloadSummaryData: + description: Download only the aggregate data used by the visualization or dashboard. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + downloadFullData: + description: Download the full data set associated with the visualization or dashboard. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + seeDataQualityWarnings: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + consumePredictiveModels: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + commentOnDashboard: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + commentOnVisualization: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + createASubscriptionForYourself: + description: '' + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TRACKING + receiveDataDrivenAlerts: + description: '' + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TRACKING + createSubscriptionsForOthers: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TRACKING + createDataDrivenAlerts: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TRACKING + editExistingWorkbooks: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + editExistingVisualizations: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + createAndPublishNewWorkbookFromExistingDataSource: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + askData: + description: Explore an existing data source published to Tableau Server or Tableau + Online with Ask Data. + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: BOT + createAndPublishNewWorkbookFromNewDataSources: + description: Create and share content by connecting to a new data source, including + raw data. You're not restricted to existing, published data sources. + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: MARKETPLACE + createAndPublishNewDataSources: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + createNewWorkbooksBasedOnPreBuiltDashboardStarters: + description: Dashboard Starters allow you to connect prebuilt dashboards to common + enterprise applications. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + createNewDataFlows: + description: Combine, shape and clean data, and save the process as a data flow. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + editDataFlow: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + exportData: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + publishFlows: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + runFlows: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + scheduleFlows: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TASK_AUTOMATION + monitorFlowPerformance: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INFORMATION + monitorFlowHealth: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INFORMATION +usageLimits: + flowsLimit: + description: The maximum number of flows that can be created and run by a user. + valueType: NUMERIC + defaultValue: 0 + unit: flow + type: NON_RENEWABLE + linkedFeatures: + - runFlows +plans: + VIEWER: + description: View and interact with dashboards and visualizations in a secure, + easy-to-use platform. + price: 15 + unit: user/month + features: null + usageLimits: null + EXPLORER: + description: Explore trusted data and answer your own questions faster with full + self-service analytics. + price: 42 + unit: user/month + features: + manageUserPermissions: + value: true + manageContent: + value: true + certifyDataSources: + value: true + authorFromCuratedData: + value: true + createCustomViews: + value: true + shareCustomViews: + value: true + downloadFullData: + value: true + createSubscriptionsForOthers: + value: true + createDataDrivenAlerts: + value: true + editExistingWorkbooks: + value: true + editExistingVisualizations: + value: true + createAndPublishNewWorkbookFromExistingDataSource: + value: true + usageLimits: null + CREATOR: + description: Discover insights with a powerful suite of products that support + your end-to-end analytics workflow. + price: 70 + unit: user/month + features: + manageUserPermissions: + value: true + curateDataSources: + value: true + shareDataSources: + value: true + manageContent: + value: true + certifyDataSources: + value: true + authorFromCuratedData: + value: true + createCustomViews: + value: true + shareCustomViews: + value: true + downloadFullData: + value: true + createSubscriptionsForOthers: + value: true + createDataDrivenAlerts: + value: true + editExistingWorkbooks: + value: true + editExistingVisualizations: + value: true + createAndPublishNewWorkbookFromExistingDataSource: + value: true + createAndPublishNewWorkbookFromNewDataSources: + value: true + createAndPublishNewDataSources: + value: true + createNewWorkbooksBasedOnPreBuiltDashboardStarters: + value: true + createNewDataFlows: + value: true + editDataFlow: + value: true + exportData: + value: true + usageLimits: null +addOns: + dataManagementViewer: + availableFor: + - VIEWER + price: Contact Sales + unit: user/month + features: + viewLineageAndImpact: + value: true + seeDataQualityWarnings: + value: true + usageLimits: null + usageLimitsExtensions: null + dataManagementExplorer: + availableFor: + - EXPLORER + price: Contact Sales + unit: user/month + features: + viewLineageAndImpact: + value: true + setDataQualityWarnings: + value: true + seeDataQualityWarnings: + value: true + scheduleFlows: + value: true + usageLimits: null + usageLimitsExtensions: null + dataManagementCreator: + availableFor: + - CREATOR + price: Contact Sales + unit: user/month + features: + viewLineageAndImpact: + value: true + setDataQualityWarnings: + value: true + seeDataQualityWarnings: + value: true + publishFlows: + value: true + runFlows: + value: true + scheduleFlows: + value: true + monitorFlowPerformance: + value: true + monitorFlowHealth: + value: true + usageLimits: + flowsLimit: + value: 1 + usageLimitsExtensions: null + advancedManagement: + availableFor: + - CREATOR + price: Contact Sales + unit: user/month + features: + advancedServerDeploymentMonitoring: + value: true + programmaticContentMigration: + value: true + usageLimits: null + usageLimitsExtensions: null + einsteinDiscovery: + availableFor: + - VIEWER + - EXPLORER + - CREATOR + price: Contact Sales + unit: user/month + features: + consumePredictiveModels: + value: true + usageLimits: null + usageLimitsExtensions: null diff --git a/frontend/src/modules/harvey/samples/tableau-2023.yaml b/frontend/src/modules/harvey/samples/tableau-2023.yaml new file mode 100644 index 0000000..7f14fb8 --- /dev/null +++ b/frontend/src/modules/harvey/samples/tableau-2023.yaml @@ -0,0 +1,397 @@ +syntaxVersion: '2.1' +saasName: Tableau +createdAt: '2023-11-29' +version: '2023-11-29' +billing: + monthly: 1.0 +currency: USD +url: http://web.archive.org/web/20231129054953/https://www.tableau.com/pricing/teams-orgs +features: + manageUserPermissions: + description: Manage site roles, content ownership, and user permissions. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + curateDataSources: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + shareDataSources: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + manageContent: + description: Manage projects and workbooks. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + certifyDataSources: + description: Manage data sources certification + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + authorFromCuratedData: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + viewLineageAndImpact: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + setDataQualityWarnings: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + advancedDeploymentMonitoring: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TRACKING + programmaticContentMigration: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: API + interactWithVisualizations: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + interactWithDashboards: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + createCustomViews: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + shareCustomViews: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + downloadVisualizationAsImages: + description: Download a snapshot of a visualization or dashboard as either a .pdf + or .png file. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + downloadSummaryData: + description: Download only the aggregate data used by the visualization or dashboard. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + downloadFullData: + description: Download the full data set associated with the visualization or dashboard. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + seeDataQualityWarnings: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + consumePredictiveModels: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + commentOnDashboard: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + commentOnVisualization: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + createASubscriptionForYourself: + description: '' + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TRACKING + receiveDataDrivenAlerts: + description: '' + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TRACKING + createSubscriptionsForOthers: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TRACKING + createDataDrivenAlerts: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TRACKING + editExistingWorkbooks: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + editExistingVisualizations: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + createAndPublishNewWorkbookFromExistingDataSource: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + askData: + description: Explore an existing data source published to Tableau Server or Tableau + Online with Ask Data. + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: BOT + createAndPublishNewWorkbookFromNewDataSources: + description: Create and share content by connecting to a new data source, including + raw data. You're not restricted to existing, published data sources. + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: MARKETPLACE + createAndPublishNewDataSources: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + createNewWorkbooksBasedOnPreBuiltDashboardStarters: + description: Dashboard Starters allow you to connect prebuilt dashboards to common + enterprise applications. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + createNewDataFlows: + description: Combine, shape and clean data, and save the process as a data flow. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + editDataFlow: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + exportData: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + publishFlows: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + runFlows: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + scheduleFlows: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TASK_AUTOMATION + monitorFlowPerformance: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INFORMATION + monitorFlowHealth: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INFORMATION +usageLimits: + flowsLimit: + description: The maximum number of flows that can be created and run by a user. + valueType: NUMERIC + defaultValue: 0 + unit: flow + type: NON_RENEWABLE + linkedFeatures: + - runFlows +plans: + VIEWER: + description: View and interact with dashboards and visualizations in a secure, + easy-to-use platform. + price: 15 + unit: user/month + features: null + usageLimits: null + EXPLORER: + description: Explore trusted data and answer your own questions faster with full + self-service analytics. + price: 42 + unit: user/month + features: + manageUserPermissions: + value: true + manageContent: + value: true + certifyDataSources: + value: true + authorFromCuratedData: + value: true + createCustomViews: + value: true + shareCustomViews: + value: true + downloadFullData: + value: true + createSubscriptionsForOthers: + value: true + createDataDrivenAlerts: + value: true + editExistingWorkbooks: + value: true + editExistingVisualizations: + value: true + createAndPublishNewWorkbookFromExistingDataSource: + value: true + usageLimits: null + CREATOR: + description: Discover insights with a powerful suite of products that support + your end-to-end analytics workflow. + price: 75 + unit: user/month + features: + manageUserPermissions: + value: true + curateDataSources: + value: true + shareDataSources: + value: true + manageContent: + value: true + certifyDataSources: + value: true + authorFromCuratedData: + value: true + createCustomViews: + value: true + shareCustomViews: + value: true + downloadFullData: + value: true + createSubscriptionsForOthers: + value: true + createDataDrivenAlerts: + value: true + editExistingWorkbooks: + value: true + editExistingVisualizations: + value: true + createAndPublishNewWorkbookFromExistingDataSource: + value: true + createAndPublishNewWorkbookFromNewDataSources: + value: true + createAndPublishNewDataSources: + value: true + createNewWorkbooksBasedOnPreBuiltDashboardStarters: + value: true + createNewDataFlows: + value: true + editDataFlow: + value: true + exportData: + value: true + publishFlows: + value: true + runFlows: + value: true + usageLimits: + flowsLimit: + value: 1 +addOns: + dataManagementViewer: + availableFor: + - VIEWER + price: Contact Sales + unit: user/month + features: + viewLineageAndImpact: + value: true + seeDataQualityWarnings: + value: true + usageLimits: null + usageLimitsExtensions: null + dataManagementExplorer: + availableFor: + - EXPLORER + price: Contact Sales + unit: user/month + features: + viewLineageAndImpact: + value: true + setDataQualityWarnings: + value: true + seeDataQualityWarnings: + value: true + scheduleFlows: + value: true + usageLimits: null + usageLimitsExtensions: null + dataManagementCreator: + availableFor: + - CREATOR + price: Contact Sales + unit: user/month + features: + viewLineageAndImpact: + value: true + setDataQualityWarnings: + value: true + seeDataQualityWarnings: + value: true + scheduleFlows: + value: true + monitorFlowPerformance: + value: true + monitorFlowHealth: + value: true + usageLimits: null + usageLimitsExtensions: null + advancedManagement: + availableFor: + - CREATOR + price: Contact Sales + unit: user/month + features: + advancedDeploymentMonitoring: + value: true + programmaticContentMigration: + value: true + usageLimits: null + usageLimitsExtensions: null + einsteinDiscovery: + availableFor: + - VIEWER + - EXPLORER + - CREATOR + price: Contact Sales + unit: user/month + features: + consumePredictiveModels: + value: true + usageLimits: null + usageLimitsExtensions: null diff --git a/frontend/src/modules/harvey/samples/tableau-2024.yaml b/frontend/src/modules/harvey/samples/tableau-2024.yaml new file mode 100644 index 0000000..26d6685 --- /dev/null +++ b/frontend/src/modules/harvey/samples/tableau-2024.yaml @@ -0,0 +1,425 @@ +syntaxVersion: '2.1' +saasName: Tableau +createdAt: '2024-07-01' +version: '2024-07-01' +billing: + monthly: 1.0 +currency: USD +url: https://web.archive.org/web/20240701101756/https://www.tableau.com/pricing/teams-orgs +features: + manageUserPermissions: + description: Manage site roles, content ownership, and user permissions. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + curateDataSources: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + shareDataSources: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + manageContent: + description: Manage projects and workbooks. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + certifyDataSources: + description: Manage data sources certification + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + authorFromCuratedData: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + viewLineageAndImpact: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + setDataQualityWarnings: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + advancedDeploymentMonitoring: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TRACKING + programmaticContentMigration: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: API + interactWithVisualizations: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + interactWithDashboards: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + createCustomViews: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + shareCustomViews: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + downloadVisualizationAsImages: + description: Download a snapshot of a visualization or dashboard as either a .pdf + or .png file. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + downloadSummaryData: + description: Download only the aggregate data used by the visualization or dashboard. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + downloadFullData: + description: Download the full data set associated with the visualization or dashboard. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + seeDataQualityWarnings: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + consumePredictiveModels: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: BOT + commentOnDashboard: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + commentOnVisualization: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + createASubscriptionForYourself: + description: '' + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TRACKING + receiveDataDrivenAlerts: + description: '' + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TRACKING + createSubscriptionsForOthers: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TRACKING + createDataDrivenAlerts: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TRACKING + editExistingWorkbooks: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + editExistingVisualizations: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + createAndPublishNewWorkbookFromExistingDataSource: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + askData: + description: Explore an existing data source published to Tableau Server or Tableau + Online with Ask Data. + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: BOT + createAndPublishNewWorkbookFromNewDataSources: + description: Create and share content by connecting to a new data source, including + raw data. You're not restricted to existing, published data sources. + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: MARKETPLACE + createAndPublishNewDataSources: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + createNewWorkbooksBasedOnPreBuiltDashboardStarters: + description: Dashboard Starters allow you to connect prebuilt dashboards to common + enterprise applications. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + createNewDataFlows: + description: Combine, shape and clean data, and save the process as a data flow. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + editDataFlow: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + exportData: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + publishFlows: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + runFlows: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + scheduleFlows: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TASK_AUTOMATION + monitorFlowPerformance: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INFORMATION + monitorFlowHealth: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INFORMATION + analyticsAPI: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: API +usageLimits: + flowsLimit: + description: The maximum number of flows that can be created and run by a user. + valueType: NUMERIC + defaultValue: 0 + unit: flow + type: NON_RENEWABLE + linkedFeatures: + - runFlows +plans: + VIEWER: + description: View and interact with dashboards and visualizations in a secure, + easy-to-use platform. + price: 15 + unit: user/month + features: null + usageLimits: null + EXPLORER: + description: Explore trusted data and answer your own questions faster with full + self-service analytics. + price: 42 + unit: user/month + features: + manageUserPermissions: + value: true + manageContent: + value: true + certifyDataSources: + value: true + authorFromCuratedData: + value: true + createCustomViews: + value: true + shareCustomViews: + value: true + downloadFullData: + value: true + createSubscriptionsForOthers: + value: true + createDataDrivenAlerts: + value: true + editExistingWorkbooks: + value: true + editExistingVisualizations: + value: true + createAndPublishNewWorkbookFromExistingDataSource: + value: true + usageLimits: null + CREATOR: + description: Discover insights with a powerful suite of products that support + your end-to-end analytics workflow. + price: 75 + unit: user/month + features: + manageUserPermissions: + value: true + curateDataSources: + value: true + shareDataSources: + value: true + manageContent: + value: true + certifyDataSources: + value: true + authorFromCuratedData: + value: true + createCustomViews: + value: true + shareCustomViews: + value: true + downloadFullData: + value: true + createSubscriptionsForOthers: + value: true + createDataDrivenAlerts: + value: true + editExistingWorkbooks: + value: true + editExistingVisualizations: + value: true + createAndPublishNewWorkbookFromExistingDataSource: + value: true + createAndPublishNewWorkbookFromNewDataSources: + value: true + createAndPublishNewDataSources: + value: true + createNewWorkbooksBasedOnPreBuiltDashboardStarters: + value: true + createNewDataFlows: + value: true + editDataFlow: + value: true + exportData: + value: true + publishFlows: + value: true + runFlows: + value: true + usageLimits: + flowsLimit: + value: 1 +addOns: + dataManagementViewer: + availableFor: + - VIEWER + price: Contact Sales + unit: user/month + features: + viewLineageAndImpact: + value: true + seeDataQualityWarnings: + value: true + usageLimits: null + usageLimitsExtensions: null + dataManagementExplorer: + availableFor: + - EXPLORER + price: Contact Sales + unit: user/month + features: + viewLineageAndImpact: + value: true + setDataQualityWarnings: + value: true + seeDataQualityWarnings: + value: true + scheduleFlows: + value: true + usageLimits: null + usageLimitsExtensions: null + dataManagementCreator: + availableFor: + - CREATOR + price: Contact Sales + unit: user/month + features: + viewLineageAndImpact: + value: true + setDataQualityWarnings: + value: true + seeDataQualityWarnings: + value: true + scheduleFlows: + value: true + monitorFlowPerformance: + value: true + monitorFlowHealth: + value: true + usageLimits: null + usageLimitsExtensions: null + resourceBlocks: + availableFor: + - CREATOR + price: 250 + unit: block/month + features: null + usageLimits: null + usageLimitsExtensions: + flowsLimit: + value: 1 + advancedManagement: + availableFor: + - CREATOR + price: Contact Sales + unit: user/month + features: + advancedDeploymentMonitoring: + value: true + programmaticContentMigration: + value: true + usageLimits: null + usageLimitsExtensions: null + einsteinDiscovery: + availableFor: + - VIEWER + - EXPLORER + - CREATOR + price: Contact Sales + unit: user/month + features: + consumePredictiveModels: + value: true + usageLimits: null + usageLimitsExtensions: null + embeddedAnalytics: + availableFor: + - VIEWER + - EXPLORER + - CREATOR + price: Contact Sales + unit: user/month + features: + analyticsAPI: + value: true + usageLimits: null + usageLimitsExtensions: null diff --git a/frontend/src/modules/harvey/samples/tableau-2025.yaml b/frontend/src/modules/harvey/samples/tableau-2025.yaml new file mode 100644 index 0000000..418a7ca --- /dev/null +++ b/frontend/src/modules/harvey/samples/tableau-2025.yaml @@ -0,0 +1,452 @@ +syntaxVersion: '2.1' +saasName: Tableau +createdAt: '2025-02-20' +version: '2025' +billing: + annual: 1.0 +currency: USD +url: https://web.archive.org/web/20250220111437/https://www.tableau.com/pricing/ +tags: + - Govern + - Interact + - Collaborate + - Author + - Prepare + - Tableau Pulse +features: + manageUserPermissions: + description: Manage site roles, content ownership, and user permissions. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + tag: Govern + curateDataSources: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Govern + shareDataSources: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Govern + manageContent: + description: Manage projects and workbooks. + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + tag: Govern + certifyDataSources: + description: Manage data sources certification + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + tag: Govern + authorFromCuratedData: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Govern + viewLineageAndImpact: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Govern + setDataQualityWarnings: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Govern + advancedDeploymentMonitoring: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TRACKING + tag: Govern + programmaticContentMigration: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: API + tag: Govern + interactWithVisualizations: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Interact + interactWithDashboards: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Interact + createCustomViews: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Interact + shareCustomViews: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Interact + downloadVisualizationAsImages: + description: Download a snapshot of a visualization or dashboard as either a .pdf + or .png file. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Interact + downloadSummaryData: + description: Download only the aggregate data used by the visualization or dashboard. + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Interact + downloadFullData: + description: Download the full data set associated with the visualization or dashboard. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Interact + seeDataQualityWarnings: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TRACKING + tag: Interact + # consumePredictiveModels: + # description: '' + # valueType: BOOLEAN + # defaultValue: false + # type: AUTOMATION + # automationType: BOT + commentOnDashboard: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Collaborate + commentOnVisualization: + description: '' + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + tag: Collaborate + createASubscriptionForYourself: + description: '' + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + tag: Collaborate + receiveDataDrivenAlerts: + description: '' + valueType: BOOLEAN + defaultValue: true + type: AUTOMATION + automationType: TRACKING + tag: Collaborate + createSubscriptionsForOthers: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TRACKING + tag: Collaborate + createDataDrivenAlerts: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TRACKING + tag: Collaborate + editExistingWorkbooks: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Author + editExistingVisualizations: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Author + createAndPublishNewWorkbookFromExistingDataSource: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Author + # askData: + # description: Explore an existing data source published to Tableau Server or Tableau + # Online with Ask Data. + # valueType: BOOLEAN + # defaultValue: true + # type: AUTOMATION + # automationType: BOT + createAndPublishNewWorkbookFromNewDataSources: + description: Create and share content by connecting to a new data source, including + raw data. You're not restricted to existing, published data sources. + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: MARKETPLACE + tag: Author + createAndPublishNewDataSources: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Author + createNewWorkbooksBasedOnPreBuiltDashboardStarters: + description: Dashboard Starters allow you to connect prebuilt dashboards to common + enterprise applications. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Author + createNewDataFlows: + description: Combine, shape and clean data, and save the process as a data flow. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Prepare + editDataFlow: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Prepare + exportData: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Prepare + publishFlows: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Prepare + runFlows: + description: '' + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + tag: Prepare + scheduleFlows: + description: '' + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + tag: Prepare + automationType: TASK_AUTOMATION + monitorFlowPerformance: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INFORMATION + tag: Prepare + monitorFlowHealth: + description: '' + valueType: BOOLEAN + defaultValue: false + type: INFORMATION + tag: Prepare + # analyticsAPI: + # description: '' + # valueType: BOOLEAN + # defaultValue: false + # type: INTEGRATION + # integrationType: API + insightsSummary: + description: '' + valueType: BOOLEAN + defaultValue: true + type: INFORMATION + tag: Tableau Pulse + pulseQ&A: + description: '' + valueType: BOOLEAN + defaultValue: true + type: SUPPORT + tag: Tableau Pulse + email&SlackDigests: + description: '' + valueType: BOOLEAN + defaultValue: true + type: INTEGRATION + integrationType: WEB_SAAS + tag: Tableau Pulse + metricsLayer: + description: '' + valueType: BOOLEAN + defaultValue: true + type: INFORMATION + tag: Tableau Pulse + mobile: + description: '' + valueType: BOOLEAN + defaultValue: true + type: INTEGRATION + integrationType: EXTERNAL_DEVICE + tag: Tableau Pulse +usageLimits: null +plans: + VIEWER: + description: View and interact with dashboards and visualizations in a secure, + easy-to-use platform. + price: 35 + unit: user/month + features: null + usageLimits: null + EXPLORER: + description: Explore trusted data and answer your own questions faster with full + self-service analytics. + price: 70 + unit: user/month + features: + manageUserPermissions: + value: true + manageContent: + value: true + certifyDataSources: + value: true + authorFromCuratedData: + value: true + shareCustomViews: + value: true + downloadFullData: + value: true + createSubscriptionsForOthers: + value: true + createDataDrivenAlerts: + value: true + editExistingWorkbooks: + value: true + editExistingVisualizations: + value: true + createAndPublishNewWorkbookFromExistingDataSource: + value: true + CREATOR: + description: Discover insights with a powerful suite of products that support + your end-to-end analytics workflow. + price: 115 + unit: user/month + features: + manageUserPermissions: + value: true + curateDataSources: + value: true + shareDataSources: + value: true + manageContent: + value: true + certifyDataSources: + value: true + authorFromCuratedData: + value: true + shareCustomViews: + value: true + downloadFullData: + value: true + createSubscriptionsForOthers: + value: true + createDataDrivenAlerts: + value: true + editExistingWorkbooks: + value: true + editExistingVisualizations: + value: true + createAndPublishNewWorkbookFromExistingDataSource: + value: true + createAndPublishNewWorkbookFromNewDataSources: + value: true + createAndPublishNewDataSources: + value: true + createNewWorkbooksBasedOnPreBuiltDashboardStarters: + value: true + createNewDataFlows: + value: true + editDataFlow: + value: true + exportData: + value: true + publishFlows: + value: true + runFlows: + value: true +addOns: + dataManagementViewer: + availableFor: + - VIEWER + price: Contact Sales + unit: user/month + features: + viewLineageAndImpact: + value: true + seeDataQualityWarnings: + value: true + usageLimits: null + usageLimitsExtensions: null + dataManagementExplorer: + availableFor: + - EXPLORER + price: Contact Sales + unit: user/month + features: + viewLineageAndImpact: + value: true + setDataQualityWarnings: + value: true + seeDataQualityWarnings: + value: true + scheduleFlows: + value: true + usageLimits: null + usageLimitsExtensions: null + dataManagementCreator: + availableFor: + - CREATOR + price: Contact Sales + unit: user/month + features: + viewLineageAndImpact: + value: true + setDataQualityWarnings: + value: true + seeDataQualityWarnings: + value: true + scheduleFlows: + value: true + monitorFlowPerformance: + value: true + monitorFlowHealth: + value: true + usageLimits: null + usageLimitsExtensions: null + advancedManagement: + availableFor: + - CREATOR + price: Contact Sales + unit: user/month + features: + advancedDeploymentMonitoring: + value: true + programmaticContentMigration: + value: true + usageLimits: null + usageLimitsExtensions: null diff --git a/frontend/src/modules/harvey/samples/trello-2022.yaml b/frontend/src/modules/harvey/samples/trello-2022.yaml new file mode 100644 index 0000000..57c7607 --- /dev/null +++ b/frontend/src/modules/harvey/samples/trello-2022.yaml @@ -0,0 +1,347 @@ +syntaxVersion: '2.1' +saasName: Trello +createdAt: '2022-11-29' +version: '2022-11-29' +billing: + monthly: 1.0 + annual: 0.883 +currency: USD +url: https://web.archive.org/web/20221129200438/https://www.trello.com/pricing/ +features: + cards: + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + builtinAutomation: + description: Powerful no-code automation is built into every Trello board + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + assigneeDates: + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + dueDates: + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + iosApp: + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + androidApp: + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + desktopApp: + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + activityLogs: + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + trelloTemplates: + description: Give your team a blueprint for success with tried-and-true templates from the Trello community + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + 2factorAuthentication: + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + mobileDeviceManagement: + description: Enforce security controls on mobile app usage through + built-in mobile device management (MDM) support for iOS and Android. + valueType: BOOLEAN + defaultValue: true + type: INTEGRATION + integrationType: EXTERNAL_DEVICE + powerUps: + description: "Integrate with more than 200+ apps and tools your team depends on + like Slack, Google Drive, Salesforce, Dropbox and more directly into your Trello boards. + (Note: Some Power-Ups by our partners require an additional subscription fee.)" + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + boards: + valueType: BOOLEAN + defaultValue: true + type: DOMAIN + advancedChecklists: + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + customFields: + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + dashboardView: + description: Trello’s reporting tool lets you access real-time insights and + communicate your team’s progress in a visual and meaningful way. + valueType: BOOLEAN + defaultValue: false + type: INFORMATION + timelineView: + description: Plan your project, stay on top of every sprint, and see how + all of the moving parts fit together over time with Timeline. + valueType: BOOLEAN + defaultValue: false + type: INFORMATION + tableView: + description: Bring a clearer perspective to all the work happening across a single board in a + list format where you can create and edit cards in just a few clicks + valueType: BOOLEAN + defaultValue: false + type: INFORMATION + calendarView: + description: Calendar displays start dates, due dates, and advanced checklist + items so you can see what lies ahead for your project and stay on top of today’s to-dos + valueType: BOOLEAN + defaultValue: false + type: INFORMATION + mapView: + description: Plan an offsite, scout new office locations, or manage product + distribution points by adding locations to your cards and visualizing them geographically on a map + valueType: BOOLEAN + defaultValue: false + type: INFORMATION + workspaceTableView: + description: See your projects and tasks across Workspaces and boards in a + spreadsheet-style list that can be sorted and filtered to drill down + to exactly the cards you need to see + valueType: BOOLEAN + defaultValue: false + type: INFORMATION + workspaceCalendarView: + description: Workspace calendar displays items with start dates and due dates + across your projects and boards, so you can see what lies ahead for all your teamwork + valueType: BOOLEAN + defaultValue: false + type: INFORMATION + workspaceLevelTemplates: + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + commandRunAdministration: + description: Premium or Enterprise administrators can disable commands on + behalf of other users, and perform other command maintenance + valueType: BOOLEAN + defaultValue: false + type: AUTOMATION + automationType: TASK_AUTOMATION + boardCollections: + description: Premium and Enterprise teams can use Board Collections to + easily group boards together whether by Workspace, department, or major projec + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + prioritySupport: + description: Customers with Premium or Enterprise get priority email support, + meaning we’ll make sure your questions get answered within one business day + valueType: BOOLEAN + defaultValue: false + type: SUPPORT + observers: + description: Observers are a Premium security setting that limit a user’s actions within a board. + valueType: BOOLEAN + defaultValue: false + type: DOMAIN + domainRestrictedInvites: + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + deactivateMembers: + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + simpleDataExport: + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + enforce2FA: + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + singleSignOn: + description: Atlassian Access is a separate subscription that your company + can enable across all your Atlassian products and starts at $3/month/user + valueType: BOOLEAN + defaultValue: false + type: INTEGRATION + integrationType: IDENTITY_PROVIDER + workspaces: + valueType: BOOLEAN + defaultValue: true + type: MANAGEMENT + powerUpAdministration: + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + attachmentRestrictions: + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + organizationWidePermissions: + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + organizationVisibleBoards: + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT + publicBoardManagement: + valueType: BOOLEAN + defaultValue: false + type: MANAGEMENT +usageLimits: + boardsLimit: + valueType: NUMERIC + defaultValue: 10 + unit: board/workspace + type: NON_RENEWABLE + linkedFeatures: + - boards + powerUpsLimit: + valueType: NUMERIC + defaultValue: 1_000_000_000 + unit: Power-up/board + type: NON_RENEWABLE + linkedFeatures: + - powerUps + workspacesLimit: + valueType: NUMERIC + defaultValue: 1 + unit: workspace + type: NON_RENEWABLE + linkedFeatures: + - workspaces +plans: + FREE: + price: 0 + unit: user/month + features: null + usageLimits: null + STANDARD: + price: 5 + unit: user/month + features: + advancedChecklists: + value: true + customFields: + value: true + usageLimits: + boardsLimit: + value: .inf + PREMIUM: + price: 10 + unit: user/month + features: + advancedChecklists: + value: true + customFields: + value: true + dashboardView: + value: true + timelineView: + value: true + tableView: + value: true + calendarView: + value: true + mapView: + value: true + workspaceTableView: + value: true + workspaceCalendarView: + value: true + workspaceLevelTemplates: + value: true + commandRunAdministration: + value: true + boardCollections: + value: true + prioritySupport: + value: true + observers: + value: true + domainRestrictedInvites: + value: true + deactivateMembers: + value: true + simpleDataExport: + value: true + usageLimits: + boardsLimit: + value: .inf + ENTERPRISE: + price: 17.50 + unit: user/month + features: + advancedChecklists: + value: true + customFields: + value: true + dashboardView: + value: true + timelineView: + value: true + tableView: + value: true + calendarView: + value: true + mapView: + value: true + workspaceTableView: + value: true + workspaceCalendarView: + value: true + workspaceLevelTemplates: + value: true + commandRunAdministration: + value: true + boardCollections: + value: true + prioritySupport: + value: true + observers: + value: true + domainRestrictedInvites: + value: true + deactivateMembers: + value: true + simpleDataExport: + value: true + singleSignOn: + value: true + powerUpAdministration: + value: true + attachmentRestrictions: + value: true + organizationWidePermissions: + value: true + organizationVisibleBoards: + value: true + publicBoardManagement: + value: true + usageLimits: + boardsLimit: + value: .inf + workspacesLimit: + value: .inf +addOns: + ATLASSIAN_ACCESS: + description: Atlassian Access is a separate subscription that your company can + enable across all your Atlassian products and starts at $4/month/user. + Trello is an Atlassian product + price: 4 + unit: user/month + availableFor: + - FREE + - STANDARD + - PREMIUM + features: + enforce2FA: + value: true + singleSignOn: + value: true diff --git a/frontend/src/modules/harvey/sse.ts b/frontend/src/modules/harvey/sse.ts new file mode 100644 index 0000000..16ca3da --- /dev/null +++ b/frontend/src/modules/harvey/sse.ts @@ -0,0 +1,27 @@ +import { NotificationUrlEvent } from './types/types'; + +const HARVEY_API_BASE_URL = import.meta.env.VITE_HARVEY_URL ?? 'http://localhost:8086'; + +export interface UrlTransformEvent { + connect(onEvent: (event: NotificationUrlEvent) => void): () => void; +} + +export const sseUrlTransformEvent: UrlTransformEvent = { + connect(onEvent) { + const eventSource = new EventSource(`${HARVEY_API_BASE_URL}/events`); + + eventSource.onopen = () => console.log('Connection established'); + + eventSource.addEventListener('url_transform', (e: MessageEvent) => { + onEvent(JSON.parse(e.data)); + }); + + return () => eventSource.close(); + }, +}; + +export const playgroundMockUrlTrnasformEvent: UrlTransformEvent = { + connect(_) { + return () => {}; + }, +}; diff --git a/frontend/src/modules/harvey/types/types.ts b/frontend/src/modules/harvey/types/types.ts index 3df5973..9218e29 100644 --- a/frontend/src/modules/harvey/types/types.ts +++ b/frontend/src/modules/harvey/types/types.ts @@ -61,7 +61,20 @@ export interface PromptPreset { label: string; description: string; question: string; - context: YamlContextItemInput[]; + context: PresetContextInput[]; + response?: PresetResponse; +} + +export interface PresetContextInput { + kind: "url" | "yaml" + label: string + value: string +} + +export interface PresetResponse { + plan: Record; + result: Record; + answer: string; } export interface NotificationUrlEvent { diff --git a/frontend/src/modules/harvey/use-cases.ts b/frontend/src/modules/harvey/use-cases.ts new file mode 100644 index 0000000..6d32c94 --- /dev/null +++ b/frontend/src/modules/harvey/use-cases.ts @@ -0,0 +1,6513 @@ +import tableau2021 from './samples/tableau-2021.yaml?raw'; +import tableau2022 from './samples/tableau-2022.yaml?raw'; +import tableau2023 from './samples/tableau-2023.yaml?raw'; +import tableau2024 from './samples/tableau-2024.yaml?raw'; +import tableau2025 from './samples/tableau-2025.yaml?raw'; +import clickup2022 from './samples/clickup-2022.yaml?raw'; +import trello2022 from './samples/trello-2022.yaml?raw'; +import github2024 from './samples/github-2024.yaml?raw'; +import circleci2024 from './samples/circleci-2024.yaml?raw'; + +import type { PromptPreset } from './types/types'; + +export const UseCases = { + BEST_CONFIG_GIVEN_REQUIREMENTS: 'best-config-given-requirements', + CHEAPER_SUBSCRIPTION: 'cheaper-subscription', + BEST_CONFIG_PERFORM_X: 'best-configuration-to-perform-x', + COMPARING_YEARS: 'comparing-years', + AMINT: 'a-mint-extraction', +} as const; + +export const USE_CASES: PromptPreset[] = [ + { + id: UseCases.BEST_CONFIG_GIVEN_REQUIREMENTS, + label: + 'Best configuration of SaaS given price budget, feature requirements and usage limit restrictions', + description: + 'Best configuration of Tableau given price budget, feature requirements and usage limit restrictions', + question: + 'My company has a budget of $175 and needs create and publish new data sources with at least a usage limit of 1 flow. Which is the best configuration of Tableau that can offer this without exceeding the budget?', + context: [ + { + kind: 'yaml', + label: 'Tableau (2022)', + value: tableau2022, + }, + ], + response: { + answer: + 'Here\u2019s the configuration that best meets your requirements without exceeding your $175 budget:\n\n---\n\n## Recommended configuration\n\n**Plan:** `CREATOR` \n**Add\u2011on:** Tableau Data Management for Creator (in the YAML: `dataManagementCreator`) \n**Total cost:** **75.5 $** per user/month \n\nThis is comfortably under your 175 $ budget per month, leaving room for additional users if needed.\n\n---\n\n## Why this is the best (and effectively only) fit\n\n### 1. Ability to create and publish new data sources\n\nYour requirement: \n> \u201cneeds create and publish new data sources\u201d\n\nIn the pricing file, that maps directly to the feature:\n\n- `createAndPublishNewDataSources`\n\nFrom the YAML:\n\n- The **`CREATOR`** plan is the only plan that includes \n `createAndPublishNewDataSources: true`.\n\nNeither `VIEWER` nor `EXPLORER` includes this capability, and no add\u2011on upgrades them to do so. So:\n\n- Any valid configuration **must** be based on the **CREATOR** plan.\n\n---\n\n### 2. At least 1 flow in usage limits\n\nYour requirement: \n> \u201cwith at least a usage limit of 1 flow\u201d\n\nIn the YAML, this is modeled as:\n\n- `usageLimits.flowsLimit` \u2014 \n *\u201cThe maximum number of flows that can be created and run by a user.\u201d* \n Default is 0 (no flows).\n\nBase `CREATOR` has `usageLimits: null`, so flowsLimit defaults to 0. \nTo get flowsLimit \u2265 1, there are two relevant add\u2011ons:\n\n1. **Data Management for Creator (`dataManagementCreator`)**\n - Price: 5.5 $\n - Features it adds:\n - `publishFlows: true`\n - `runFlows: true`\n - `scheduleFlows: true`\n - `monitorFlowPerformance: true`\n - `monitorFlowHealth: true`\n - `viewLineageAndImpact: true`\n - `setDataQualityWarnings: true`\n - Usage limits:\n - `flowsLimit: 1`\n\n2. **`resourceBlocks`** (also only for `CREATOR`)\n - Price: 250 $ per block/month\n - Only adds a `flowsLimit` extension of 1, and would put the total well **over** your 175 $ budget when combined with CREATOR.\n\nThus:\n\n- **`CREATOR` + Data Management for Creator** gives you \n `flowsLimit: 1` at **75.5 $** total per user/month.\n- **`CREATOR` + resourceBlocks** would cost **320 $** (70 + 250), which violates your budget.\n\nSo the cheapest way to achieve **flowsLimit \u2265 1** and stay under 175 $ is:\n\n> **`CREATOR` plan + Data Management for Creator add\u2011on = 75.5 $**\n\n---\n\n## Budget context\n\n- One **CREATOR + Data Management** user: **75.5 $** \n- With a **175 $** budget, you could afford up to:\n - **2 such users** (2 \u00d7 75.5 $ = 151 $) and still stay within budget.\n\nIf you tell me how many users need these capabilities, I can spell out the exact total and configuration per user.', + plan: { + actions: [ + { + name: 'optimal', + objective: 'minimize', + solver: 'minizinc', + pricing_url: 'uploaded://pricing', + filters: { + maxPrice: 175, + features: ['createAndPublishNewDataSources'], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + }, + ], + requires_uploaded_yaml: false, + use_pricing2yaml_spec: false, + }, + result: { + index: 0, + action: 'optimal', + payload: { + request: { + url: '', + filters: { + maxPrice: 175, + features: ['createAndPublishNewDataSources'], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + solver: 'minizinc', + objective: 'minimize', + }, + result: { + optimal: { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementViewer'], + features: [ + 'webAccess', + 'mobileAccess', + 'embeddedContent', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: '75.5 $', + }, + }, + }, + objective: 'minimize', + filters: { + maxPrice: 175, + features: ['createAndPublishNewDataSources'], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + solver: 'minizinc', + pricingContext: 'uploaded://pricing', + }, + }, + }, + { + id: UseCases.CHEAPER_SUBSCRIPTION, + label: 'Given that an user wants to achieve X. Determine the cheaper subscription between SaaS', + description: + 'Given that an user wants to achieve X. Determine the cheaper subscription between SaaS', + question: + 'I need to get priority support for issues. Compare the prices of ClickUp and Trello to determine which is cheaper for this specific use.', + context: [ + { + kind: 'yaml', + label: 'ClickUp (2022)', + value: clickup2022, + }, + { + kind: 'yaml', + label: 'Trello (2022)', + value: trello2022, + }, + ], + response: { + answer: + 'Here\u2019s the direct comparison focused strictly on getting **priority support** from each vendor.\n\n### ClickUp\n\n- **Cheapest plan that includes `prioritySupport`:** `BUSINESS_PLUS`\n- **Price:** `29` USD per member/month \n- **Why this plan:** \n - In the ClickUp pricing YAML, `prioritySupport` is only enabled on:\n - `BUSINESS_PLUS` (price: 29, unit: member/month)\n - `ENTERPRISE` (price: Contact Sales \u2013 not a fixed numeric price)\n - I asked the optimizer to **minimize price subject to `prioritySupport = true`**, and it chose `BUSINESS_PLUS` at **29 $**.\n- **What \u201cpriority support\u201d means in ClickUp\u2019s own words:** \n > \u201cReceive an enhanced level of support to quickly resolve your highest priority issues.\u201d\n\n### Trello\n\n- **Cheapest plan that includes `prioritySupport`:** `PREMIUM`\n- **Price:** `10` USD per user/month \n- **Why this plan:** \n - In the Trello YAML, `prioritySupport` is enabled on:\n - `PREMIUM` (price: 10, unit: user/month)\n - `ENTERPRISE` (price: 17.50, unit: user/month)\n - With the same optimization\u2014**minimize price with `prioritySupport = true`**\u2014the tool selected `PREMIUM` at **10 $**, with no add-ons required.\n- **What \u201cpriority support\u201d means for Trello:** \n > \u201cCustomers with Premium or Enterprise get priority email support, meaning we\u2019ll make sure your questions get answered within one business day.\u201d\n\n*(Context note: Trello also has an annual discount factor `annual: 0.883`, so Premium would be about 8.83 USD/user/month if billed annually, but the optimizer\u2019s result is based on the listed monthly price of 10 $.)*\n\n---\n\n### Which is cheaper for priority support?\n\nFor the specific need of having **priority support on your issues** with each tool:\n\n- **ClickUp:** BUSINESS_PLUS at **29 $/member/month**\n- **Trello:** PREMIUM at **10 $/user/month**\n\n**Trello is the cheaper option** for obtaining priority support, by **19 $ per user per month** compared to the lowest ClickUp plan that includes priority support.', + plan: { + actions: [ + { + name: 'optimal', + objective: 'minimize', + solver: 'minizinc', + pricing_url: 'uploaded://pricing/1', + filters: { + features: ['prioritySupport'], + }, + }, + { + name: 'optimal', + objective: 'minimize', + solver: 'minizinc', + pricing_url: 'uploaded://pricing/2', + filters: { + features: ['prioritySupport'], + }, + }, + ], + requires_uploaded_yaml: false, + use_pricing2yaml_spec: false, + }, + result: { + actions: ['optimal', 'optimal'], + steps: [ + { + index: 0, + action: 'optimal', + payload: { + request: { + url: '', + filters: { + features: ['prioritySupport'], + }, + solver: 'minizinc', + objective: 'minimize', + }, + result: { + optimal: { + subscription: { + plan: 'BUSINESS_PLUS', + addOns: [], + features: [ + 'tasks', + 'spaces', + 'listsPerFolder', + 'foldersPerSpace', + 'customViews', + 'fileStorage', + 'privacy', + 'sharing', + 'guests', + 'guestsPermissions', + 'customFields', + 'templateEverything', + 'list', + 'board', + 'calendar', + 'box', + 'gantt', + 'activity', + 'timeline', + 'workload', + 'workloadCustomCapacityAndAdditionalGroups', + 'table', + 'map', + 'mindMaps', + 'whiteboards', + 'doc', + 'chat', + 'form', + 'formBrandingAndCustomization', + 'embed', + 'customStatuses', + 'customTasksIDs', + 'superRichEditing', + 'automations', + 'multipleActionsInAutomations', + 'portfolios', + 'portfoliosPermissions', + 'portfoliosSharing', + 'futureRecurringTasksOnCalendar', + 'multipleAssignees', + 'multitaskToolbar', + 'taskChecklists', + 'dependencies', + 'relationships', + 'tags', + 'priorities', + 'columnCalculations', + 'apiCalls', + 'docTags', + 'proofing', + 'publiclyShare', + 'inAppVideoRecording', + 'emailInClickUp', + 'teams', + 'teamSharing', + 'guestVisibility', + 'naturalLanguageProcessing', + 'smartNotifications', + 'assignComments', + 'delegateReminders', + 'privateDocs', + 'cloudStorage', + 'tasksInMultipleLists', + 'subtasksInMultipleLists', + 'goals', + 'goalFolders', + 'dashboards', + 'dashboardsWidget', + 'timeTracking', + 'granularTimeEstimates', + 'timeInStatus', + 'sprints', + 'sprintPoints', + 'pulseLiveOverview', + 'pulseLiveOverviewHistoricalData', + 'milestones', + 'homeAndScheduling', + 'workloadProfiles', + 'everything', + 'workInProgressLimits', + 'customExporting', + 'criticalPathAndSlackTime', + 'timeTrackingWidgets', + 'timeTrackingWidgetsBillableReportsAndTimesheets', + 'nativeIntegrations', + 'timeTrackingNotesLabelsAndBillableTime', + 'timeSheets', + 'zapier', + 'make', + 'googleDrive', + 'dropbox', + 'boxCloudStorage', + 'oneDriveCloudStorage', + 'twoFactorAuthentication', + 'smsTwoFactorAuthentication', + 'requireTwoFactorAuthentication', + 'googleSSO', + 'hipaaCompliance', + 'contractAndLegalReview', + 'customPermissions', + 'customRoles', + 'restrictWhoCanAddGuests', + 'anytimeSupport', + 'liveChatSupport', + 'prioritySupport', + 'adminTrainingWebinar', + ], + usageLimits: [ + { + useUsers: 1000000, + }, + { + useTasks: 100000000, + }, + { + useSpaces: 1000000, + }, + { + useListsPerFolder: 400, + }, + { + useFoldersPerSpace: 400, + }, + { + useCustomViews: 100000000, + }, + { + useFileStorage: 100000000, + }, + { + useGuests: 1000000, + }, + { + useGuestsPermissions: 10, + }, + { + useCustomFields: 100000000, + }, + { + useGantt: 100000000, + }, + { + useActivity: 100000000, + }, + { + useTimeline: 100000000, + }, + { + useWorkload: 100000000, + }, + { + useMap: 100000000, + }, + { + useMindMaps: 100000000, + }, + { + useWhiteboards: 100000000, + }, + { + useChat: 100000000, + }, + { + useAutomations: 25000, + }, + { + usePortfolios: 100, + }, + { + useApiCalls: 1000, + }, + { + useDocTags: 100000000, + }, + { + useEmailInClickUp: 100000000, + }, + { + useEmailAccountsInClickUp: 2, + }, + { + useTeams: 100000000, + }, + { + useTasksInMultipleLists: 100000000, + }, + { + useSubtasksInMultipleLists: 100000000, + }, + { + useGoals: 100, + }, + { + useDashboards: 100000000, + }, + { + useSprintPoints: 100000000, + }, + { + usePulseLiveOverview: 100000000, + }, + { + useMilestones: 100000000, + }, + { + useCustomExporting: 100000000, + }, + { + useCriticalPathAndSlackTime: 100000000, + }, + { + useCustomRoles: 1, + }, + ], + }, + cost: '29 $', + }, + }, + }, + objective: 'minimize', + filters: { + features: ['prioritySupport'], + }, + solver: 'minizinc', + pricingContext: 'uploaded://pricing/1', + }, + { + index: 1, + action: 'optimal', + payload: { + request: { + url: '', + filters: { + features: ['prioritySupport'], + }, + solver: 'minizinc', + objective: 'minimize', + }, + result: { + optimal: { + subscription: { + plan: 'PREMIUM', + addOns: [], + features: [ + 'cards', + 'builtinAutomation', + 'assigneeDates', + 'dueDates', + 'iosApp', + 'androidApp', + 'desktopApp', + 'activityLogs', + 'trelloTemplates', + '2factorAuthentication', + 'mobileDeviceManagement', + 'powerUps', + 'boards', + 'advancedChecklists', + 'customFields', + 'dashboardView', + 'timelineView', + 'tableView', + 'calendarView', + 'mapView', + 'workspaceTableView', + 'workspaceCalendarView', + 'workspaceLevelTemplates', + 'commandRunAdministration', + 'boardCollections', + 'prioritySupport', + 'observers', + 'domainRestrictedInvites', + 'deactivateMembers', + 'simpleDataExport', + 'workspaces', + ], + usageLimits: [ + { + boardsLimit: 100000000, + }, + { + powerUpsLimit: 100000000, + }, + { + workspacesLimit: 1, + }, + ], + }, + cost: '10 $', + }, + }, + }, + objective: 'minimize', + filters: { + features: ['prioritySupport'], + }, + solver: 'minizinc', + pricingContext: 'uploaded://pricing/2', + }, + ], + lastPayload: { + request: { + url: '', + filters: { + features: ['prioritySupport'], + }, + solver: 'minizinc', + objective: 'minimize', + }, + result: { + optimal: { + subscription: { + plan: 'PREMIUM', + addOns: [], + features: [ + 'cards', + 'builtinAutomation', + 'assigneeDates', + 'dueDates', + 'iosApp', + 'androidApp', + 'desktopApp', + 'activityLogs', + 'trelloTemplates', + '2factorAuthentication', + 'mobileDeviceManagement', + 'powerUps', + 'boards', + 'advancedChecklists', + 'customFields', + 'dashboardView', + 'timelineView', + 'tableView', + 'calendarView', + 'mapView', + 'workspaceTableView', + 'workspaceCalendarView', + 'workspaceLevelTemplates', + 'commandRunAdministration', + 'boardCollections', + 'prioritySupport', + 'observers', + 'domainRestrictedInvites', + 'deactivateMembers', + 'simpleDataExport', + 'workspaces', + ], + usageLimits: [ + { + boardsLimit: 100000000, + }, + { + powerUpsLimit: 100000000, + }, + { + workspacesLimit: 1, + }, + ], + }, + cost: '10 $', + }, + }, + }, + }, + }, + }, + { + id: UseCases.BEST_CONFIG_PERFORM_X, + label: 'What is the best configuration to perform an action', + description: 'What is the best configuration to perform an action', + question: + 'What is the best configuration among all these SaaS products for continous integration?', + context: [ + { + kind: 'yaml', + label: 'Github (2024)', + value: github2024, + }, + { + kind: 'yaml', + label: 'CircleCI (2024)', + value: circleci2024, + }, + ], + response: { + answer: + "Here is the best configuration for continuous integration across the given SaaS products, based on the plan you executed and the pricing context provided.\n\nWhat the tools showed (summary)\n\n- For GitHub Actions (pricing context from pricing/1):\n - Optimal subscription: FREE\n - Cost: 0 € (per tool output)\n - Key quota/details: includes githubActions with a quota of 2000 minutes; repository features like publicRepositories, privateRepositories, etc., are included in the FREE tier\n - Plan name exactly: FREE\n\n- For CircleCI - Cloud (pricing context from pricing/2):\n - Optimal subscription: FREE\n - Cost: 0 $ (per tool output)\n - Key quotas/details: includes concurrentJobRuns (30 non-Mac OS and 1 Mac OS), selfHostedRunners (limit 5), and other basic CI features on the FREE tier\n\nHow to interpret this\n- Both options can be used at no cost on their respective FREE plans.\n- GitHub Actions on GitHub's FREE plan covers CI directly in the repository's ecosystem (minutes quota applies, with 2000 minutes stated in the tool output; public repos have free use in practice, per the YAML context).\n- CircleCI's FREE plan provides concurrency for CI jobs (30 non-Mac non-MMOS concurrency, 1 Mac OS), plus other CI-related capabilities.\n\nBest configuration (practical recommendation)\n- Primary CI workflow:\n - Use GitHub Actions on GitHub's FREE plan as your main continuous integration engine if your code is hosted on GitHub. This leverages deep integration, simplicity, and zero cost for basic CI workloads.\n - Rationale: The tool results show the GitHub Actions path is available at 0 cost and includes the core CI features you likely need (githubActions minute quota and repository workflow features) in the FREE tier.\n- Optional concurrency augmentation (only if you need more parallelism or OS-specific runners beyond GitHub Actions' capabilities):\n - Optionally pair with CircleCI Cloud FREE plan for additional concurrent runs (30 non-Mac, 1 Mac) at 0 cost.\n - Rationale: This is also a FREE path and can supplement concurrent needs if your CI demands exceed what GitHub Actions can accommodate within its free usage pattern.\n\nNotes and context from Pricing Context\n- GitHub Actions: The Pricing YAML describes Actions as minutes-based, with a quota (2000 minutes in the tool's data) and free usage for public repositories; the FREE plan includes a broad set of repository features beyond Actions.\n- CircleCI: The FREE plan explicitly provides concurrentJobRuns (30 non-Mac, 1 Mac) and self-hosted runners (limit 5), among other standard CI features.\n\nBottom line\n- Best cost-minimizing configuration:\n - Primary: GitHub Actions on GitHub FREE (0 €) for CI on GitHub-hosted repos.\n - Optional: CircleCI Cloud FREE (0 $) if you need extra concurrency beyond GitHub Actions' capabilities (up to 30 non-Mac and 1 Mac concurrently).\n\nWhy this is chosen\n- The optimization results show zero-cost options for both features/paths:\n - GitHub Actions path: FREE plan, 0 cost, with the required Actions capability.\n - CircleCI path: FREE plan, 0 cost, with the needed concurrentJobRuns capability.\n- Since there isn't a single product in the provided results that combines both features under one plan at zero cost, the cheapest practical approach is to use the FREE plans of the two platforms as a combination, with GitHub Actions as the primary CI engine for GitHub-hosted projects and CircleCI as a potential concurrency supplement if needed.\n\nIf you want, I can map this to a concrete setup plan (which repos/workflows to put on Actions vs CircleCI, how to split test jobs, and recommended runner configurations).", + plan: { + actions: [ + { + name: 'optimal', + objective: 'minimize', + pricing_url: 'uploaded://pricing/1', + filters: { + features: ['githubActions'], + }, + solver: 'minizinc', + }, + { + name: 'optimal', + objective: 'minimize', + pricing_url: 'uploaded://pricing/2', + filters: { + features: ['concurrentJobRuns'], + }, + solver: 'minizinc', + }, + ], + requires_uploaded_yaml: false, + use_pricing2yaml_spec: false, + }, + result: { + actions: ['optimal', 'optimal'], + steps: [ + { + index: 0, + action: 'optimal', + payload: { + request: { + url: '', + filters: { + features: ['githubActions'], + }, + solver: 'minizinc', + objective: 'minimize', + }, + result: { + optimal: { + subscription: { + plan: 'FREE', + addOns: [], + features: [ + 'publicRepositories', + 'privateRepositories', + 'githubCodespaces', + 'githubActions', + 'githubPackages', + 'codeReviews', + 'pullRequests', + 'protectedBranches', + 'codeOwners', + 'draftPullRequests', + 'multiplePullRequestsAssignees', + 'repositoryInsights', + 'scheduledReminders', + 'automaticCodeReviewAssigment', + 'enviromentProtectionRules', + 'enviromentDeploymentBranchesAndSecrets', + 'collaboratorsForPublicRepositories', + 'collaboratorsForPrivateRepositories', + 'issues', + 'projects', + 'milestones', + 'teamDiscussions', + 'organizationAndTeamManagement', + 'pagesAndWikis', + 'multipleIssueAssignees', + 'codeScanning', + 'secretScanning', + 'dependencyReview', + 'dependabotAlerts', + 'dependabotSecurityUpdates', + 'dependabotVersionUpdates', + 'requiredReviews', + 'requiredStatusChecks', + 'githubSecurityAdvisories', + 'roleBasedAccessControl', + 'required2FA', + 'auditLog', + 'githubApps', + 'statusChecks', + 'communitySupport', + 'invoiceBilling', + 'gitLFS', + ], + usageLimits: [ + { + githubOnlyForPublicRepositoriesFreeTier: 1, + }, + { + githubOnlyForPublicRepositoriesTeamTier: 1, + }, + { + githubActionsQuota: 2000, + }, + { + diskSpaceForGithubPackages: 0.5, + }, + { + githubCodepacesStorage: 15, + }, + { + githubCodepacesCoreHours: 120, + }, + { + gitLFSMaximunFileSize: 2, + }, + { + gitLFSStorageLimit: 1, + }, + { + gitLFSBandwithLimit: 1, + }, + ], + }, + cost: '0 €', + }, + }, + }, + objective: 'minimize', + filters: { + features: ['githubActions'], + }, + solver: 'minizinc', + pricingContext: 'uploaded://pricing/1', + }, + { + index: 1, + action: 'optimal', + payload: { + request: { + url: '', + filters: { + features: ['concurrentJobRuns'], + }, + solver: 'minizinc', + objective: 'minimize', + }, + result: { + optimal: { + subscription: { + plan: 'FREE', + addOns: [], + features: [ + 'network', + 'storage', + 'smallX86DockerVM', + 'mediumX86DockerVM', + 'mediumX86PlusDockerVM', + 'largeX86DockerVM', + 'mediumArmDockerVM', + 'largeArmDockerVM', + 'mediumLinuxVM', + 'largeLinuxVM', + 'mediumArmVM', + 'largeArmVM', + 'xlargeArmVM', + '2xlargeArmVM', + 'mediumWindowsVM', + 'largeWindowsVM', + 'm1MediumMacOsVM', + 'concurrentJobRuns', + 'selfHostedRunners', + 'dockerLayerCatching', + 'flakyTestDetection', + 'privateOrbs', + 'components', + 'componentsRelease', + 'communitySupport', + ], + usageLimits: [ + { + maxUsers: 5, + }, + { + creditsLimit: 30000, + }, + { + networkLimit: 1, + }, + { + storageLimit: 2, + }, + { + concurrentJobRunsLimitNonMacOs: 30, + }, + { + concurrentJobRunsLimitMacOs: 1, + }, + { + selfHostedRunnersLimit: 5, + }, + { + flakyTestDetectionLimit: 5, + }, + { + componentsLimit: 3, + }, + ], + }, + cost: '0 $', + }, + }, + }, + objective: 'minimize', + filters: { + features: ['concurrentJobRuns'], + }, + solver: 'minizinc', + pricingContext: 'uploaded://pricing/2', + }, + ], + lastPayload: { + request: { + url: '', + filters: { + features: ['concurrentJobRuns'], + }, + solver: 'minizinc', + objective: 'minimize', + }, + result: { + optimal: { + subscription: { + plan: 'FREE', + addOns: [], + features: [ + 'network', + 'storage', + 'smallX86DockerVM', + 'mediumX86DockerVM', + 'mediumX86PlusDockerVM', + 'largeX86DockerVM', + 'mediumArmDockerVM', + 'largeArmDockerVM', + 'mediumLinuxVM', + 'largeLinuxVM', + 'mediumArmVM', + 'largeArmVM', + 'xlargeArmVM', + '2xlargeArmVM', + 'mediumWindowsVM', + 'largeWindowsVM', + 'm1MediumMacOsVM', + 'concurrentJobRuns', + 'selfHostedRunners', + 'dockerLayerCatching', + 'flakyTestDetection', + 'privateOrbs', + 'components', + 'componentsRelease', + 'communitySupport', + ], + usageLimits: [ + { + maxUsers: 5, + }, + { + creditsLimit: 30000, + }, + { + networkLimit: 1, + }, + { + storageLimit: 2, + }, + { + concurrentJobRunsLimitNonMacOs: 30, + }, + { + concurrentJobRunsLimitMacOs: 1, + }, + { + selfHostedRunnersLimit: 5, + }, + { + flakyTestDetectionLimit: 5, + }, + { + componentsLimit: 3, + }, + ], + }, + cost: '0 $', + }, + }, + }, + }, + }, + }, + { + id: UseCases.COMPARING_YEARS, + label: 'SaaS price increase over the years', + description: 'SaaS price increase over the years', + question: + 'What has been the price increase (in percentage or absolute terms) of Viewer plan from Tableau over the past 5 years (2021, 2022, 2023, 2024 and 2025)?', + context: [ + { + kind: 'yaml', + label: 'Tableau (2021)', + value: tableau2021, + }, + { + kind: 'yaml', + label: 'Tableau (2022)', + value: tableau2022, + }, + { + kind: 'yaml', + label: 'Tableau (2023)', + value: tableau2023, + }, + { + kind: 'yaml', + label: 'Tableau (2024)', + value: tableau2024, + }, + { + kind: 'yaml', + label: 'Tableau (2025)', + value: tableau2025, + }, + ], + response: { + answer: + 'Here\'s Tableau\'s Viewer plan price trajectory (USD per user per month) based on the Pricing Context snapshots for 2021-2025:\n- 2021: 12\n- 2022: 15\n- 2023: 15\n- 2024: 35\n- 2025: 35\n\nYear-over-year changes (absolute and percentage):\n- 2021 → 2022: +3 USD (+25.00%)\n- 2022 → 2023: +0 USD (0.00%)\n- 2023 → 2024: +20 USD (+133.33%)\n- 2024 → 2025: +0 USD (0.00%)\n\nFive-year total Change (2021 to 2025):\n- Absolute increase: +23 USD (from 12 to 35)\n- Percentage increase: +191.67%\n\nNotes:\n- Prices are per user per month (USD)\n- The large jump occurred in 2024 (from 15 to 35) and stayed at 35 in 2025.\n- These figures come from Tableau\'s historical pricing YAML snapshots included in the Pricing Context (years 2021-2025). If you need current pricing, please check Tableau\'s latest pricing page or contact sales.', + plan: { + actions: [ + { + name: 'subscriptions', + pricing_url: 'uploaded://pricing/1', + }, + { + name: 'subscriptions', + pricing_url: 'uploaded://pricing/2', + }, + { + name: 'subscriptions', + pricing_url: 'uploaded://pricing/3', + }, + { + name: 'subscriptions', + pricing_url: 'uploaded://pricing/4', + }, + { + name: 'subscriptions', + pricing_url: 'uploaded://pricing/5', + }, + ], + requires_uploaded_yaml: false, + use_pricing2yaml_spec: false, + }, + result: { + actions: [ + 'subscriptions', + 'subscriptions', + 'subscriptions', + 'subscriptions', + 'subscriptions', + ], + steps: [ + { + index: 0, + action: 'subscriptions', + payload: { + request: { + url: '', + filters: null, + solver: 'minizinc', + }, + result: { + subscriptions: [ + { + subscription: { + plan: 'VIEWER', + addOns: [], + features: [ + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + ], + usageLimits: [], + }, + cost: '12 $', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['dataManagementViewer'], + features: [ + 'viewLineageAndImpact', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['einsteinDiscovery'], + features: [ + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['dataManagementViewer', 'einsteinDiscovery'], + features: [ + 'viewLineageAndImpact', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: [], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + ], + usageLimits: [], + }, + cost: '35 $', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['dataManagementExplorer'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'scheduleFlows', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['dataManagementExplorer', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'scheduleFlows', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: [], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + ], + usageLimits: [], + }, + cost: '70 $', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['resourceBlocks'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: '320 $', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['serverManagement'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedServerDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['resourceBlocks', 'serverManagement'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedServerDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['resourceBlocks', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['serverManagement', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedServerDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['resourceBlocks', 'serverManagement', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedServerDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'resourceBlocks'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'serverManagement'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedServerDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'resourceBlocks', 'serverManagement'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedServerDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'resourceBlocks', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'serverManagement', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedServerDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: [ + 'dataManagementCreator', + 'resourceBlocks', + 'serverManagement', + 'einsteinDiscovery', + ], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedServerDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + ], + cardinality: 24, + }, + }, + pricingContext: 'uploaded://pricing/1', + }, + { + index: 1, + action: 'subscriptions', + payload: { + request: { + url: '', + filters: null, + solver: 'minizinc', + }, + result: { + subscriptions: [ + { + subscription: { + plan: 'VIEWER', + addOns: [], + features: [ + 'interactWithVisualizations', + 'interactWithDashboards', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + ], + usageLimits: [], + }, + cost: '15 $', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['dataManagementViewer'], + features: [ + 'viewLineageAndImpact', + 'interactWithVisualizations', + 'interactWithDashboards', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['einsteinDiscovery'], + features: [ + 'interactWithVisualizations', + 'interactWithDashboards', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['dataManagementViewer', 'einsteinDiscovery'], + features: [ + 'viewLineageAndImpact', + 'interactWithVisualizations', + 'interactWithDashboards', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: [], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + ], + usageLimits: [], + }, + cost: '42 $', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['dataManagementExplorer'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'scheduleFlows', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['dataManagementExplorer', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'scheduleFlows', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: [], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + ], + usageLimits: [], + }, + cost: '70 $', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['advancedManagement'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedServerDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['advancedManagement', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedServerDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'advancedManagement'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedServerDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'advancedManagement', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedServerDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + ], + cardinality: 16, + }, + }, + pricingContext: 'uploaded://pricing/2', + }, + { + index: 2, + action: 'subscriptions', + payload: { + request: { + url: '', + filters: null, + solver: 'minizinc', + }, + result: { + subscriptions: [ + { + subscription: { + plan: 'VIEWER', + addOns: [], + features: [ + 'interactWithVisualizations', + 'interactWithDashboards', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + ], + usageLimits: [], + }, + cost: '15 $', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['dataManagementViewer'], + features: [ + 'viewLineageAndImpact', + 'interactWithVisualizations', + 'interactWithDashboards', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['einsteinDiscovery'], + features: [ + 'interactWithVisualizations', + 'interactWithDashboards', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['dataManagementViewer', 'einsteinDiscovery'], + features: [ + 'viewLineageAndImpact', + 'interactWithVisualizations', + 'interactWithDashboards', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: [], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + ], + usageLimits: [], + }, + cost: '42 $', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['dataManagementExplorer'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'scheduleFlows', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['dataManagementExplorer', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'scheduleFlows', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: [], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: '75 $', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['advancedManagement'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['advancedManagement', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'advancedManagement'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'advancedManagement', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + ], + cardinality: 16, + }, + }, + pricingContext: 'uploaded://pricing/3', + }, + { + index: 3, + action: 'subscriptions', + payload: { + request: { + url: '', + filters: null, + solver: 'minizinc', + }, + result: { + subscriptions: [ + { + subscription: { + plan: 'VIEWER', + addOns: [], + features: [ + 'interactWithVisualizations', + 'interactWithDashboards', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + ], + usageLimits: [], + }, + cost: '15 $', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['dataManagementViewer'], + features: [ + 'viewLineageAndImpact', + 'interactWithVisualizations', + 'interactWithDashboards', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['einsteinDiscovery'], + features: [ + 'interactWithVisualizations', + 'interactWithDashboards', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['dataManagementViewer', 'einsteinDiscovery'], + features: [ + 'viewLineageAndImpact', + 'interactWithVisualizations', + 'interactWithDashboards', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['embeddedAnalytics'], + features: [ + 'interactWithVisualizations', + 'interactWithDashboards', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + 'analyticsAPI', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['dataManagementViewer', 'embeddedAnalytics'], + features: [ + 'viewLineageAndImpact', + 'interactWithVisualizations', + 'interactWithDashboards', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + 'analyticsAPI', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['einsteinDiscovery', 'embeddedAnalytics'], + features: [ + 'interactWithVisualizations', + 'interactWithDashboards', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + 'analyticsAPI', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['dataManagementViewer', 'einsteinDiscovery', 'embeddedAnalytics'], + features: [ + 'viewLineageAndImpact', + 'interactWithVisualizations', + 'interactWithDashboards', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'askData', + 'analyticsAPI', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: [], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + ], + usageLimits: [], + }, + cost: '42 $', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['embeddedAnalytics'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'analyticsAPI', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['einsteinDiscovery', 'embeddedAnalytics'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'analyticsAPI', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['dataManagementExplorer'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'scheduleFlows', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['dataManagementExplorer', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'scheduleFlows', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['dataManagementExplorer', 'embeddedAnalytics'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'scheduleFlows', + 'analyticsAPI', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['dataManagementExplorer', 'einsteinDiscovery', 'embeddedAnalytics'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'scheduleFlows', + 'analyticsAPI', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: [], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: '75 $', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['resourceBlocks'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: '325 $', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['advancedManagement'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['resourceBlocks', 'advancedManagement'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['resourceBlocks', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['advancedManagement', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['resourceBlocks', 'advancedManagement', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['embeddedAnalytics'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'analyticsAPI', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['resourceBlocks', 'embeddedAnalytics'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'analyticsAPI', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['advancedManagement', 'embeddedAnalytics'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'analyticsAPI', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['resourceBlocks', 'advancedManagement', 'embeddedAnalytics'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'analyticsAPI', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['einsteinDiscovery', 'embeddedAnalytics'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'analyticsAPI', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['resourceBlocks', 'einsteinDiscovery', 'embeddedAnalytics'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'analyticsAPI', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['advancedManagement', 'einsteinDiscovery', 'embeddedAnalytics'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'analyticsAPI', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: [ + 'resourceBlocks', + 'advancedManagement', + 'einsteinDiscovery', + 'embeddedAnalytics', + ], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'analyticsAPI', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'resourceBlocks'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'advancedManagement'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'resourceBlocks', 'advancedManagement'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'resourceBlocks', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'advancedManagement', 'einsteinDiscovery'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: [ + 'dataManagementCreator', + 'resourceBlocks', + 'advancedManagement', + 'einsteinDiscovery', + ], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'embeddedAnalytics'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + 'analyticsAPI', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'resourceBlocks', 'embeddedAnalytics'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + 'analyticsAPI', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'advancedManagement', 'embeddedAnalytics'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + 'analyticsAPI', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: [ + 'dataManagementCreator', + 'resourceBlocks', + 'advancedManagement', + 'embeddedAnalytics', + ], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + 'analyticsAPI', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'einsteinDiscovery', 'embeddedAnalytics'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + 'analyticsAPI', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: [ + 'dataManagementCreator', + 'resourceBlocks', + 'einsteinDiscovery', + 'embeddedAnalytics', + ], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + 'analyticsAPI', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: [ + 'dataManagementCreator', + 'advancedManagement', + 'einsteinDiscovery', + 'embeddedAnalytics', + ], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + 'analyticsAPI', + ], + usageLimits: [ + { + flowsLimit: 1, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: [ + 'dataManagementCreator', + 'resourceBlocks', + 'advancedManagement', + 'einsteinDiscovery', + 'embeddedAnalytics', + ], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'consumePredictiveModels', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'askData', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + 'analyticsAPI', + ], + usageLimits: [ + { + flowsLimit: 2, + }, + ], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + ], + cardinality: 48, + }, + }, + pricingContext: 'uploaded://pricing/4', + }, + { + index: 4, + action: 'subscriptions', + payload: { + request: { + url: '', + filters: null, + solver: 'minizinc', + }, + result: { + subscriptions: [ + { + subscription: { + plan: 'VIEWER', + addOns: [], + features: [ + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'insightsSummary', + 'pulseQ&A', + 'email&SlackDigests', + 'metricsLayer', + 'mobile', + ], + usageLimits: [], + }, + cost: '35 $', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['dataManagementViewer'], + features: [ + 'viewLineageAndImpact', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'insightsSummary', + 'pulseQ&A', + 'email&SlackDigests', + 'metricsLayer', + 'mobile', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: [], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'insightsSummary', + 'pulseQ&A', + 'email&SlackDigests', + 'metricsLayer', + 'mobile', + ], + usageLimits: [], + }, + cost: '70 $', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['dataManagementExplorer'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'scheduleFlows', + 'insightsSummary', + 'pulseQ&A', + 'email&SlackDigests', + 'metricsLayer', + 'mobile', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: [], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'insightsSummary', + 'pulseQ&A', + 'email&SlackDigests', + 'metricsLayer', + 'mobile', + ], + usageLimits: [], + }, + cost: '115 $', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['advancedManagement'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'insightsSummary', + 'pulseQ&A', + 'email&SlackDigests', + 'metricsLayer', + 'mobile', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + 'insightsSummary', + 'pulseQ&A', + 'email&SlackDigests', + 'metricsLayer', + 'mobile', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'advancedManagement'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + 'insightsSummary', + 'pulseQ&A', + 'email&SlackDigests', + 'metricsLayer', + 'mobile', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + ], + cardinality: 8, + }, + }, + pricingContext: 'uploaded://pricing/5', + }, + ], + lastPayload: { + request: { + url: '', + filters: null, + solver: 'minizinc', + }, + result: { + subscriptions: [ + { + subscription: { + plan: 'VIEWER', + addOns: [], + features: [ + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'insightsSummary', + 'pulseQ&A', + 'email&SlackDigests', + 'metricsLayer', + 'mobile', + ], + usageLimits: [], + }, + cost: '35 $', + }, + { + subscription: { + plan: 'VIEWER', + addOns: ['dataManagementViewer'], + features: [ + 'viewLineageAndImpact', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'insightsSummary', + 'pulseQ&A', + 'email&SlackDigests', + 'metricsLayer', + 'mobile', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: [], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'insightsSummary', + 'pulseQ&A', + 'email&SlackDigests', + 'metricsLayer', + 'mobile', + ], + usageLimits: [], + }, + cost: '70 $', + }, + { + subscription: { + plan: 'EXPLORER', + addOns: ['dataManagementExplorer'], + features: [ + 'manageUserPermissions', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'scheduleFlows', + 'insightsSummary', + 'pulseQ&A', + 'email&SlackDigests', + 'metricsLayer', + 'mobile', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: [], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'insightsSummary', + 'pulseQ&A', + 'email&SlackDigests', + 'metricsLayer', + 'mobile', + ], + usageLimits: [], + }, + cost: '115 $', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['advancedManagement'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'insightsSummary', + 'pulseQ&A', + 'email&SlackDigests', + 'metricsLayer', + 'mobile', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + 'insightsSummary', + 'pulseQ&A', + 'email&SlackDigests', + 'metricsLayer', + 'mobile', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + { + subscription: { + plan: 'CREATOR', + addOns: ['dataManagementCreator', 'advancedManagement'], + features: [ + 'manageUserPermissions', + 'curateDataSources', + 'shareDataSources', + 'manageContent', + 'certifyDataSources', + 'authorFromCuratedData', + 'viewLineageAndImpact', + 'setDataQualityWarnings', + 'advancedDeploymentMonitoring', + 'programmaticContentMigration', + 'interactWithVisualizations', + 'interactWithDashboards', + 'createCustomViews', + 'shareCustomViews', + 'downloadVisualizationAsImages', + 'downloadSummaryData', + 'downloadFullData', + 'seeDataQualityWarnings', + 'commentOnDashboard', + 'commentOnVisualization', + 'createASubscriptionForYourself', + 'receiveDataDrivenAlerts', + 'createSubscriptionsForOthers', + 'createDataDrivenAlerts', + 'editExistingWorkbooks', + 'editExistingVisualizations', + 'createAndPublishNewWorkbookFromExistingDataSource', + 'createAndPublishNewWorkbookFromNewDataSources', + 'createAndPublishNewDataSources', + 'createNewWorkbooksBasedOnPreBuiltDashboardStarters', + 'createNewDataFlows', + 'editDataFlow', + 'exportData', + 'publishFlows', + 'runFlows', + 'scheduleFlows', + 'monitorFlowPerformance', + 'monitorFlowHealth', + 'insightsSummary', + 'pulseQ&A', + 'email&SlackDigests', + 'metricsLayer', + 'mobile', + ], + usageLimits: [], + }, + cost: 'Subscription cost includes add-ons with non-numeric prices, cannot calculate total cost. Please check the pricing data or contact sales.', + }, + ], + cardinality: 8, + }, + }, + }, + }, + }, + { + id: UseCases.AMINT, + label: 'A-MINT iPricing extraction', + description: 'Extract an iPricing from the URL provided by the user', + question: 'Extract an iPricing from the URL passed in the context', + context: [ + { + kind: 'url', + label: 'https://proton.me/mail/pricing', + value: 'https://proton.me/mail/pricing', + }, + ], + response: { + answer: + 'Based on the executed iPricing analysis and the authoritative Pricing2Yaml specification for Proton Mail here is the consolidated, precise, and contextualized answer.', + plan: { + actions: ['iPricing'], + requires_uploaded_yaml: false, + use_pricing2yaml_spec: false, + }, + result: { + syntaxVersion: '3.0', + saasName: 'Proton Mail', + createdAt: '2026-02-11T00:00:00.000Z', + version: '2026-02-11', + currency: 'EUR', + url: 'https://web.archive.org/web/20260211182642/https://proton.me/mail/pricing', + tags: [ + 'Proton Mail', + 'Proton Calendar', + 'Proton Drive', + 'Proton VPN', + 'Proton Pass', + 'Proton Wallet', + ], + features: { + storage: { + valueType: 'BOOLEAN', + defaultValue: true, + type: 'DOMAIN', + }, + priorityCustomerSupport: { + valueType: 'BOOLEAN', + defaultValue: false, + type: 'SUPPORT', + }, + easySwitchImportAssistant: { + description: 'Quickly transfer your emails, calendars or contacts from any provider.', + valueType: 'BOOLEAN', + defaultValue: true, + type: 'INTEGRATION', + integrationType: 'WEB_SAAS', + pricingUrls: ['https://mail.google.com'], + }, + protonSentinelProgram: { + description: + 'Provides the highest level of account security protection and specialist support.', + valueType: 'BOOLEAN', + defaultValue: false, + type: 'SUPPORT', + }, + emergencyAccess: { + description: + 'Grant permission to trusted contacts to securely access your Proton account in an emergency, after a set period of time.', + valueType: 'BOOLEAN', + defaultValue: false, + type: 'MANAGEMENT', + }, + darkWebMonitoring: { + description: + "Dark Web Monitoring scans hidden parts of the internet for Proton Mail email addresses that have ended up in illegal data markets. If our system detects a breach, you'll receive a Security Center alert along with actions you can take to mitigate the risk.", + valueType: 'BOOLEAN', + defaultValue: false, + type: 'GUARANTEE', + }, + emailAdresses: { + valueType: 'BOOLEAN', + defaultValue: true, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + customEmailDomains: { + description: 'Use your own custom email domain addresses, e.g., you@yourname.com', + valueType: 'BOOLEAN', + defaultValue: false, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + messages: { + description: + 'Bulk promotional or programmatic email sending is currently not supported. We recommend using a dedicated email service provider for this use case.', + valueType: 'BOOLEAN', + defaultValue: true, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + folders: { + description: 'Keep your inbox organized with folders.', + valueType: 'BOOLEAN', + defaultValue: true, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + labels: { + description: + 'Labels are simple tags you can add to messages to make them easier to find or to apply filters to.', + valueType: 'BOOLEAN', + defaultValue: true, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + customFilters: { + valueType: 'BOOLEAN', + defaultValue: true, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + attachments: { + valueType: 'BOOLEAN', + defaultValue: true, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + 'short@pm.meAddress': { + description: + 'Activate an extra and free email alias yourname@pm.me, easy to remember and share.', + valueType: 'BOOLEAN', + defaultValue: false, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + contactGroups: { + description: + 'Send emails to large groups quickly and easily by creating as many contact groups as you need (up to 100 contacts per group).', + valueType: 'BOOLEAN', + defaultValue: false, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + emailClientSupport: { + description: + 'Proton Mail supports desktop clients such as Outlook, Apple Mail, Thunderbird, etc. via Proton Mail Bridge.', + valueType: 'BOOLEAN', + defaultValue: false, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + autoReply: { + description: + 'Allows you to set up automatic responses (auto-reply) for your incoming messages.', + valueType: 'BOOLEAN', + defaultValue: false, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + catchAllEmail: { + description: + "Ensures you receive all emails sent to your domain, even if the email address doesn't exist, no longer exists, or has a typo.", + valueType: 'BOOLEAN', + defaultValue: false, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + automaticForwarding: { + description: 'Automatically forward emails from Proton Mail to any other account.', + valueType: 'BOOLEAN', + defaultValue: false, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + autoDeleteSpamAndTrash: { + description: 'Automatically clear out messages older than 30 days from Trash and Spam.', + valueType: 'BOOLEAN', + defaultValue: false, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + scheduleAndSnoozeEmails: { + valueType: 'BOOLEAN', + defaultValue: false, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + protonScribeWritingAssistant: { + valueType: 'BOOLEAN', + defaultValue: false, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + desktopApp: { + valueType: 'BOOLEAN', + defaultValue: false, + type: 'INTEGRATION', + integrationType: 'EXTERNAL_DEVICE', + tag: 'Proton Mail', + }, + htmlSignatures: { + valueType: 'BOOLEAN', + defaultValue: true, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + endToEndEncryption: { + valueType: 'BOOLEAN', + defaultValue: true, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + passwordProtectedEmails: { + valueType: 'BOOLEAN', + defaultValue: true, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + encryptedContactDetails: { + valueType: 'BOOLEAN', + defaultValue: true, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + hideMyEmailAliases: { + valueType: 'BOOLEAN', + defaultValue: true, + type: 'DOMAIN', + tag: 'Proton Mail', + }, + }, + usageLimits: { + storageLimit: { + description: + 'Storage space is shared across Proton Mail, Proton Calendar, and Proton Drive.', + valueType: 'NUMERIC', + defaultValue: 1, + unit: 'GB', + type: 'NON_RENEWABLE', + trackable: true, + linkedFeatures: ['storage'], + }, + usersLimit: { + valueType: 'NUMERIC', + defaultValue: 1, + unit: 'user', + type: 'NON_RENEWABLE', + trackable: true, + }, + emailAdressesLimit: { + valueType: 'NUMERIC', + defaultValue: 1, + unit: 'email', + type: 'NON_RENEWABLE', + trackable: true, + linkedFeatures: ['emailAdresses'], + }, + customEmailDomainsLimit: { + valueType: 'NUMERIC', + defaultValue: 0, + unit: 'domain', + type: 'NON_RENEWABLE', + trackable: true, + linkedFeatures: ['customEmailDomains'], + }, + messagesLimit: { + valueType: 'NUMERIC', + defaultValue: 150, + unit: 'message', + type: 'RENEWABLE', + period: { + value: 1, + unit: 'DAY', + }, + linkedFeatures: ['messages'], + }, + foldersLimit: { + valueType: 'NUMERIC', + defaultValue: 3, + unit: 'folder', + type: 'NON_RENEWABLE', + trackable: true, + linkedFeatures: ['folders'], + }, + labelsLimit: { + valueType: 'NUMERIC', + defaultValue: 3, + unit: 'label', + type: 'NON_RENEWABLE', + trackable: true, + linkedFeatures: ['labels'], + }, + customFiltersLimit: { + valueType: 'NUMERIC', + defaultValue: 1, + unit: 'filter', + type: 'NON_RENEWABLE', + trackable: true, + linkedFeatures: ['customFilters'], + }, + attachmentsLimit: { + valueType: 'NUMERIC', + defaultValue: 25, + unit: 'MB', + type: 'NON_RENEWABLE', + trackable: false, + linkedFeatures: ['attachments'], + }, + hideMyEmailAliasesLimit: { + valueType: 'NUMERIC', + defaultValue: 10, + unit: 'email', + type: 'NON_RENEWABLE', + trackable: true, + linkedFeatures: ['hideMyEmailAliases'], + }, + }, + plans: { + PROTON_FREE: { + price: 0, + unit: 'user/month', + features: null, + usageLimits: null, + }, + MAIL_PLUS: { + price: 4.99, + unit: 'user/month', + features: { + priorityCustomerSupport: { + value: true, + }, + emergencyAccess: { + value: true, + }, + darkWebMonitoring: { + value: true, + }, + customEmailDomains: { + value: true, + }, + desktopApp: { + value: true, + }, + 'short@pm.meAddress': { + value: true, + }, + contactGroups: { + value: true, + }, + emailClientSupport: { + value: true, + }, + autoReply: { + value: true, + }, + catchAllEmail: { + value: true, + }, + automaticForwarding: { + value: true, + }, + autoDeleteSpamAndTrash: { + value: true, + }, + scheduleAndSnoozeEmails: { + value: true, + }, + }, + usageLimits: { + storageLimit: { + value: 15, + }, + emailAdressesLimit: { + value: 10, + }, + customEmailDomainsLimit: { + value: 1, + }, + messagesLimit: { + value: null, + }, + foldersLimit: { + value: null, + }, + labelsLimit: { + value: null, + }, + customFiltersLimit: { + value: null, + }, + }, + }, + PROTON_UNLIMITED: { + price: 9.99, + unit: 'user/month', + features: { + priorityCustomerSupport: { + value: true, + }, + protonSentinelProgram: { + value: true, + }, + emergencyAccess: { + value: true, + }, + darkWebMonitoring: { + value: true, + }, + desktopApp: { + value: true, + }, + customEmailDomains: { + value: true, + }, + 'short@pm.meAddress': { + value: true, + }, + contactGroups: { + value: true, + }, + emailClientSupport: { + value: true, + }, + autoReply: { + value: true, + }, + catchAllEmail: { + value: true, + }, + automaticForwarding: { + value: true, + }, + autoDeleteSpamAndTrash: { + value: true, + }, + scheduleAndSnoozeEmails: { + value: true, + }, + }, + usageLimits: { + storageLimit: { + value: 500, + }, + emailAdressesLimit: { + value: 15, + }, + customEmailDomainsLimit: { + value: 3, + }, + messagesLimit: { + value: null, + }, + foldersLimit: { + value: null, + }, + labelsLimit: { + value: null, + }, + customFiltersLimit: { + value: null, + }, + hideMyEmailAliasesLimit: { + value: null, + }, + }, + }, + PROTON_DUO: { + price: 19.99, + unit: 'user/month', + features: { + priorityCustomerSupport: { + value: true, + }, + protonSentinelProgram: { + value: true, + }, + emergencyAccess: { + value: true, + }, + darkWebMonitoring: { + value: true, + }, + desktopApp: { + value: true, + }, + customEmailDomains: { + value: true, + }, + 'short@pm.meAddress': { + value: true, + }, + contactGroups: { + value: true, + }, + emailClientSupport: { + value: true, + }, + autoReply: { + value: true, + }, + catchAllEmail: { + value: true, + }, + automaticForwarding: { + value: true, + }, + autoDeleteSpamAndTrash: { + value: true, + }, + scheduleAndSnoozeEmails: { + value: true, + }, + protonScribeWritingAssistant: { + value: true, + }, + }, + usageLimits: { + storageLimit: { + value: 2000, + }, + usersLimit: { + value: 2, + }, + emailAdressesLimit: { + value: 30, + }, + customEmailDomainsLimit: { + value: 3, + }, + messagesLimit: { + value: null, + }, + foldersLimit: { + value: null, + }, + labelsLimit: { + value: null, + }, + customFiltersLimit: { + value: null, + }, + hideMyEmailAliasesLimit: { + value: null, + }, + }, + }, + }, + }, + }, + }, +]; diff --git a/frontend/src/modules/presentation/layouts/router/header-routes.ts b/frontend/src/modules/presentation/layouts/router/header-routes.ts index 7319b2c..59008ce 100644 --- a/frontend/src/modules/presentation/layouts/router/header-routes.ts +++ b/frontend/src/modules/presentation/layouts/router/header-routes.ts @@ -20,6 +20,11 @@ export const headerRoutes: HeaderRoute[] = [ disabled: false, to: '/harvey', }, + { + name: 'HARVEY (Playground)', + disabled: false, + to: 'harvey-play', + }, ], }, { diff --git a/frontend/src/routes/router.tsx b/frontend/src/routes/router.tsx index 308526a..56c658d 100644 --- a/frontend/src/routes/router.tsx +++ b/frontend/src/routes/router.tsx @@ -49,7 +49,8 @@ export default function Router() { { element: , path: "/pricings/collections/new" }, { element: , path: "/pricings/collections/:ownerId/:collectionName" }, { element: , path: "/me/pricings" }, - { element: , path: "/harvey"} + { element: , path: "/harvey"}, + { element: , path: "/harvey-play"} ], }, {