# Knowledge-One-View-CLI API Map Read this file when Oracle DV behavior changes, a workbook tab must be retraced, or you need traced endpoint and default-filter details that are too low-level for the main skill guide. ## Quick Navigation - Workbook identity: [Traced Workbook](#traced-workbook) - Required auth/session state: [Required Session Inputs](#required-session-inputs) - Direct and fallback endpoints: [Traced Endpoints](#traced-endpoints) - Local metadata and field shortcuts: [Fast Local Metadata](#fast-local-metadata) - Common query patterns: [Fast Query Patterns](#fast-query-patterns) - Traced workbook-tab defaults: [Traced Tab Defaults](#traced-tab-defaults) ## Traced Workbook - Workbook URL: `https://salesintelligence-dv.oracle.com/ui/dv/ui/project.jsp?pageid=visualAnalyzer&reportmode=presentation&reportpath=%2F%40Catalog%2Fshared%2FTeam%20Sharing%20Area%2FLAD%2FLAD%20Sales%20Operations%2FLAD%20Production%2FLAD%20Knowledge%20One%20View` - Platform: Oracle Analytics / Oracle DV - Primary commercial subject area: `XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')` Keep the `ANNA.DE.MAURO@ORACLE.COM` token exactly as traced in XSA dataset references. It is part of the logical dataset identifier, not a disposable example. ## Required Session Inputs The direct API calls worked with: - Cookies from Playwright `storageState` - `authorization: session` - `x-csrf-token` - `x-bitech-clientbin` - `x-requested-with: XMLHttpRequest` - Workbook `referer` `x-bitech-clientbin` also appears in the workbook bootstrap HTML inside static asset paths such as: `/static/dv/oracle-jet-bundles/18.1.2.fd48e9d8895d/...` The refresh helper writes both the cookies and these request headers to disk: - `auth-state.json` - `session-meta.json` The fetch script also persists refreshed cookies plus updated CSRF/clientbin metadata back to those files after a session restore so later runs reuse the corrected backend state. When the saved files are missing or Oracle redirects a normal fetch call back to sign-in, the fetch script can now invoke the browser refresh helper automatically, then reload the session artifacts and retry the backend request. That makes the runtime/session path parameters operationally important, not just convenience flags. ## Traced Endpoints ### Preferred Direct Endpoint - `POST /ui/dv/ui/api/v1/sqlquery/execute` Use for custom Oracle logical SQL and for the reusable `opportunity-details` and `sr-details` views in this skill. Body shape: ```json { "aQueryInfos": [ { "sQuery": "SELECT valueof(RV_CURR_FISCAL_YEAR) FROM \"DV - SE Team\"", "nResultsLimit": 1 } ], "bUseCache": true } ``` Response shape: ```json { "aQueriesResults": [ { "eStatus": "FINISHED", "aColumnTypes": ["varchar"], "aResults": [["FY26"]] } ] } ``` ### Metadata / Bootstrap Endpoints - `POST /ui/dv/ui/api/v1/modelmetadata/reportdatasetsmetadatajson` Traced from `Data Quality`. Useful when Oracle changes dataset metadata or a new workbook view must be reconstructed. - `POST /ui/dv/ui/api/v1/infer/activities` Telemetry only. Ignore for data retrieval. - `GET /ui/dv/ui/api/v3/items-content` Static workbook assets such as images. Ignore for data retrieval. ### Workbook Rendering Endpoints - `POST /ui/dv/ui/api/v2/data/executeOrPoll` - `POST /ui/dv/ui/api/v2/data/poll` These drive the rendered workbook tabs. They are useful as fallback references because the POST payloads contain the exact traced columns and default filters, but they are noisier than `sqlquery/execute`. ## Fast Local Metadata The skill now keeps a local field catalog inside `scripts/fetch-sales-intelligence.mjs` for the most common logical fields, so repeated asks do not need rediscovery. Use: - `--catalog` - `--list-intents` - `--describe-intent srs-by-resource` - `--list-fields` - `--list-fields --entity Opportunity` - `--list-fields --role filter` - `--describe-field closeDate` Use the intent shortcuts first for the recurring asks that previously caused parameter guesswork: - `opportunities-close-date` Uses `--date` - `opportunities-close-month` Uses `--month` - `srs-by-resource` Uses `--resource` For ad hoc SQL, prefer template placeholders over raw Oracle expressions: - `{{opportunityId}}` - `{{closeDate}}` - `{{bookingValue}}` - `{{workloadAmount}}` - `{{subjectArea}}` - `{{securityEntryPointFilter}}` Render those placeholders locally without a backend call: ```powershell node .\scripts\fetch-sales-intelligence.mjs ` --render-sql ` --sql "SELECT {{opportunityId}}, {{closeDate}} FROM {{subjectArea}} WHERE {{securityEntryPointFilter}}" ``` For most ad hoc retrieval, prefer declarative query mode over raw SQL: ```powershell node .\scripts\fetch-sales-intelligence.mjs ` --query ` --select opportunityId,opportunityName,closeDate,bookingValue,workloadAmount ` --where "closeDate = DATE '2026-05-02'" ``` Query mode infers the safest source from the selected aliases. Commercial opportunity, revenue-line, hours, and presales-coverage aliases use org-wide-capable XSA sources in `--scope auto`; SR and session aliases remain on `DV - SE Team`, which is my-team-only. Important known fields: - `closeDate` `"Opportunity"."Close Date"` Use direct date literals: `DATE '2026-03-27'` - `opportunityId` `"Opportunity"."Opportunity ID"` - `opportunityName` `"Opportunity"."Opportunity Name"` - `opportunityStatus` `"Opportunity"."Status"` - `customerName` `"Customer"."Customer Name"` - `salesStage` `"Opportunity"."Sales Stage"` - `opportunityValue` `"Opportunity"."Opportunity Value"` - `bookingValue` `"Opportunity"."Opportunity Value"` Preferred alias when the intent is to compare booking against `workloadAmount`. - `workloadAmount` `"Opportunity"."Workload Amount"` - `optyCloseFiscalYear` `"Time (Close Date Opportunity)"."Opty Close Fiscal Year"` - `srNumber` `"Service Request"."SR Number"` - `srStatus` `"Service Request"."Status"` - `srTeamLevel1EmailAddress` `"SR Team"."SE Team Level 1 Email Address"` - `srTeamLevel2EmailAddress` `"SR Team"."SE Team Level 2 Email Address"` - `srTeamLevel3EmailAddress` `"SR Team"."SE Team Level 3 Email Address"` - `srTeamLevel4EmailAddress` `"SR Team"."SE Team Level 4 Email Address"` - `leadEmail` `"Service Request"."Lead Email"` Use only when the intent is explicitly to query the SR leader. ## Fast Query Patterns ### Ad Hoc SQL Without Oracle Expression Guesswork Use the local placeholder expansion: ```powershell node .\scripts\fetch-sales-intelligence.mjs ` --sql "SELECT {{opportunityId}}, {{opportunityName}}, {{closeDate}}, {{bookingValue}}, {{workloadAmount}} FROM {{subjectArea}} WHERE {{securityEntryPointFilter}} AND {{closeDate}} = DATE '2026-05-02'" ``` The script expands that locally to Oracle logical SQL before execution. When the `SELECT` list is simple enough, the script also infers output column names and returns object-shaped `records` instead of only raw row arrays. Explicit `AS` aliases are respected. ### Declarative Query Mode Use query mode when the ask is naturally "fields + filter + grouping + ordering": ```powershell node .\scripts\fetch-sales-intelligence.mjs ` --query ` --select opportunityId ` --measure sum:bookingValue:totalBooking,sum:workloadAmount:totalWorkload ` --where "closeDate = DATE '2026-05-02'" ` --group-by opportunityId ` --order-by totalBooking:desc ``` Query mode reduces guesswork by: - inferring the configured source automatically from the selected aliases - using org-wide XSA sources first for commercial aliases in `--scope auto` - injecting the standard team-security filter only when the selected source requires it or when `--scope my-team` is explicitly requested on an org-wide-capable source - accepting field aliases directly inside `--select` and `--where` - supporting aggregate specs like `sum:bookingValue:totalBooking` - returning object-shaped records with stable output columns ### Backend Scope Reality Use this when deciding whether a request can be answered org-wide or must be disclosed as current-team only: - `Knowledge DV - Opportunities - V2`, `Knowledge DV - Hours - V2`, `Knowledge DV - Presales Involvement Aux - V1`, and `Knowledge DV - Revn Lines by SE` are treated as org-wide-capable XSA datasets by the skill. In `--scope auto`, the script avoids the current-team security predicate unless the chosen view or intent explicitly needs it. - `--scope my-team` on an org-wide-capable source intentionally adds the current-team predicate so the same dataset can be used for a narrower current-team read. - `DV - SE Team` is effectively my-team-only for this skill. Use it for SRs, session context, and fields that have no org-wide source. Do not use it as a generic org-wide commercial fallback. - For mixed outputs, prefer `scope.components` and `scope.disclosureLines` over a single label because one component may be org-wide while another remains my-team-only. ### Opportunities By Close-Date Window Use the built-in intent or built-in view instead of rewriting SQL: Exact date: ```powershell node .\scripts\fetch-sales-intelligence.mjs ` --intent opportunities-close-date ` --date 2026-05-02 ``` Calendar month: ```powershell node .\scripts\fetch-sales-intelligence.mjs ` --intent opportunities-close-month ` --month 2026-04 ``` Explicit window: ```powershell node .\scripts\fetch-sales-intelligence.mjs ` --view opportunities-close-window ` --from-date today ` --to-date +7d ``` Primary logical SQL pattern: ```sql SELECT XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')."Columns"."Opportunity ID", XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')."Columns"."Opportunity Name", XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')."Columns"."Customer Name (Original)", XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')."Columns"."Opportunity Status", XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')."Columns"."Close Date", XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')."Columns"."Sales Stage", MAX(XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')."Columns"."Pipeline") AS bookingValue, MAX(XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')."Columns"."Pipeline") AS workloadAmount FROM XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2') WHERE XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')."Columns"."Close Date" >= DATE '2026-03-27' AND XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')."Columns"."Close Date" <= DATE '2026-04-03' GROUP BY XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')."Columns"."Opportunity ID", XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')."Columns"."Opportunity Name", XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')."Columns"."Customer Name (Original)", XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')."Columns"."Opportunity Status", XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')."Columns"."Close Date", XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')."Columns"."Sales Stage" ORDER BY 5, 1 ``` Fallback behavior: - if the ask is explicitly about the current user's team and the primary XSA query fails, the skill may rerun the commercial read against `DV - SE Team` - generic org-wide commercial reads stay on `Knowledge DV - Opportunities - V2` and do not fall back to `DV - SE Team` In the built-in `opportunities-close-window` view, the last two fields are returned from the org-wide XSA `Pipeline` column: - `bookingValue` -> `Knowledge DV - Opportunities - V2` / `"Columns"."Pipeline"` - `workloadAmount` -> `Knowledge DV - Opportunities - V2` / `"Columns"."Pipeline"` The `bookingValue` and `workloadAmount` names are preserved for user-facing compatibility with opportunity and workload reports. For org-wide query-mode reads from `Knowledge DV - Opportunities - V2`, prefer the same `Pipeline` backing field because direct row-level reads of `"Opportunity Value"` and `"Workload Amount"` can fail in Oracle DV. ### SRs By Resource Email Use the built-in intent or built-in view instead of writing custom SQL: Shortest path: ```powershell node .\scripts\fetch-sales-intelligence.mjs ` --intent srs-by-resource ` --resource resource.member ``` Equivalent direct view call: ```powershell node .\scripts\fetch-sales-intelligence.mjs ` --view srs-by-resource-email ` --resource resource.member ``` Default matching rule: ```sql ( "SR Team"."SE Team Level 1 Email Address" = 'resource.member@oracle.com' OR "SR Team"."SE Team Level 2 Email Address" = 'resource.member@oracle.com' OR "SR Team"."SE Team Level 3 Email Address" = 'resource.member@oracle.com' OR "SR Team"."SE Team Level 4 Email Address" = 'resource.member@oracle.com' ) ``` Only use lead matching when the ask is explicitly about the leader: ```powershell node .\scripts\fetch-sales-intelligence.mjs ` --view srs-by-resource-email ` --resource-email resource.member@oracle.com ` --match-role lead ``` The built-in `srs-by-resource-email` view also returns: - `bookingValue` -> `"Opportunity"."Opportunity Value"` - `workloadAmount` -> `"Opportunity"."Workload Amount"` The CLI now normalizes Oracle date strings in built-in output, so values such as `02-MAY-26` are returned as `2026-05-02`. ## Traced Tab Defaults ### Opportunity Details - Current canvas: `canvas!4` - Plugin: `oracle.bi.tech.table` - Default filters: - `Security.Entry Point in VALUEOF(NQ_SESSION."SEC_ARIA_SI-SR-TEAM")` - `Opty Close Fiscal Year = current FY` - `Opportunity Status in (Open, Won, Won Pending)` - `SE Team Active Flag = Y` - `SE Team Manager Flag = N` - `SR Source = Opportunity` - Important columns: - `Opportunity ID` - `# Opportunity Hours` - `Status` - `Workload Amount` - `Registry ID` - `Customer Name` - `Deal Qualification` - `Forecast Type Group` - `Opportunity Value` - `Current FY Opp Hours` - `Total Opportunity Hours` - `Opty Close Fiscal Quarter` - `# SEs With Effort` - `# Service Requests with Effort` - `Country` - `Sales Stage` - `Revenue Type Group` - `LOB Type` - `All Products` - `Opportunity Name` - `All Workloads` - `Covered Flag` - `All Implementers` - `Win Probability` ### SR Details - Current canvas: `canvas!5` - Plugin: `oracle.bi.tech.table` - Default filters: - `Security.Entry Point in VALUEOF(NQ_SESSION."SEC_ARIA_SI-SR-TEAM")` - `Opty Close Fiscal Year = current FY` - `Opportunity Status = Open` - `SE Team Active Flag = Y` - `SE Team Manager Flag = N` - Important columns: - `SR Number` - `Parent SR Number` - `Service Request Status` - `Title` - `Queue Name` - `Country` - `Registry ID` - `Customer Name` - `SR Source` - `Opportunity ID` - `Opportunity Name` - `Opportunity Status` - `Win Probability` - `Primary Pillar` - `Opportunity Value` - `Workload Amount` - `Total SR Hours` - `Lead Email` - `SR Requester Email Address` - `Create SR Day` - `Close SR Day` - `Customer Deadline` - `Internal Deadline` - `Last Effort` - `# Service Requests with Effort` - `# SEs With Effort` - `# Hours (Excl. Time Off)` - `Service Description` Current limitation: - `Parent SR Number` is visible in traced workbook metadata, but the direct logical SQL path used by the CLI still fails when selecting it explicitly. - Because of that, current internal-SR reconciliation in the skill uses a safe fallback: confirmed joins stay based on `Opportunity ID`, and additional internal-SR candidates are inferred only when the same resource has SRs for the same customer without a usable `Opportunity ID`. ### Data Quality The `Data Quality` tab used: - `POST /ui/dv/ui/api/v1/sqlquery/execute` - `POST /ui/dv/ui/api/v1/modelmetadata/reportdatasetsmetadatajson` That trace confirms the workbook can be queried directly through Oracle logical SQL without rendering the visualization. ### Commercial Opportunity Datasets - Current canvas: `canvas!15` - Traced endpoints: - `POST /ui/dv/ui/api/v2/data/executeOrPoll` - `POST /ui/dv/ui/api/v2/modelmetadata/subjectareas` - `POST /ui/dv/ui/api/v2/metadata/interactionpaths` - `POST /ui/dv/ui/api/v1/dataset/datasets/metadata` - `POST /ui/dv/ui/api/v1/modelmetadata/reportdatasetsmetadatajson` - Traced workbook sources: - `XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Opportunities - V2')` - `XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Hours - V2')` - `XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Presales Involvement Aux - V1')` - `XSA('ANNA.DE.MAURO@ORACLE.COM'.'Knowledge DV - Revn Lines by SE')` - Observed metadata lookup: - `XSA('ANNA.DE.MAURO@ORACLE.COM'.'One View Tech - Usage Information')` The first traced SA Attach visuals used `Knowledge DV - Opportunities - V2` as the active subject area and exposed these traced defaults: - Recommended default for generic opportunity retrieval: `--intent opportunities-default` - `Cluster = Brazil` - `Solution in ('Cloud Infrastructure - Workloads', 'Hardware - Bookings', 'On-Premise Technology - Bookings')` - `Sales Credit Type = QUOTA` - `Executive Product LOB in ('Cloud Infrastructure', 'Hardware', 'License')` - `Revenue Type Group in ('NEW', 'EXPANSION', 'WORKLOAD')` - Current skill default: `Opportunity Probability >= 0` - Older workbook traces sometimes showed `Opportunity Probability >= 40` - `Revenue Line Status = Open` for the open-pipeline visuals - `Revenue Line Status in ('Won', 'Won Pending')` for the won-pipeline visual - Open rows are allowed in any close year, while won rows are constrained to previous/current fiscal year - Compatibility note: older traces may still mention `License and Hardware` or `WORKLOADS`; the skill now normalizes those aliases to the backend values `License` + `Hardware` and `WORKLOAD`. Traced view mappings: - `view!1597` `oracle.bi.tech.ngperformancetile` Open pipeline tile based on `SUM(Pipeline)` from `Knowledge DV - Opportunities - V2` - `view!1612` `oracle.bi.tech.ngperformancetile` Won pipeline tile based on `SUM(Pipeline)` from `Knowledge DV - Opportunities - V2` - `view!1602` `oracle.bi.tech.chart.stackbar100` Involvement distribution chart based on `Pipeline`, `Revenue Line Probability`, `Presales Involvement Flag`, and `Opportunity Hours Attribute` The traced involvement bucket logic is: ```sql CASE WHEN SUM( CASE WHEN THEN "Opportunity Hours Attribute" END BY "Opportunity ID" ) > 0 THEN '1. My Team Involvement' WHEN "Presales Involvement Flag" = 'Y' THEN '2. Other Presales Involvement' ELSE '3. No Presales Involvement' END ``` Current skill coverage now maps that tab through these direct views: - `sa-attach-pipeline-details` - `sa-attach-open-pipeline` - `sa-attach-won-pipeline` - `sa-attach-involvement-distribution` - `sa-attach-hours-by-opportunity` - `sa-attach-presales-coverage`