Omni Content Builder
Créez, mettez à jour et gérez les documents et dashboards Omni par programmation via la CLI Omni — cycle de vie des documents, modèles de classeurs, filtres et contenu des dashboards.
Conseil : Utilisez
omni-model-explorerpour comprendre les champs disponibles etomni-content-explorerpour trouver les dashboards existants à modifier ou dont vous inspirer.
Problèmes connus et paramètres par défaut sûrs
- Exécutez toujours la boucle de validation complète — voir Validation Loops ci-dessous. Au minimum : validez le modèle, testez chaque requête via
omni query run, vérifiez la cohérence des spécifications de visualisation, et vérifiez le dashboard après sa création en le relisant et en exécutant ses requêtes. - Rendu des graphiques : Les types de graphiques complexes peuvent afficher « No chart available » dans l'interface Omni si
config,visTypeouprefersChartsont mal configurés. Utilisez par défautchartType: "table"pour un rendu fiable, et configurez les visualisations de graphiques dans l'interface Omni. - Chaque requête doit inclure au moins une mesure — une requête contenant uniquement des dimensions produit des tuiles vides/sans sens (par ex. juste des mois sans données).
- Utilisez
identifieret nonidpour tous les appels d'API de document —.idest null pour les documents de type classeur et échouera silencieusement. - Les filtres booléens peuvent être silencieusement supprimés quand un tableau
pivotsest présent (bug Omni signalé). Si les filtres booléens ne s'appliquent pas, supprimez le pivot et testez à nouveau. - Les mises à jour de dashboard sont des remplacements complets —
PUT /api/v1/documents/{documentId}remplace l'état complet du document. Lisez toujours le document existant d'abord et modifiez-le à partir de là, sinon vous perdrez les tuiles que vous n'avez pas incluses.
Prérequis
# Vérifiez que la CLI Omni est installée — sinon, demandez à l'utilisateur de l'installer
# Voir : https://github.com/exploreomni/cli#readme
command -v omni >/dev/null || echo "ERROR: Omni CLI is not installed."
# Affichez les profils disponibles et sélectionnez-en un
omni config show
# S'il existe plusieurs profils, demandez à l'utilisateur lequel utiliser, puis basculez :
omni config use <profile-name>
Découvrir les commandes
omni documents --help # Document operations
omni dashboards --help # Dashboard operations
omni models yaml-create --help # Writing model YAML
Conseil : Utilisez
-o jsonpour forcer une sortie structurée en JSON pour l'analyse programmatique, ou-o humanpour des tableaux lisibles. La valeur par défaut estauto(human dans un TTY, JSON quand pipeté).
Architecture des dashboards
Les dashboards Omni sont construits à partir de documents (classeurs). Chacun possède :
- Une vue de dashboard (la disposition publiée et partageable)
- Un ou plusieurs onglets de requête (requêtes sous-jacentes)
- Un modèle de classeur (personnalisations de modèle par dashboard)
Les documents peuvent être créés avec des configurations complètes de requête et visualisation via queryPresentations. Le réglage fin de la disposition des tuiles se fait mieux dans l'interface Omni.
Gestion des documents
Créer un document (nom uniquement)
omni documents create --body '{
"modelId": "your-model-id",
"name": "Q1 Revenue Report"
}'
Renvoie l'identifier, workbookId et dashboardId du nouveau document.
Créer un document avec requêtes et visualisations
Utilisez queryPresentations pour créer un document pré-rempli avec des onglets de requête et des configurations de visualisation.
Doc gap : La documentation de l'API create-document mentionne queryPresentations mais ne montre pas la structure complète. Cette section documente le format complet.
omni documents create --body '{
"modelId": "your-model-id",
"name": "Q1 Revenue Report",
"queryPresentations": [
{
"name": "Monthly Revenue Trend",
"topicName": "order_items",
"prefersChart": true,
"visType": "basic",
"fields": ["order_items.created_at[month]", "order_items.total_revenue"],
"query": {
"table": "order_items",
"fields": ["order_items.created_at[month]", "order_items.total_revenue"],
"sorts": [{ "column_name": "order_items.created_at[month]", "sort_descending": false }],
"filters": { "order_items.created_at": "this quarter" },
"limit": 100,
"join_paths_from_topic_name": "order_items",
"visConfig": { "chartType": "lineColor" }
},
"config": {}
}
]
}'
Conseil : Utilisez par défaut
"config": {}pour un rendu fiable — Omni générera automatiquement la configuration du graphique. Pour un style de graphique précis, construisez un dashboard de référence dans l'interface et relisez-le viaGET /api/v1/documents/{documentId}. Voir references/queryPresentations.md pour des exemples de configuration complets par type de graphique (KPI, ligne, barre, surface, camembert, scatter, etc.).
Structure de queryPresentation
Voir references/queryPresentations.md pour la référence complète — tableaux de paramètres pour les objets queryPresentation et query, exemples de type de graphique et avertissements lors de la réutilisation de présentations à partir de dashboards existants. Voir references/visConfig.md pour la référence complète des objets visConfig et config — toutes les valeurs chartType acceptées, structure de configuration pour chaque famille de graphiques (cartésienne, KPI, camembert, entonnoir, sankey, heatmap, carte) et exemples pratiques.
Points clés :
prefersChartdoit êtretruepour afficher un graphique (sinon affiche toujours un tableau)visType:"omni-kpi"pour les tuiles KPI,"basic"pour tous les autres graphiquesvisConfigse place dans l'objetquery(silencieusement supprimé s'il est placé en tant que frère)fieldsdoit être dupliqué aux niveauxqueryPresentationetquerymodelIdest hérité du document — non nécessaire dans laquery- Utilisez par défaut
"config": {}pour un rendu fiable — Omni génère automatiquement la configuration du graphique - Pour les détails complets du schéma
visConfigetconfig, voir references/visConfig.md
Pour apprendre la structure exacte d'un type de graphique, construisez un dashboard de référence dans l'interface Omni et relisez-le :
omni documents get <documentId>
Lors de la réutilisation de queryPresentations à partir de documents existants, supprimez toujours model_extension_id des objets query (provoque des erreurs « Chart unavailable ») et filtrez pour inclure uniquement les tuiles souhaitées.
Renommer un document
omni documents update <documentId> --name "Q1 Revenue Report (Updated)" --clear-existing-draft true
Passez --clear-existing-draft true si le document a un brouillon existant, sinon l'API renvoie 409 Conflict.
Supprimer un document
omni documents delete <documentId>
Supprime le document de façon réversible (le déplace à la Corbeille).
Déplacer un document
omni documents move <documentId> "/Marketing/Reports" --scope organization
Utilisez "null" comme chemin de dossier pour déplacer à la racine. --scope est optionnel — auto-calculé à partir du dossier de destination.
Dupliquer un document
omni documents duplicate <documentId> "Copy of Q1 Revenue Report" --folder-path "/Marketing/Reports"
Seuls les documents publiés peuvent être dupliqués. Les documents en brouillon retournent 404.
Mettre à jour un dashboard existant
Mettez à jour les tuiles, requêtes, filtres et visualisations sur un dashboard existant via PUT /api/v1/documents/{documentId}. C'est un remplacement complet — vous devez passer l'état complet souhaité du document, pas seulement les champs que vous voulez modifier.
Avertissement : Ce point de terminaison fonctionne uniquement avec les documents de dashboard. Les documents classeur uniquement ne sont pas supportés et retournent 400.
Remarque : Ce point de terminaison est documenté sur docs.omni.co mais peut ne pas apparaître dans l'OpenAPI spec sur
/openapi.jsonpour le moment.
Flux de mise à jour
Étape 1 — Lire le document existant pour obtenir son état actuel :
omni documents get <documentId>
Cela renvoie le document complet incluant queryPresentations, filterConfig, filterOrder, modelId, name et autres champs. Utilisez-le comme point de départ.
Étape 2 — Modifier la réponse selon les besoins :
- Pour ajouter une tuile : ajoutez une nouvelle entrée au tableau
queryPresentations - Pour supprimer une tuile : supprimez-la du tableau
queryPresentations - Pour modifier une tuile : modifiez l'
query,config,fieldsetc. de l'entrée pertinente - Pour mettre à jour les filtres : modifiez
filterConfigetfilterOrder
Étape 3 — PUT le document mis à jour :
# Remarque : Le remplacement complet du document via PUT n'est pas encore disponible dans la CLI.
# Utilisez HTTP direct pour le moment, ou utilisez omni documents update pour les mises à jour partielles (PATCH).
# Dérivez OMNI_BASE_URL et OMNI_API_TOKEN du profil actif pour cet appel.
curl -L -X PUT "$OMNI_BASE_URL/api/v1/documents/{documentId}" \
-H "Authorization: Bearer $OMNI_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"modelId": "your-model-id",
"name": "Q1 Revenue Report",
"facetFilters": false,
"refreshInterval": null,
"filterConfig": {},
"filterOrder": [],
"clearExistingDraft": true,
"queryPresentations": [ ... ]
}'
Le tableau queryPresentations utilise la même structure que la création de document — voir ci-dessus.
Champs obligatoires
| Paramètre | Type | Description |
|---|---|---|
modelId |
string | ID de modèle pour la transformation de requête |
name |
string | Nom du document (1–254 caractères) |
facetFilters |
boolean | Activer les filtres à facettes sur le dashboard |
refreshInterval |
integer ou null | Intervalle d'actualisation automatique en secondes (min 60), ou null pour désactiver |
filterConfig |
object | Configuration des filtres du dashboard — passez {} pour aucun filtre |
filterOrder |
array | IDs de filtres ordonnés — passez [] pour aucun filtre |
queryPresentations |
array | Au moins une présentation de requête requise (même structure que la création de document) |
Champs optionnels
| Paramètre | Type | Description |
|---|---|---|
clearExistingDraft |
boolean | Abandonnez le brouillon existant avant la mise à jour. Requis quand le document publié a un brouillon — sinon retourne 409 Conflict. |
documentMetadata |
object | Paramètres de présentation incluant la réductibilité des filtres |
Avertissements
- Remplacement complet : Chaque
queryPresentationque vous incluez devient une tuile. Toute tuile que vous omettez du tableau est supprimée. Commencez toujours à partir desqueryPresentationsdu document existant et modifiez à partir de là. - Conflit de brouillon : Les documents publiés avec des brouillons existants retournent 409 sauf si
clearExistingDraft: trueest défini. - Voir aussi Avertissements lors de la réutilisation de queryPresentations (par ex., suppression de
model_extension_id).
Mettre à jour le modèle d'un dashboard
Poussez des dimensions et mesures personnalisées vers un dashboard spécifique en écrivant dans son modèle de classeur. Chaque classeur a son propre modèle qui étend le modèle partagé — donc l'ID dans lequel vous écrivez du YAML est un ID de modèle, pas un « ID de classeur » séparé. C'est un flux en deux étapes :
Étape 1 — obtenir le document pour trouver son ID de modèle de classeur :
omni documents get <documentId>
# → utilisez le champ de niveau supérieur « modelId » de la réponse — c'EST l'ID du modèle du classeur
Remarque : La réponse ne contient pas de champ appelé
workbook_id. LemodelIdde niveau supérieur est le propre modèle du classeur (qui étend le modèle partagé) et c'est ce que vous transmettez àomni models yaml-create.
Étape 2 — POST du YAML vers le modèle du classeur avec mode: "extension" :
omni models yaml-create <workbookModelId> --body '{
"fileName": "order_items.view",
"yaml": "dimensions:\n is_high_value:\n sql: \"${sale_price} > 100\"\n label: High Value Order\nmeasures:\n high_value_count:\n sql: \"${order_items.id}\"\n aggregate_type: count_distinct\n label: High Value Orders",
"mode": "extension"
}'
Critique : Passez toujours
"mode": "extension"lors de l'édition d'une vue existante dans un modèle de classeur. La valeur par défaut est"combined", qui traite votre corps YAML comme la définition complète de la vue et marque tous les champs que vous n'avez pas inclus commeignored: true— cassant silencieusement les requêtes qui dépendent des champs de la vue de base partagée. Le mode extension superpose vos nouvelles dimensions et mesures sur la vue héritée.
fileName doit être "model", "relationships" ou se terminer par .view ou .topic. La valeur yaml est une chaîne YAML (pas un objet JSON). L'écriture dans un modèle de classeur ignore complètement la synchronisation git — l'autorisation est toujours vérifiée par rapport aux autorisations du modèle de base partagé sous-jacent.
Vérifier que l'extension a fonctionné
Après l'écriture, confirmez que les champs de la vue de base sont toujours disponibles en interrogeant l'un d'eux :
omni query run --body '{
"query": {
"modelId": "<workbookModelId>",
"table": "order_items",
"fields": ["order_items.id", "order_items.high_value_count"],
"limit": 1,
"join_paths_from_topic_name": "order_items"
}
}'
Si la réponse génère une erreur sur un champ qui existe dans le modèle partagé (par ex. order_items.id), votre écriture a probablement utilisé le mode combined et ignoré les champs hérités. Réexécutez l'étape 2 avec "mode": "extension".
Filtres de dashboard
Obtenir les filtres actuels
omni dashboards get-filters <dashboardId>
Mettre à jour les filtres
Les filtres peuvent être mis à jour via deux approches :
PUT /api/v1/documents/{documentId}(recommandé) — mettez à jour les filtres dans le cadre d'une mise à jour complète du document. IncluezfilterConfigetfilterOrderaux côtés dequeryPresentationset d'autres champs obligatoires. Voir la section Mettre à jour un dashboard existant.omni dashboards update-filters <dashboardId>— mise à jour partielle des filtres. A été signalé pour retourner 405 ou 500 dans certaines configurations.
Pour les nouveaux dashboards, la façon la plus fiable est d'inclure filterConfig et filterOrder dans l'appel initial omni documents create. Voir references/filterConfig.md pour des exemples complets de chaque type de filtre.
omni documents create --body '{
"modelId": "your-model-id",
"name": "Filtered Dashboard",
"filterConfig": {
"date_filter": {
"type": "date",
"label": "Date Range",
"fieldName": "order_items.created_at",
"kind": "TIME_FOR_INTERVAL_DURATION",
"ui_type": "PAST",
"left_side": "6 months ago",
"right_side": "6 months"
},
"state_filter": {
"type": "string",
"label": "State",
"kind": "EQUALS",
"fieldName": "users.state",
"values": []
}
},
"filterOrder": ["date_filter", "state_filter"],
"queryPresentations": [...]
}'
Les clés dans filterConfig (par ex. "date_filter") sont des IDs arbitraires — elles doivent correspondre aux entrées dans filterOrder. Pour apprendre la structure exacte des filtres, lisez les filtres d'un dashboard existant avec omni dashboards get-filters <dashboardId>.
Types de filtres
Plage de dates (relative) — type: "date", kind: "TIME_FOR_INTERVAL_DURATION", nécessite fieldName
Plage de dates (absolue) — type: "date", kind: "WITHIN_RANGE", nécessite fieldName
Menu déroulant de chaîne — type: "string", kind: "EQUALS", nécessite fieldName, values: []
Bascule booléenne — type: "boolean", nécessite fieldName
Filtre masqué — tout filtre avec "hidden": true (appliqué mais non visible)
Critique : Chaque filtre DOIT inclure
fieldNameavec le nom de champ complètement qualifié (par ex."order_items.created_at"). Sans lui, le filtre ne se liera à aucune colonne. Pour les filtres de date, n'INCLUEZ PAS de crochet d'intervalle de temps dansfieldName.
Contrôles (séparés des filtres)
Les contrôles changent les champs ou la granularité que les tuiles affichent. Ils se trouvent dans un tableau controls (NON dans filterConfig), mais leurs IDs sont inclus dans filterOrder.
Sélecteur d'intervalle de temps — type: "FIELD_SELECTION", kind: "TIMEFRAME" avec un tableau d'options
Sélecteur de champ — type: "FIELD_SELECTION", kind: "FIELD" avec un tableau d'options
Voir references/filterConfig.md pour des exemples complets de filtres et contrôles.
Modèles d'URL
Après avoir créé ou trouvé du contenu, fournissez toujours à l'utilisateur un lien direct :
Dashboard: {OMNI_BASE_URL}/dashboards/{identifier}
Workbook: {OMNI_BASE_URL}/w/{identifier}
L'identifier provient du champ identifier du document dans les réponses d'API (pas id, qui est null pour les classeurs).
Boucles de validation
Chaque construction ou mise à jour de dashboard doit inclure une validation avant et après la création. Les tuiles cassées, les références de champs incorrects et les spécifications de visualisation mal configurées sont des défaillances silencieuses — le dashboard s'affiche mais les tuiles affichent « Chart unavailable » ou « No data » sans erreur au niveau de l'API.
Étape 1 : Valider le modèle
Avant de construire des requêtes, confirmez que le modèle sous-jacent est en bon état :
omni models validate <modelId>
Vérifiez la réponse pour les erreurs (pas seulement les avertissements). Si is_warning est false sur un problème, le champ ou la jonction peut être cassé et les requêtes le référençant échoueront silencieusement sur le dashboard.
Étape 2 : Tester chaque requête via l'exécution
Exécutez chaque requête prévue via omni query run avant de l'inclure dans un dashboard. C'est l'étape de validation la plus importante.
omni query run --body '{
"query": {
"modelId": "your-model-id",
"table": "order_items",
"fields": ["order_items.created_at[month]", "order_items.total_revenue"],
"filters": { "order_items.created_at": "last 90 days" },
"limit": 10,
"join_paths_from_topic_name": "order_items"
}
}'
Ce qu'il faut vérifier dans la réponse :
- Aucun champ d'erreur — si la réponse contient une clé
error, la requête est cassée. Corrigez avant de continuer. summary.row_count> 0 — une requête qui retourne zéro ligne s'affichera comme une tuile vide. C'est peut-être correct (pas de données pour la plage de filtre) mais vaut la peine d'être signalé.- Incluez vos filtres de dashboard — transmettez les mêmes filtres que vous prévoyez d'utiliser dans
filterConfigcomme filtres au niveau de la requête ici. Cela détecte les mauvaises expressions de filtre (par ex. nom de champ incorrect, syntaxe non supportée) avant qu'elles ne deviennent des problèmes au niveau du dashboard. - Requêtes longues — si la réponse inclut
remaining_job_ids, interrogez avecomni query wait --jobids <ids>jusqu'à complétion, puis vérifiez le résultat final pour les erreurs.
Faites cela pour chaque requête que vous prévoyez d'inclure comme tuile. Un dashboard avec 5 tuiles nécessite 5 requêtes validées.
Étape 3 : Valider la cohérence de la spécification de visualisation
Avant d'assembler les queryPresentations, vérifiez la configuration de visualisation de chaque tuile par rapport à ces règles. Les incohérences causent « No chart available » ou un retour silencieux au rendu en tableau.
Vérifications de cohérence obligatoires :
| Règle | Ce qu'il faut vérifier |
|---|---|
prefersChart doit être true pour les graphiques |
Si false ou omis, Omni affiche un tableau indépendamment d'autres paramètres de visualisation |
visType doit correspondre à la catégorie de graphique |
"omni-kpi" pour les tuiles KPI, "basic" pour tous les autres types de graphique (ligne, barre, surface, scatter, camembert, tableau) |
visConfig.chartType doit être valide |
Doit être parmi : table, kpi, lineColor, barColor, areaColor, stackedBarColor, pie, scatter, heatmap, map |
Les champs config doivent correspondre au type de graphique |
Les graphiques cartésiens (ligne, barre, surface, scatter) nécessitent mark, series, tooltip, version, behaviors, configType: "cartesian", _dependentAxis |
_dependentAxis doit correspondre à l'orientation |
"y" pour les graphiques verticaux (ligne, barre verticale, surface, scatter), "x" pour les graphiques à barres horizontales |
mark.type doit correspondre à visConfig.chartType |
lineColor → "line", barColor/stackedBarColor → "bar", areaColor → "area", scatter → "point" |
series[].yAxis ou series[].xAxis |
Doit utiliser yAxis: "y" pour les graphiques verticaux, xAxis: "x" pour les barres horizontales |
Les tuiles KPI nécessitent markdownConfig |
config.markdownConfig tableau avec au moins une entrée référençant un champ de la requête |
fields doit être dupliqué |
Le tableau fields doit apparaître à la fois au niveau queryPresentation ET à l'intérieur de l'objet query |
| Chaque requête doit avoir une mesure | Les requêtes avec uniquement des dimensions produisent des tuiles vides/cassées |
Conseil : En cas de doute sur une configuration de visualisation, utilisez par défaut
"prefersChart": falseavec"config": {}pour afficher comme un tableau. Les tableaux fonctionnent toujours. Configurez les graphiques dans l'interface Omni après.
Étape 4 : Vérification post-création
Après avoir créé ou mis à jour un dashboard, lisez toujours le document et vérifiez que les tuiles fonctionnent :
4a. Relire le document :
omni documents get <documentIdentifier>
Vérifiez que :
- La réponse inclut toutes les
queryPresentationsattendues (le nombre correspond à ce que vous avez envoyé) - Aucune entrée
queryPresentationsn'a d'objetquerynull ou manquant - L'
identifierest présent (vous en aurez besoin pour le lien de partage)
4b. Exécutez les requêtes du dashboard pour vérifier qu'elles s'exécutent :
# Extrayez les requêtes alimentant les tuiles du dashboard
omni documents get-queries <documentIdentifier>
Cela retourne les objets query pour chaque tuile. Exécutez chacun pour confirmer qu'il s'exécute sans erreurs :
# Pour chaque requête retournée, exécutez-la
omni query run --body '{
"query": <query-object-from-get-queries>,
"resultType": "csv"
}'
L'utilisation de "resultType": "csv" facilite la vérification rapide que les données semblent raisonnables (colonnes correctes, lignes non vides, plages de valeurs attendues).
Ce qu'il faut vérifier :
- La requête de chaque tuile s'exécute sans erreur
summary.row_count> 0 pour les tuiles qui doivent afficher des données- Pas de
remaining_job_idsinattendus (qui peuvent indiquer des problèmes de dépassement de délai d'exécution de requête)
4c. Si une requête échoue : Le dashboard a une tuile cassée. Soit mettez à jour le document pour corriger la requête (via PUT /api/v1/documents/{documentId}), soit signalez le problème à l'utilisateur avant de partager le lien.
Résumé de la liste de contrôle de validation
| Phase | Vérification | Outil |
|---|---|---|
| Pré-build | Le modèle n'a pas d'erreurs | omni models validate <modelId> |
| Pré-build | Chaque requête s'exécute correctement | omni query run par requête |
| Pré-build | Chaque requête retourne des lignes | Vérifiez summary.row_count |
| Pré-build | Les filtres s'analysent correctement | Incluez les filtres dans omni query run |
| Pré-build | Les spécifications de visualisation sont cohérentes internement | Vérification manuelle par rapport aux règles ci-dessus |
| Post-build | Le document a toutes les tuiles attendues | omni documents get et comptez queryPresentations |
| Post-build | Toutes les requêtes de tuile s'exécutent sur le dashboard | omni documents get-queries + omni query run chacune |
| Post-build | Les données semblent correctes | Vérification rapide de la sortie CSV pour la pertinence |
Flux de travail de construction recommandés
Basé sur l'API (Création complètement programmatique)
- Découvrez les champs — utilisez
omni-model-explorerpour trouver le sujet + les champs - Validez le modèle — exécutez
omni models validate <modelId>et vérifiez les erreurs - Testez chaque requête — exécutez chaque requête que vous prévoyez d'inclure via
omni query run(en utilisantomni-query) avant de construire le dashboard. Incluez les mêmes filtres que vous prévoyez d'utiliser dansfilterConfigcomme filtres au niveau de la requête pour confirmer qu'ils s'analysent correctement. Cela détecte les fautes de frappe de nom de champ, les chemins de jonction manquants, les mauvaises expressions de filtre et les erreurs de permission avant qu'elles ne deviennent des tuiles cassées. - Validez les spécifications de visualisation — vérifiez les
visType/chartType/config/prefersChartde chaque tuile par rapport aux règles de cohérence avant d'assembler le payload - Créez le document — un seul
omni documents createavecqueryPresentations+filterConfig+filterOrdertous dans un appel - Vérifiez le dashboard — relisez-le avec
omni documents get, confirmez que toutes les tuiles sont présentes, puis exécutez la requête de chaque tuile viaomni documents get-queries+omni query runpour vérifier qu'il n'y a pas de tuiles cassées - Partagez le lien — retournez
{OMNI_BASE_URL}/dashboards/{identifier}à l'utilisateur (uniquement après que la vérification passe) - Affinez dans l'interface — la disposition des tuiles, le style des graphiques et la configuration avancée se font mieux dans l'interface Omni
Mettre à jour un dashboard existant
- Trouvez le dashboard — utilisez
omni-content-explorerouomni documents listpour le localiser - Lisez son état actuel —
omni documents get <documentId>pour obtenir le document complet incluantqueryPresentations,filterConfig, etc. - Modifiez — ajoutez, supprimez ou modifiez les entrées du tableau
queryPresentations; mettez à jourfilterConfig/filterOrderselon les besoins - Validez les modifications — exécutez les requêtes nouvelles ou modifiées via
omni query runpour confirmer qu'elles fonctionnent. Vérifiez les spécifications de visualisation modifiées par rapport aux règles de cohérence. - PUT la mise à jour —
PUT /api/v1/documents/{documentId}avec le document complet modifié etclearExistingDraft: true - Vérifiez la mise à jour — relisez le document avec
omni documents getet confirmez que les tuiles attendues sont présentes. Exécutezomni documents get-queries+omni query runsur les tuiles modifiées pour vérifier qu'elles s'exécutent sans erreur. - Partagez le lien — retournez
{OMNI_BASE_URL}/dashboards/{identifier}à l'utilisateur (uniquement après que la vérification passe)
Basé sur l'interface (Approche hybride)
- Préparez le modèle — utilisez
omni-model-builderpour les champs partagés, ouupdate-modelpour les champs spécifiques au dashboard - Construisez dans l'interface — ajoutez des tuiles, choisissez les types de visualisation, arrangez la grille, définissez les filtres
- Itérez via l'API — mettez à jour les champs du modèle, extrayez les requêtes pour réutilisation
Téléchargements de dashboard
# Démarrer le téléchargement asynchrone
omni dashboards download <dashboardId> --body '{ "format": "pdf" }'
# Interroger l'état du travail
omni dashboards download-status <dashboardId> <jobId>
Référence de documentation
- API Documents · Update Document · Dashboard Filters · Dashboard Downloads · Query API · Schedules API · Visualization Types
- Références de skill : queryPresentations.md · visConfig.md · filterConfig.md
Skills associées
- omni-model-explorer — comprendre les champs disponibles
- omni-model-builder — créer des champs de modèle partagé
- omni-query — tester les requêtes avant de les ajouter aux dashboards
- omni-content-explorer — trouver les dashboards existants pour apprendre
- omni-embed — intégrer les dashboards que vous avez construits dans des applications externes