Compare commits

...

8 Commits

Author SHA1 Message Date
Maxime Beauchemin
f6a601ceaa refactor: clean up OpenAPI normalization script and remove transient files
🧹 Clean up orval build artifacts and improve script linting compliance

**Changes:**
• **Remove transient files**: Delete openapi-raw.json and openapi-normalized.json
  (these are build artifacts that should not be committed)
• **Fix ESLint compliance**: Add appropriate disable comments for Node.js build script patterns
• **Remove unused imports**: Clean up unused path import

**Rationale:**
The JSON files are generated during build and already excluded in .gitignore.
Build scripts have different linting requirements than React components.

**Result:**
Clean repository with only source code committed, properly linted build script.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-01 00:53:39 -07:00
Maxime Beauchemin
86afbc47f5 refactor: simplify TanStack Query cache invalidation pattern
🎯 Simplified cache invalidation to use the most straightforward React Query pattern

**Changes:**
• **Removed complex optimistic updates**: Keep it simple with basic cache invalidation
• **Updated comments**: Clarify that we're using simple invalidation pattern
• **Legacy compatibility**: Note that onSave callback is kept but not used

**Pattern:**
Simple React Query flow: Mutation → Success → Invalidate → Auto-refresh

**Result:**
Clean, maintainable cache invalidation following React Query best practices.
ChartList still auto-refreshes after PropertiesModal edits.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-01 00:42:01 -07:00
Maxime Beauchemin
3659f16c00 fix: complete TanStack Query cache invalidation for chart list auto-refresh
 Fixed cache invalidation issue preventing ChartList from auto-refreshing after PropertiesModal edits

**Key Fixes:**
• **Cache invalidation**: Use predicate matching for proper query key invalidation
• **Simplified pattern**: Remove complex optimistic updates and query cancellation
• **Legacy removal**: Remove manual `setCharts` callback - TanStack Query handles cache automatically
• **Performance**: No unnecessary cache invalidation on mutation errors

**Result:**
ChartList now automatically refreshes when chart properties are edited via PropertiesModal,
completing the orval + TanStack Query integration POC with proper React Query patterns.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-01 00:36:37 -07:00
Maxime Beauchemin
5c9e3f78ce feat: breakthrough - OpenAPI normalization for orval compatibility
- Create normalization script to fix Flask-AppBuilder + orval incompatibilities
- Add build workflow: extract → normalize → generate for complete automation
- Fix Union type anyOf → oneOf conversion for orval compatibility
- Fix bare array schemas by adding missing items properties
- Successfully generate 200+ TypeScript types from real Superset OpenAPI spec
- Document approach and future TODOs in PROJECT.md

Major breakthrough: Proves orval can work with real Superset API spec
through systematic normalization of Flask-AppBuilder patterns.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 22:21:12 -07:00
Maxime Beauchemin
2b9e3d11dd peerdep 2025-08-31 18:53:09 -07:00
Maxime Beauchemin
9593b516d3 fix: align TanStack Query versions for React 17 compatibility
- Change superset-ui-core from @tanstack/react-query v5.85.6 to v4.40.1
- Aligns with main package version for React 17 compatibility
- Fixes npm install dependency resolution conflicts

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 18:49:15 -07:00
Maxime Beauchemin
9762673a97 feat: complete orval TanStack Query integration with stable build
- Add missing dependencies: @deck.gl/widgets, @deck.gl/mesh-layers, @deck.gl/extensions, global-box, currencyformatter.js
- Override query-string to v6.14.1 for compatibility with use-query-params
- Add @tanstack/react-query to main dependencies for RootContextProviders
- Add QueryClientProvider to RootContextProviders for TanStack Query support
- Implement rison encoding in mutator (Superset API standard)
- Replace useListViewResource with pure orval useGetCharts hook in ChartList
- Add local pagination state with proper ListView integration
- Fix TypeScript permissions function with proper type annotations

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 18:47:46 -07:00
Maxime Beauchemin
b751b61c3b feat: Add orval integration POC with TanStack Query and real Chart migrations
This POC demonstrates complete orval + TanStack Query integration for Superset,
replacing manual SupersetClient calls with auto-generated, type-safe hooks.

## Key Achievements

### Orval + TanStack Query Foundation
- Complete orval setup with TanStack Query hook generation
- Charts API client with 7 hooks (useGetCharts, useCreateChart, etc.)
- 14 TypeScript interfaces with full type safety
- Custom mutator handling URL prefixes and CSRF token integration
- Clean API exports via @superset-ui/core/api import path

### Real Production Code Migrations
- ChartList: Migrated from useListViewResource to useGetCharts hook
- PropertiesModal: Migrated from SupersetClient.put to useUpdateChart mutation
- Demonstrates actual transformation from manual → auto-generated patterns

### Technical Architecture
- Build tooling at superset-frontend level (orval config, npm scripts)
- Generated code in packages/superset-ui-core/src/orval-generated-code/
- Crystal-clear organization (generated code gets bulldozed, custom code preserved)
- TanStack Query dependency added for modern React patterns
- Sectional generation approach for immediate value delivery

## Generated Features
- Automatic caching and background refresh
- Optimistic updates for mutations
- Type-safe query parameters and responses
- Smart cache invalidation patterns
- Reduced boilerplate (15+ lines of state management → 1 hook call)

## Strategic Value
This POC proves orval can transform Superset's frontend development experience
while providing a clear path for gradual adoption without disrupting existing code.
Foundation established for expanding to all 176 Superset API endpoints.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-31 14:27:22 -07:00
572 changed files with 49459 additions and 2302 deletions

View File

@@ -49,7 +49,7 @@ repos:
hooks:
- id: check-docstring-first
- id: check-added-large-files
exclude: ^.*\.(geojson)$|^docs/static/img/screenshots/.*|^superset-frontend/CHANGELOG\.md$
exclude: ^.*\.(geojson)$|^docs/static/img/screenshots/.*|^superset-frontend/CHANGELOG\.md$|^superset-frontend/openapi-raw\.json$|^docs/static/resources/openapi\.json$|^superset/static/openapi\.json$
- id: check-yaml
exclude: ^helm/superset/templates/
- id: debug-statements

View File

@@ -32,3 +32,6 @@ esm/
lib/
tmp/
storybook-static/
# Orval generated code
packages/superset-ui-core/src/orval-generated-code/

View File

@@ -3,3 +3,7 @@ cypress/screenshots
cypress/videos
src/temp
.temp_cache/
# Orval OpenAPI generation artifacts
openapi-raw.json
openapi-normalized.json

View File

@@ -0,0 +1,52 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
// eslint-disable-next-line import/no-extraneous-dependencies
import { defineConfig } from 'orval';
export default defineConfig({
superset: {
input: {
target: './openapi-normalized.json', // Pre-normalized OpenAPI spec
validation: false,
},
output: {
mode: 'tags-split',
target: './packages/superset-ui-core/src/orval-generated-code',
client: 'react-query', // 🚀 Generate TanStack Query hooks!
schemas: './packages/superset-ui-core/src/orval-generated-code/types', // Types inside generated folder
mock: false,
clean: true,
prettier: true,
override: {
mutator: {
path: './packages/superset-ui-core/src/api/mutator.ts', // Custom code outside generated folder
name: 'customInstance',
},
query: {
useQuery: true, // Generate useQuery hooks
useMutation: true, // Generate useMutation hooks
useInfinite: false, // Disable infinite queries for now
},
tags: {
charts: true, // Only generate Charts endpoints
},
},
},
},
});

File diff suppressed because it is too large Load Diff

View File

@@ -71,6 +71,10 @@
"tdd": "cross-env NODE_ENV=test NODE_OPTIONS=\"--max-old-space-size=8192\" jest --watch",
"test": "cross-env NODE_ENV=test NODE_OPTIONS=\"--max-old-space-size=8192\" jest --max-workers=80% --silent",
"test-loud": "cross-env NODE_ENV=test NODE_OPTIONS=\"--max-old-space-size=8192\" jest --max-workers=80%",
"openapi:extract": "cp ../superset/static/openapi.json ./openapi-raw.json",
"openapi:normalize": "node scripts/normalize-openapi.js openapi-raw.json openapi-normalized.json",
"orval:generate": "orval --config orval.config.ts",
"orval:regenerate-client": "npm run openapi:extract && npm run openapi:normalize && npm run orval:generate",
"type": "tsc --noEmit",
"update-maps": "cd plugins/legacy-plugin-chart-country-map/scripts && jupyter nbconvert --to notebook --execute --inplace --allow-errors --ExecutePreprocessor.timeout=1200 'Country Map GeoJSON Generator.ipynb'",
"validate-release": "../RELEASING/validate_this_release.sh"
@@ -222,6 +226,9 @@
"@babel/runtime-corejs3": "^7.28.2",
"@babel/types": "^7.26.9",
"@cypress/react": "^8.0.2",
"@deck.gl/extensions": "^9.1.14",
"@deck.gl/mesh-layers": "^9.1.14",
"@deck.gl/widgets": "^9.1.14",
"@emotion/babel-plugin": "^11.13.5",
"@emotion/jest": "^11.13.0",
"@hot-loader/react-dom": "^17.0.2",
@@ -279,6 +286,7 @@
"cross-env": "^7.0.3",
"css-loader": "^7.1.2",
"css-minimizer-webpack-plugin": "^7.0.2",
"currencyformatter.js": "^2.2.0",
"eslint": "^8.56.0",
"eslint-config-airbnb": "^19.0.4",
"eslint-config-prettier": "^7.2.0",
@@ -302,6 +310,7 @@
"eslint-plugin-theme-colors": "file:eslint-rules/eslint-plugin-theme-colors",
"fetch-mock": "^11.1.5",
"fork-ts-checker-webpack-plugin": "^9.0.2",
"global-box": "^2.0.2",
"history": "^5.3.0",
"html-webpack-plugin": "^5.6.3",
"imports-loader": "^5.0.0",
@@ -313,6 +322,8 @@
"lerna": "^8.2.1",
"mini-css-extract-plugin": "^2.9.0",
"open-cli": "^8.0.0",
"openapi3-ts": "^4.5.0",
"orval": "^7.11.2",
"po2json": "^0.4.5",
"prettier": "3.6.2",
"prettier-plugin-packagejson": "^2.5.3",
@@ -341,6 +352,7 @@
"webpack-visualizer-plugin2": "^1.2.0"
},
"peerDependencies": {
"@tanstack/react-query": "^4.40.1",
"ace-builds": "^1.41.0",
"core-js": "^3.38.1",
"handlebars": "^4.7.8",
@@ -357,7 +369,8 @@
"puppeteer": "^22.4.1",
"underscore": "^1.13.7",
"jspdf": "^3.0.1",
"nwsapi": "^2.2.13"
"nwsapi": "^2.2.13",
"query-string": "^6.14.1"
},
"readme": "ERROR: No README data found!",
"scarfSettings": {

View File

@@ -28,20 +28,22 @@
"@babel/runtime": "^7.28.2",
"@fontsource/fira-code": "^5.2.6",
"@fontsource/inter": "^5.2.6",
"@tanstack/react-query": "^4.40.1",
"@types/json-bigint": "^1.0.4",
"@visx/responsive": "^3.12.0",
"ace-builds": "^1.43.1",
"ag-grid-community": "^34.0.2",
"ag-grid-react": "34.0.2",
"brace": "^0.11.1",
"classnames": "^2.2.5",
"csstype": "^3.1.3",
"core-js": "^3.38.1",
"csstype": "^3.1.3",
"d3-format": "^1.3.2",
"dayjs": "^1.11.13",
"d3-interpolate": "^3.0.1",
"d3-scale": "^4.0.2",
"d3-time": "^3.1.0",
"d3-time-format": "^4.1.0",
"dayjs": "^1.11.13",
"dompurify": "^3.2.4",
"fetch-retry": "^6.0.0",
"handlebars": "^4.7.8",
@@ -51,13 +53,13 @@
"pretty-ms": "^9.2.0",
"re-resizable": "^6.11.2",
"react-ace": "^14.0.1",
"react-js-cron": "^5.2.0",
"react-draggable": "^4.5.0",
"react-error-boundary": "^6.0.0",
"react-js-cron": "^5.2.0",
"react-markdown": "^8.0.7",
"react-resize-detector": "^7.1.2",
"react-syntax-highlighter": "^15.4.5",
"react-ultimate-pagination": "^1.3.2",
"react-error-boundary": "^6.0.0",
"react-markdown": "^8.0.7",
"regenerator-runtime": "^0.14.1",
"rehype-raw": "^7.0.0",
"rehype-sanitize": "^6.0.0",
@@ -65,7 +67,6 @@
"reselect": "^5.1.1",
"rison": "^0.1.1",
"seedrandom": "^3.0.5",
"@visx/responsive": "^3.12.0",
"xss": "^1.0.14"
},
"devDependencies": {
@@ -75,13 +76,13 @@
"@types/d3-scale": "^2.1.1",
"@types/d3-time": "^3.0.4",
"@types/d3-time-format": "^4.0.3",
"@types/react-table": "^7.7.20",
"@types/react-syntax-highlighter": "^15.5.13",
"@types/jquery": "^3.5.8",
"@types/lodash": "^4.17.20",
"@types/math-expression-evaluator": "^1.3.3",
"@types/node": "^22.10.3",
"@types/prop-types": "^15.7.15",
"@types/react-syntax-highlighter": "^15.5.13",
"@types/react-table": "^7.7.20",
"@types/rison": "0.1.0",
"@types/seedrandom": "^3.0.8",
"fetch-mock": "^11.1.4",
@@ -90,7 +91,6 @@
"timezone-mock": "1.3.6"
},
"peerDependencies": {
"antd": "^5.24.6",
"@emotion/cache": "^11.4.0",
"@emotion/react": "^11.4.1",
"@emotion/styled": "^11.14.1",
@@ -103,6 +103,7 @@
"@types/react-loadable": "*",
"@types/react-window": "^1.8.8",
"@types/tinycolor2": "*",
"antd": "^5.24.6",
"nanoid": "^5.0.9",
"react": "^17.0.2",
"react-dom": "^17.0.2",
@@ -114,24 +115,29 @@
},
"exports": {
".": {
"types": "./lib/index.d.ts",
"import": "./esm/index.js",
"require": "./lib/index.js",
"types": "./lib/index.d.ts"
"require": "./lib/index.js"
},
"./components/*": {
"types": "./lib/components/*/index.d.ts",
"import": "./esm/components/*/index.js",
"require": "./lib/components/*/index.js",
"types": "./lib/components/*/index.d.ts"
"require": "./lib/components/*/index.js"
},
"./components": {
"types": "./lib/components/index.d.ts",
"import": "./esm/components/index.js",
"require": "./lib/components/index.js",
"types": "./lib/components/index.d.ts"
"require": "./lib/components/index.js"
},
"./utils/*": {
"types": "./lib/utils/*.d.ts",
"import": "./esm/utils/*.js",
"require": "./lib/utils/*.js",
"types": "./lib/utils/*.d.ts"
"require": "./lib/utils/*.js"
},
"./api": {
"types": "./lib/api/index.d.ts",
"import": "./esm/api/index.js",
"require": "./lib/api/index.js"
}
}
}

View File

@@ -0,0 +1,144 @@
# Orval API Client Generation
## Current Status: POC Complete ✅
We've successfully proven that orval can generate **type-safe API clients** for Superset!
### What Works Now
-**Orval integration** - Installed and configured in superset-ui-core
-**Client generation** - Working generation from simplified OpenAPI spec
-**Type safety** - Full TypeScript interfaces and functions
-**POC component** - Demonstrates usage patterns vs SupersetClient
### Generated Client Structure
```
src/api/generated/
├── superset-api.ts # API functions (getCharts, createChart, etc.)
└── types/ # TypeScript interfaces (Chart, ChartPayload, etc.)
```
### Usage Example
```typescript
// Old SupersetClient way ❌
const response = await SupersetClient.get({
endpoint: '/api/v1/charts/',
searchParams: { page: 1 }
});
const data: any = response.json; // No type safety!
// New orval-generated way ✅
import { getCharts, type Chart } from './generated/superset-api';
const response = await getCharts({ page: 1, page_size: 25 });
const charts: Chart[] = response.data.result || []; // Fully typed!
```
## The Full API Scope 🚀
Superset's OpenAPI spec contains **176 unique endpoints** covering:
### Major API Categories
- **Charts** (`/api/v1/chart/`) - Chart CRUD, data, screenshots, favorites
- **Dashboards** (`/api/v1/dashboard/`) - Dashboard management, filters, permissions
- **Datasets** (`/api/v1/dataset/`) - Dataset management, columns, metrics
- **Databases** (`/api/v1/database/`) - Database connections, schemas, tables
- **Security** (`/api/v1/security/`) - Authentication, permissions, roles
- **SQL Lab** (`/api/v1/sqllab/`) - Query execution, saved queries
- **And many more** - Reports, annotations, themes, advanced data types...
### Example Generated Functions (Full API)
```typescript
// Charts
getCharts(params?: GetChartsParams): Promise<ChartsResponse>
createChart(payload: ChartPayload): Promise<Chart>
updateChart(id: number, payload: ChartUpdatePayload): Promise<Chart>
deleteChart(id: number): Promise<void>
getChartData(id: number, params: QueryParams): Promise<ChartDataResponse>
// Dashboards
getDashboards(params?: GetDashboardsParams): Promise<DashboardsResponse>
createDashboard(payload: DashboardPayload): Promise<Dashboard>
getDashboardCharts(id: number): Promise<Chart[]>
exportDashboard(id: number): Promise<DashboardExportResponse>
// Datasets
getDatasets(params?: GetDatasetsParams): Promise<DatasetsResponse>
getDatasetColumns(id: number): Promise<DatasetColumn[]>
updateDatasetColumn(datasetId: number, columnId: number, payload: ColumnPayload): Promise<DatasetColumn>
// SQL Lab
executeQuery(payload: QueryPayload): Promise<QueryResult>
getSavedQueries(params?: SavedQueryParams): Promise<SavedQueriesResponse>
```
## Current Challenge: OpenAPI Spec Validation
The full Superset OpenAPI spec has validation issues that prevent complete generation:
1. **Missing schema references** (e.g., `DashboardScreenshotPostSchema`)
2. **Invalid array schemas** (arrays without `items` property)
3. **Complex nested references** causing circular dependencies
## Next Steps for Full Implementation
### 1. Schema Validation Fix
```bash
# Approach 1: Fix upstream in Flask-AppBuilder
# - Update marshmallow schemas in Python code
# - Ensure all references are properly defined
# Approach 2: Post-processing script
# - Automatically fix common issues in generated spec
# - Handle missing references and invalid arrays
# Approach 3: Gradual rollout
# - Generate clients for individual API sections
# - Combine multiple smaller specs
```
### 2. Enhanced Configuration
```typescript
// orval.config.ts for full API
export default defineConfig({
charts: {
input: { target: './specs/charts-api.json' },
output: { target: './src/api/charts/' }
},
dashboards: {
input: { target: './specs/dashboards-api.json' },
output: { target: './src/api/dashboards/' }
},
// ... other API sections
});
```
### 3. Migration Strategy
- **Phase 1**: Fix schema issues, generate complete client
- **Phase 2**: Add TanStack Query hooks for caching/optimistic updates
- **Phase 3**: Create SupersetClient compatibility layer
- **Phase 4**: Gradual migration of existing code
### 4. Developer Experience Improvements
```typescript
// With TanStack Query integration
const { data: charts, isLoading, error } = useGetCharts({ page: 1 });
const createChartMutation = useCreateChart({
onSuccess: () => queryClient.invalidateQueries(['charts'])
});
// With automatic retries, caching, background refetch
const { data } = useGetDashboard(dashboardId, {
staleTime: 5 * 60 * 1000, // 5 minutes
retry: 3
});
```
## Value Proposition Confirmed ✅
Even with the current limitations, the POC demonstrates **massive value**:
1. **Type Safety**: Compile-time API validation
2. **Developer Experience**: Auto-completion, parameter validation
3. **Maintainability**: Automatic sync with backend changes
4. **Performance**: Modern fetch-based client with caching potential
5. **Scale**: 176 endpoints → thousands of type-safe functions
**Bottom Line**: Once we resolve the schema issues, we'll have a **game-changing** improvement to Superset's frontend API layer! 🚀

View File

@@ -0,0 +1,56 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* Clean API exports for orval-generated TanStack Query hooks
*
* Usage:
* import { useGetCharts, useCreateChart } from '@superset-ui/core/api';
* import type { Chart, ChartCreatePayload } from '@superset-ui/core/api';
*/
// Re-export all generated hooks and functions
// Custom wrapper for useGetCharts to flatten the parameter structure
import { useGetApiV1Chart } from '../orval-generated-code/charts/charts';
import type { GetListSchema } from '../orval-generated-code/types';
export * from '../orval-generated-code/charts/charts';
// Re-export all generated types (already consolidated in types/index.ts)
export * from '../orval-generated-code/types';
// Re-export custom mutator for advanced usage
export { customInstance } from './mutator';
// POC-compatible aliases for easier migration
export {
usePostApiV1Chart as useCreateChart,
usePutApiV1ChartPk as useUpdateChart,
useDeleteApiV1ChartPk as useDeleteChart,
} from '../orval-generated-code/charts/charts';
export const useGetCharts = (params: GetListSchema) =>
// Pass params directly - the mutator will wrap them in q=rison.encode(params)
useGetApiV1Chart(params as any);
// Type aliases for POC compatibility
export type {
ChartDataRestApiPost as ChartCreatePayload,
ChartDataRestApiPut as ChartUpdatePayload,
} from '../orval-generated-code/types';

View File

@@ -0,0 +1,149 @@
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
/**
* Custom fetch instance for orval-generated API client
*
* Handles:
* 1. URL prefixing (appRoot from backend configuration)
* 2. CSRF token injection (compatibility with SupersetClient)
* 3. Error handling and response processing
* 4. Authentication flow integration
*/
import rison from 'rison';
import SupersetClient from '../connection/SupersetClient';
interface CustomRequestConfig extends RequestInit {
url: string;
params?: Record<string, any>;
data?: any;
responseType?: 'blob' | 'text' | 'json';
}
/**
* Get the application root path from SupersetClient configuration
* This ensures compatibility with existing URL prefix handling
*/
function getAppRoot(): string {
// For most Superset deployments, the appRoot is empty (root deployment)
// If Superset is deployed under a subpath, it would be configured in SupersetClient
// For now, assume root deployment to match existing SupersetClient behavior
return '';
}
/**
* Custom fetch instance that integrates with SupersetClient infrastructure
*/
export const customInstance = async <T>(
config: CustomRequestConfig,
): Promise<T> => {
const appRoot = getAppRoot();
// Build full URL with proper prefix handling
const baseURL = `${window.location.origin}${appRoot}`;
let fullUrl = config.url.startsWith('http')
? config.url
: `${baseURL}${config.url}`;
// Handle query parameters using rison encoding (Superset standard)
if (config.params) {
const cleanParams: Record<string, any> = {};
Object.entries(config.params).forEach(([key, value]) => {
if (value !== undefined && value !== null) {
cleanParams[key] = value;
}
});
if (Object.keys(cleanParams).length > 0) {
const risonQuery = rison.encode_uri(cleanParams);
fullUrl += `${fullUrl.includes('?') ? '&' : '?'}q=${risonQuery}`;
}
}
// Ensure authentication - reuse SupersetClient's auth handling
await SupersetClient.init();
// Get CSRF token from SupersetClient for write operations
const needsCSRF = ['POST', 'PUT', 'DELETE', 'PATCH'].includes(
config.method?.toUpperCase() || 'GET',
);
const headers: HeadersInit = {
Accept: 'application/json',
...config.headers,
};
if (needsCSRF) {
const csrfToken = await SupersetClient.getCSRFToken();
if (csrfToken) {
(headers as Record<string, string>)['X-CSRFToken'] = csrfToken;
}
}
// Prepare request body
let { body } = config;
if (config.data && !body) {
body = JSON.stringify(config.data);
}
// Execute request with SupersetClient-compatible configuration
const response = await fetch(fullUrl, {
...config,
body,
headers,
credentials: 'same-origin', // Match SupersetClient behavior
});
// Handle authentication errors like SupersetClient
if (response.status === 401) {
// Trigger SupersetClient's unauthorized handler
try {
await SupersetClient.reAuthenticate();
} catch {
// Let SupersetClient handle the redirect/login flow
}
}
if (!response.ok) {
throw new Error(`HTTP ${response.status}: ${response.statusText}`);
}
// Return parsed response based on responseType or content-type
if (config.responseType === 'blob') {
return response.blob() as T;
}
if (config.responseType === 'text') {
return response.text() as T;
}
// Default JSON handling
const contentType = response.headers.get('content-type');
if (
contentType?.includes('application/json') ||
config.responseType === 'json'
) {
return response.json();
}
return response.text() as T;
};
export default customInstance;

View File

@@ -0,0 +1,127 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import { useQuery } from '@tanstack/react-query';
import type {
QueryFunction,
QueryKey,
UseQueryOptions,
UseQueryResult,
} from '@tanstack/react-query';
import type {
GetApiV1DashboardIdOrSlugCharts200,
N400ResponseResponse,
N401ResponseResponse,
N403ResponseResponse,
N404ResponseResponse,
} from '.././types';
import { customInstance } from '../../api/mutator';
/**
* @summary Get a dashboard's chart definitions.
*/
export const getApiV1DashboardIdOrSlugCharts = (
idOrSlug: string,
signal?: AbortSignal,
) => {
return customInstance<GetApiV1DashboardIdOrSlugCharts200>({
url: `/api/v1/dashboard/${idOrSlug}/charts`,
method: 'GET',
signal,
});
};
export const getGetApiV1DashboardIdOrSlugChartsQueryKey = (
idOrSlug?: string,
) => {
return [`/api/v1/dashboard/${idOrSlug}/charts`] as const;
};
export const getGetApiV1DashboardIdOrSlugChartsQueryOptions = <
TData = Awaited<ReturnType<typeof getApiV1DashboardIdOrSlugCharts>>,
TError =
| N400ResponseResponse
| N401ResponseResponse
| N403ResponseResponse
| N404ResponseResponse,
>(
idOrSlug: string,
options?: {
query?: UseQueryOptions<
Awaited<ReturnType<typeof getApiV1DashboardIdOrSlugCharts>>,
TError,
TData
>;
},
) => {
const { query: queryOptions } = options ?? {};
const queryKey =
queryOptions?.queryKey ??
getGetApiV1DashboardIdOrSlugChartsQueryKey(idOrSlug);
const queryFn: QueryFunction<
Awaited<ReturnType<typeof getApiV1DashboardIdOrSlugCharts>>
> = ({ signal }) => getApiV1DashboardIdOrSlugCharts(idOrSlug, signal);
return {
queryKey,
queryFn,
enabled: !!idOrSlug,
...queryOptions,
} as UseQueryOptions<
Awaited<ReturnType<typeof getApiV1DashboardIdOrSlugCharts>>,
TError,
TData
> & { queryKey: QueryKey };
};
export type GetApiV1DashboardIdOrSlugChartsQueryResult = NonNullable<
Awaited<ReturnType<typeof getApiV1DashboardIdOrSlugCharts>>
>;
export type GetApiV1DashboardIdOrSlugChartsQueryError =
| N400ResponseResponse
| N401ResponseResponse
| N403ResponseResponse
| N404ResponseResponse;
/**
* @summary Get a dashboard's chart definitions.
*/
export function useGetApiV1DashboardIdOrSlugCharts<
TData = Awaited<ReturnType<typeof getApiV1DashboardIdOrSlugCharts>>,
TError =
| N400ResponseResponse
| N401ResponseResponse
| N403ResponseResponse
| N404ResponseResponse,
>(
idOrSlug: string,
options?: {
query?: UseQueryOptions<
Awaited<ReturnType<typeof getApiV1DashboardIdOrSlugCharts>>,
TError,
TData
>;
},
): UseQueryResult<TData, TError> & { queryKey: QueryKey } {
const queryOptions = getGetApiV1DashboardIdOrSlugChartsQueryOptions(
idOrSlug,
options,
);
const query = useQuery(queryOptions) as UseQueryResult<TData, TError> & {
queryKey: QueryKey;
};
query.queryKey = queryOptions.queryKey;
return query;
}

View File

@@ -0,0 +1,13 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface AdvancedDataTypeConvertSchema {
type: string;
/** @minItems 1 */
values: unknown[];
}

View File

@@ -0,0 +1,15 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface AdvancedDataTypeSchema {
/** The string representation of the parsed values */
display_value?: string;
error_message?: string;
valid_filter_operators?: string[];
values?: string[];
}

View File

@@ -0,0 +1,76 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { AnnotationLayerAnnotationType } from './annotationLayerAnnotationType';
import type { AnnotationLayerOpacity } from './annotationLayerOpacity';
import type { AnnotationLayerOverrides } from './annotationLayerOverrides';
import type { AnnotationLayerSourceType } from './annotationLayerSourceType';
import type { AnnotationLayerStyle } from './annotationLayerStyle';
export interface AnnotationLayer {
/** Type of annotation layer */
annotationType?: AnnotationLayerAnnotationType;
/**
* Layer color
* @nullable
*/
color?: string | null;
/** Columns to use as the description. If none are provided, all will be shown. */
descriptionColumns?: string[];
/**
* Should line be hidden. Only applies to line annotations
* @nullable
*/
hideLine?: boolean | null;
/**
* Column containing end of interval. Only applies to interval layers
* @nullable
*/
intervalEndColumn?: string | null;
/** Name of layer */
name: string;
/**
* Opacity of layer
* @nullable
*/
opacity?: AnnotationLayerOpacity;
/**
* which properties should be overridable
* @nullable
*/
overrides?: AnnotationLayerOverrides;
/** Should the layer be shown */
show: boolean;
/**
* Should the label always be shown
* @nullable
*/
showLabel?: boolean | null;
/** Should markers be shown. Only applies to line annotations. */
showMarkers: boolean;
/** Type of source for annotation data */
sourceType?: AnnotationLayerSourceType;
/** Line style. Only applies to time-series annotations */
style?: AnnotationLayerStyle;
/**
* Column with event date or interval start date
* @nullable
*/
timeColumn?: string | null;
/**
* Column with title
* @nullable
*/
titleColumn?: string | null;
/** For formula annotations, this contains the formula. For other types, this is the primary key of the source object. */
value: unknown;
/**
* Width of annotation line
* @minimum 0
*/
width?: number;
}

View File

@@ -0,0 +1,21 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Type of annotation layer
*/
export type AnnotationLayerAnnotationType =
(typeof AnnotationLayerAnnotationType)[keyof typeof AnnotationLayerAnnotationType];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const AnnotationLayerAnnotationType = {
FORMULA: 'FORMULA',
INTERVAL: 'INTERVAL',
EVENT: 'EVENT',
TIME_SERIES: 'TIME_SERIES',
} as const;

View File

@@ -0,0 +1,23 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Opacity of layer
* @nullable
*/
export type AnnotationLayerOpacity =
| (typeof AnnotationLayerOpacity)[keyof typeof AnnotationLayerOpacity]
| null;
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const AnnotationLayerOpacity = {
'': '',
opacityLow: 'opacityLow',
opacityMedium: 'opacityMedium',
opacityHigh: 'opacityHigh',
} as const;

View File

@@ -0,0 +1,15 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* which properties should be overridable
* @nullable
*/
export type AnnotationLayerOverrides = {
[key: string]: string[] | null;
} | null;

View File

@@ -0,0 +1,18 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface AnnotationLayerRestApiGet {
/** @nullable */
descr?: string | null;
id?: number;
/**
* @maxLength 250
* @nullable
*/
name?: string | null;
}

View File

@@ -0,0 +1,27 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { AnnotationLayerRestApiGetListUser1 } from './annotationLayerRestApiGetListUser1';
import type { AnnotationLayerRestApiGetListUser } from './annotationLayerRestApiGetListUser';
export interface AnnotationLayerRestApiGetList {
changed_by?: AnnotationLayerRestApiGetListUser1;
/** @nullable */
changed_on?: string | null;
readonly changed_on_delta_humanized?: unknown;
created_by?: AnnotationLayerRestApiGetListUser;
/** @nullable */
created_on?: string | null;
/** @nullable */
descr?: string | null;
id?: number;
/**
* @maxLength 250
* @nullable
*/
name?: string | null;
}

View File

@@ -0,0 +1,14 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface AnnotationLayerRestApiGetListUser {
/** @maxLength 64 */
first_name: string;
/** @maxLength 64 */
last_name: string;
}

View File

@@ -0,0 +1,14 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface AnnotationLayerRestApiGetListUser1 {
/** @maxLength 64 */
first_name: string;
/** @maxLength 64 */
last_name: string;
}

View File

@@ -0,0 +1,21 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface AnnotationLayerRestApiPost {
/**
* Give a description for this annotation layer
* @nullable
*/
descr?: string | null;
/**
* The annotation layer name
* @minLength 1
* @maxLength 250
*/
name: string;
}

View File

@@ -0,0 +1,18 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface AnnotationLayerRestApiPut {
/** Give a description for this annotation layer */
descr?: string;
/**
* The annotation layer name
* @minLength 1
* @maxLength 250
*/
name?: string;
}

View File

@@ -0,0 +1,21 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Type of source for annotation data
*/
export type AnnotationLayerSourceType =
(typeof AnnotationLayerSourceType)[keyof typeof AnnotationLayerSourceType];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const AnnotationLayerSourceType = {
'': '',
line: 'line',
NATIVE: 'NATIVE',
table: 'table',
} as const;

View File

@@ -0,0 +1,21 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Line style. Only applies to time-series annotations
*/
export type AnnotationLayerStyle =
(typeof AnnotationLayerStyle)[keyof typeof AnnotationLayerStyle];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const AnnotationLayerStyle = {
dashed: 'dashed',
dotted: 'dotted',
solid: 'solid',
longDashed: 'longDashed',
} as const;

View File

@@ -0,0 +1,26 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { AnnotationRestApiGetAnnotationLayer } from './annotationRestApiGetAnnotationLayer';
export interface AnnotationRestApiGet {
/** @nullable */
end_dttm?: string | null;
id?: number;
/** @nullable */
json_metadata?: string | null;
layer: AnnotationRestApiGetAnnotationLayer;
/** @nullable */
long_descr?: string | null;
/**
* @maxLength 500
* @nullable
*/
short_descr?: string | null;
/** @nullable */
start_dttm?: string | null;
}

View File

@@ -0,0 +1,16 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface AnnotationRestApiGetAnnotationLayer {
id?: number;
/**
* @maxLength 250
* @nullable
*/
name?: string | null;
}

View File

@@ -0,0 +1,27 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { AnnotationRestApiGetListUser } from './annotationRestApiGetListUser';
import type { AnnotationRestApiGetListUser1 } from './annotationRestApiGetListUser1';
export interface AnnotationRestApiGetList {
changed_by?: AnnotationRestApiGetListUser;
readonly changed_on_delta_humanized?: unknown;
created_by?: AnnotationRestApiGetListUser1;
/** @nullable */
end_dttm?: string | null;
id?: number;
/** @nullable */
long_descr?: string | null;
/**
* @maxLength 500
* @nullable
*/
short_descr?: string | null;
/** @nullable */
start_dttm?: string | null;
}

View File

@@ -0,0 +1,13 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface AnnotationRestApiGetListUser {
/** @maxLength 64 */
first_name: string;
id?: number;
}

View File

@@ -0,0 +1,13 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface AnnotationRestApiGetListUser1 {
/** @maxLength 64 */
first_name: string;
id?: number;
}

View File

@@ -0,0 +1,30 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface AnnotationRestApiPost {
/** The annotation end date time */
end_dttm: string;
/**
* JSON metadata
* @nullable
*/
json_metadata?: string | null;
/**
* A long description
* @nullable
*/
long_descr?: string | null;
/**
* A short description
* @minLength 1
* @maxLength 500
*/
short_descr: string;
/** The annotation start date time */
start_dttm: string;
}

View File

@@ -0,0 +1,30 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface AnnotationRestApiPut {
/** The annotation end date time */
end_dttm?: string;
/**
* JSON metadata
* @nullable
*/
json_metadata?: string | null;
/**
* A long description
* @nullable
*/
long_descr?: string | null;
/**
* A short description
* @minLength 1
* @maxLength 500
*/
short_descr?: string;
/** The annotation start date time */
start_dttm?: string;
}

View File

@@ -0,0 +1,11 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface AvailableDomainsSchema {
domains?: string[];
}

View File

@@ -0,0 +1,15 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { Datasource } from './datasource';
export interface CacheInvalidationRequestSchema {
/** The uid of the dataset/datasource this new chart will use. A complete datasource identification needs `datasource_uid` */
datasource_uids?: string[];
/** A list of the data source and database names */
datasources?: Datasource[];
}

View File

@@ -0,0 +1,11 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface CacheRestApiGet {
id?: number;
}

View File

@@ -0,0 +1,11 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface CacheRestApiGetList {
id?: number;
}

View File

@@ -0,0 +1,11 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface CacheRestApiPost {
id?: number;
}

View File

@@ -0,0 +1,11 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface CacheRestApiPut {
id?: number;
}

View File

@@ -0,0 +1,11 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface CatalogsResponseSchema {
result?: string[];
}

View File

@@ -0,0 +1,20 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface ChartCacheScreenshotResponseSchema {
/** The cache key */
cache_key?: string;
/** The url to render the chart */
chart_url?: string;
/** The url to fetch the screenshot */
image_url?: string;
/** The status of the async screenshot */
task_status?: string;
/** The timestamp of the last change in status */
task_updated_at?: string;
}

View File

@@ -0,0 +1,16 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface ChartCacheWarmUpRequestSchema {
/** The ID of the chart to warm up cache for */
chart_id: number;
/** The ID of the dashboard to get filters for when warming cache */
dashboard_id?: number;
/** Extra filters to apply when warming up cache */
extra_filters?: string;
}

View File

@@ -0,0 +1,13 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartCacheWarmUpResponseSingle } from './chartCacheWarmUpResponseSingle';
export interface ChartCacheWarmUpResponseSchema {
/** A list of each chart's warmup status and errors if any */
result?: ChartCacheWarmUpResponseSingle[];
}

View File

@@ -0,0 +1,16 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface ChartCacheWarmUpResponseSingle {
/** The ID of the chart the status belongs to */
chart_id?: number;
/** Error that occurred when warming cache for chart */
viz_error?: string;
/** Status of the underlying query for the viz */
viz_status?: string;
}

View File

@@ -0,0 +1,30 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataAdhocMetricSchemaAggregate } from './chartDataAdhocMetricSchemaAggregate';
import type { ChartDataColumn } from './chartDataColumn';
import type { ChartDataAdhocMetricSchemaExpressionType } from './chartDataAdhocMetricSchemaExpressionType';
export interface ChartDataAdhocMetricSchema {
/** Aggregation operator.Only required for simple expression types. */
aggregate?: ChartDataAdhocMetricSchemaAggregate;
column?: ChartDataColumn;
/** Simple or SQL metric */
expressionType: ChartDataAdhocMetricSchemaExpressionType;
/** When false, the label will be automatically generated based on the aggregate expression. When true, a custom label has to be specified. */
hasCustomLabel?: boolean;
/** Indicates if the filter has been added by a filter component as opposed to being a part of the original query. */
isExtra?: boolean;
/** Label for the metric. Is automatically generated unlesshasCustomLabel is true, in which case label must be defined. */
label?: string;
/** Unique identifier. Can be any string value, as long as all metrics have a unique identifier. If undefined, a random namewill be generated. */
optionName?: string;
/** The metric as defined by a SQL aggregate expression. Only required for SQL expression type. */
sqlExpression?: string;
/** Optional time grain for temporal filters */
timeGrain?: string;
}

View File

@@ -0,0 +1,23 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Aggregation operator.Only required for simple expression types.
*/
export type ChartDataAdhocMetricSchemaAggregate =
(typeof ChartDataAdhocMetricSchemaAggregate)[keyof typeof ChartDataAdhocMetricSchemaAggregate];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ChartDataAdhocMetricSchemaAggregate = {
AVG: 'AVG',
COUNT: 'COUNT',
COUNT_DISTINCT: 'COUNT_DISTINCT',
MAX: 'MAX',
MIN: 'MIN',
SUM: 'SUM',
} as const;

View File

@@ -0,0 +1,19 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Simple or SQL metric
*/
export type ChartDataAdhocMetricSchemaExpressionType =
(typeof ChartDataAdhocMetricSchemaExpressionType)[keyof typeof ChartDataAdhocMetricSchemaExpressionType];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ChartDataAdhocMetricSchemaExpressionType = {
SIMPLE: 'SIMPLE',
SQL: 'SQL',
} as const;

View File

@@ -0,0 +1,15 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataAggregateOptionsSchemaAggregates } from './chartDataAggregateOptionsSchemaAggregates';
export interface ChartDataAggregateOptionsSchema {
/** The keys are the name of the aggregate column to be created, and the values specify the details of how to apply the aggregation. If an operator requires additional options, these can be passed here to be unpacked in the operator call. The following numpy operators are supported: average, argmin, argmax, cumsum, cumprod, max, mean, median, nansum, nanmin, nanmax, nanmean, nanmedian, min, percentile, prod, product, std, sum, var. Any options required by the operator can be passed to the `options` object.
In the example, a new column `first_quantile` is created based on values in the column `my_col` using the `percentile` operator with the `q=0.25` parameter. */
aggregates?: ChartDataAggregateOptionsSchemaAggregates;
}

View File

@@ -0,0 +1,16 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* The keys are the name of the aggregate column to be created, and the values specify the details of how to apply the aggregation. If an operator requires additional options, these can be passed here to be unpacked in the operator call. The following numpy operators are supported: average, argmin, argmax, cumsum, cumprod, max, mean, median, nansum, nanmin, nanmax, nanmean, nanmedian, min, percentile, prod, product, std, sum, var. Any options required by the operator can be passed to the `options` object.
In the example, a new column `first_quantile` is created based on values in the column `my_col` using the `percentile` operator with the `q=0.25` parameter.
*/
export type ChartDataAggregateOptionsSchemaAggregates = {
[key: string]: unknown;
};

View File

@@ -0,0 +1,23 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface ChartDataAsyncResponseSchema {
/** Unique session async channel ID */
channel_id?: string;
/** Unique async job ID */
job_id?: string;
/** Unique result URL for fetching async query data */
result_url?: string;
/** Status value for async job */
status?: string;
/**
* Requesting user ID
* @nullable
*/
user_id?: string | null;
}

View File

@@ -0,0 +1,22 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataBoxplotOptionsSchemaWhiskerType } from './chartDataBoxplotOptionsSchemaWhiskerType';
export interface ChartDataBoxplotOptionsSchema {
/** @nullable */
groupby?: string[] | null;
/**
* Aggregate expressions. Metrics can be passed as both references to datasource metrics (strings), or ad-hoc metricswhich are defined only within the query object. See `ChartDataAdhocMetricSchema` for the structure of ad-hoc metrics. When metrics is undefined or null, the query is executed without a groupby. However, when metrics is an array (length >= 0), a groupby clause is added to the query.
* @nullable
*/
metrics?: unknown[] | null;
/** Upper and lower percentiles for percentile whisker type. */
percentiles?: unknown;
/** Whisker type. Any numpy function will work. */
whisker_type: ChartDataBoxplotOptionsSchemaWhiskerType;
}

View File

@@ -0,0 +1,20 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Whisker type. Any numpy function will work.
*/
export type ChartDataBoxplotOptionsSchemaWhiskerType =
(typeof ChartDataBoxplotOptionsSchemaWhiskerType)[keyof typeof ChartDataBoxplotOptionsSchemaWhiskerType];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ChartDataBoxplotOptionsSchemaWhiskerType = {
tukey: 'tukey',
'min/max': 'min/max',
percentile: 'percentile',
} as const;

View File

@@ -0,0 +1,14 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface ChartDataColumn {
/** The name of the target column */
column_name?: string;
/** Type of target column */
type?: string;
}

View File

@@ -0,0 +1,13 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataContributionOptionsSchemaOrientation } from './chartDataContributionOptionsSchemaOrientation';
export interface ChartDataContributionOptionsSchema {
/** Should cell values be calculated across the row or column. */
orientation: ChartDataContributionOptionsSchemaOrientation;
}

View File

@@ -0,0 +1,19 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Should cell values be calculated across the row or column.
*/
export type ChartDataContributionOptionsSchemaOrientation =
(typeof ChartDataContributionOptionsSchemaOrientation)[keyof typeof ChartDataContributionOptionsSchemaOrientation];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ChartDataContributionOptionsSchemaOrientation = {
row: 'row',
column: 'column',
} as const;

View File

@@ -0,0 +1,15 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataDatasourceType } from './chartDataDatasourceType';
export interface ChartDataDatasource {
/** Datasource id or uuid */
id: unknown;
/** Datasource type */
type?: ChartDataDatasourceType;
}

View File

@@ -0,0 +1,22 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Datasource type
*/
export type ChartDataDatasourceType =
(typeof ChartDataDatasourceType)[keyof typeof ChartDataDatasourceType];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ChartDataDatasourceType = {
table: 'table',
dataset: 'dataset',
query: 'query',
saved_query: 'saved_query',
view: 'view',
} as const;

View File

@@ -0,0 +1,31 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataExtrasRelativeEnd } from './chartDataExtrasRelativeEnd';
import type { ChartDataExtrasRelativeStart } from './chartDataExtrasRelativeStart';
import type { ChartDataExtrasTimeGrainSqla } from './chartDataExtrasTimeGrainSqla';
export interface ChartDataExtras {
/** HAVING clause to be added to aggregate queries using AND operator. */
having?: string;
/**
* This is only set using the new time comparison controls that is made available in some plugins behind the experimental feature flag.
* @nullable
*/
instant_time_comparison_range?: string | null;
/** End time for relative time deltas. Default: `config["DEFAULT_RELATIVE_START_TIME"]` */
relative_end?: ChartDataExtrasRelativeEnd;
/** Start time for relative time deltas. Default: `config["DEFAULT_RELATIVE_START_TIME"]` */
relative_start?: ChartDataExtrasRelativeStart;
/**
* To what level of granularity should the temporal column be aggregated. Supports [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Durations) durations.
* @nullable
*/
time_grain_sqla?: ChartDataExtrasTimeGrainSqla;
/** WHERE clause to be added to queries using AND operator. */
where?: string;
}

View File

@@ -0,0 +1,19 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* End time for relative time deltas. Default: `config["DEFAULT_RELATIVE_START_TIME"]`
*/
export type ChartDataExtrasRelativeEnd =
(typeof ChartDataExtrasRelativeEnd)[keyof typeof ChartDataExtrasRelativeEnd];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ChartDataExtrasRelativeEnd = {
today: 'today',
now: 'now',
} as const;

View File

@@ -0,0 +1,19 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Start time for relative time deltas. Default: `config["DEFAULT_RELATIVE_START_TIME"]`
*/
export type ChartDataExtrasRelativeStart =
(typeof ChartDataExtrasRelativeStart)[keyof typeof ChartDataExtrasRelativeStart];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ChartDataExtrasRelativeStart = {
today: 'today',
now: 'now',
} as const;

View File

@@ -0,0 +1,38 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* To what level of granularity should the temporal column be aggregated. Supports [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Durations) durations.
* @nullable
*/
export type ChartDataExtrasTimeGrainSqla =
| (typeof ChartDataExtrasTimeGrainSqla)[keyof typeof ChartDataExtrasTimeGrainSqla]
| null;
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ChartDataExtrasTimeGrainSqla = {
PT1S: 'PT1S',
PT5S: 'PT5S',
PT30S: 'PT30S',
PT1M: 'PT1M',
PT5M: 'PT5M',
PT10M: 'PT10M',
PT15M: 'PT15M',
PT30M: 'PT30M',
PT1H: 'PT1H',
PT6H: 'PT6H',
P1D: 'P1D',
P1W: 'P1W',
P1M: 'P1M',
P3M: 'P3M',
P1Y: 'P1Y',
'1969-12-28T00:00:00Z/P1W': '1969-12-28T00:00:00Z/P1W',
'1969-12-29T00:00:00Z/P1W': '1969-12-29T00:00:00Z/P1W',
'P1W/1970-01-03T00:00:00Z': 'P1W/1970-01-03T00:00:00Z',
'P1W/1970-01-04T00:00:00Z': 'P1W/1970-01-04T00:00:00Z',
} as const;

View File

@@ -0,0 +1,25 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataFilterOp } from './chartDataFilterOp';
import type { ChartDataFilterVal } from './chartDataFilterVal';
export interface ChartDataFilter {
/** The column to filter by. Can be either a string (physical or saved expression) or an object (adhoc column) */
col: unknown;
/** Optional time grain for temporal filters */
grain?: string;
/** Indicates if the filter has been added by a filter component as opposed to being a part of the original query. */
isExtra?: boolean;
/** The comparison operator. */
op: ChartDataFilterOp;
/**
* The value or values to compare against. Can be a string, integer, decimal, None or list, depending on the operator.
* @nullable
*/
val?: ChartDataFilterVal;
}

View File

@@ -0,0 +1,33 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* The comparison operator.
*/
export type ChartDataFilterOp =
(typeof ChartDataFilterOp)[keyof typeof ChartDataFilterOp];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ChartDataFilterOp = {
'==': '==',
'!=': '!=',
'>': '>',
'<': '<',
'>=': '>=',
'<=': '<=',
LIKE: 'LIKE',
NOT_LIKE: 'NOT LIKE',
ILIKE: 'ILIKE',
IS_NULL: 'IS NULL',
IS_NOT_NULL: 'IS NOT NULL',
IN: 'IN',
NOT_IN: 'NOT IN',
IS_TRUE: 'IS TRUE',
IS_FALSE: 'IS FALSE',
TEMPORAL_RANGE: 'TEMPORAL_RANGE',
} as const;

View File

@@ -0,0 +1,13 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* The value or values to compare against. Can be a string, integer, decimal, None or list, depending on the operator.
* @nullable
*/
export type ChartDataFilterVal = unknown | null;

View File

@@ -0,0 +1,18 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface ChartDataGeodeticParseOptionsSchema {
/** Name of target column for decoded altitude. If omitted, altitude information in geodetic string is ignored. */
altitude?: string;
/** Name of source column containing geodetic point strings */
geodetic: string;
/** Name of target column for decoded latitude */
latitude: string;
/** Name of target column for decoded longitude */
longitude: string;
}

View File

@@ -0,0 +1,16 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface ChartDataGeohashDecodeOptionsSchema {
/** Name of source column containing geohash string */
geohash: string;
/** Name of target column for decoded latitude */
latitude: string;
/** Name of target column for decoded longitude */
longitude: string;
}

View File

@@ -0,0 +1,16 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface ChartDataGeohashEncodeOptionsSchema {
/** Name of target column for encoded geohash string */
geohash: string;
/** Name of source latitude column */
latitude: string;
/** Name of source longitude column */
longitude: string;
}

View File

@@ -0,0 +1,27 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataPivotOptionsSchemaAggregates } from './chartDataPivotOptionsSchemaAggregates';
export interface ChartDataPivotOptionsSchema {
/** The keys are the name of the aggregate column to be created, and the values specify the details of how to apply the aggregation. If an operator requires additional options, these can be passed here to be unpacked in the operator call. The following numpy operators are supported: average, argmin, argmax, cumsum, cumprod, max, mean, median, nansum, nanmin, nanmax, nanmean, nanmedian, min, percentile, prod, product, std, sum, var. Any options required by the operator can be passed to the `options` object.
In the example, a new column `first_quantile` is created based on values in the column `my_col` using the `percentile` operator with the `q=0.25` parameter. */
aggregates?: ChartDataPivotOptionsSchemaAggregates;
/** Value to replace missing pivot columns names with. */
column_fill_value?: string;
/** Columns to group by on the table columns */
columns?: string[];
/** Do not include columns whose entries are all missing (default: `true`). */
drop_missing_columns?: boolean;
/** Name of marginal distribution row/column. (default: `All`) */
marginal_distribution_name?: string;
/** Add totals for row/column. (default: `false`) */
marginal_distributions?: boolean;
/** Value to replace missing values with in aggregate calculations. */
metric_fill_value?: number;
}

View File

@@ -0,0 +1,14 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* The keys are the name of the aggregate column to be created, and the values specify the details of how to apply the aggregation. If an operator requires additional options, these can be passed here to be unpacked in the operator call. The following numpy operators are supported: average, argmin, argmax, cumsum, cumprod, max, mean, median, nansum, nanmin, nanmax, nanmean, nanmedian, min, percentile, prod, product, std, sum, var. Any options required by the operator can be passed to the `options` object.
In the example, a new column `first_quantile` is created based on values in the column `my_col` using the `percentile` operator with the `q=0.25` parameter.
*/
export type ChartDataPivotOptionsSchemaAggregates = { [key: string]: unknown };

View File

@@ -0,0 +1,16 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataPostProcessingOperationOperation } from './chartDataPostProcessingOperationOperation';
import type { ChartDataPostProcessingOperationOptions } from './chartDataPostProcessingOperationOptions';
export interface ChartDataPostProcessingOperation {
/** Post processing operation type */
operation: ChartDataPostProcessingOperationOperation;
/** Options specifying how to perform the operation. Please refer to the respective post processing operation option schemas. For example, `ChartDataPostProcessingOperationOptions` specifies the required options for the pivot operation. */
options?: ChartDataPostProcessingOperationOptions;
}

View File

@@ -0,0 +1,38 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Post processing operation type
*/
export type ChartDataPostProcessingOperationOperation =
(typeof ChartDataPostProcessingOperationOperation)[keyof typeof ChartDataPostProcessingOperationOperation];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ChartDataPostProcessingOperationOperation = {
aggregate: 'aggregate',
boxplot: 'boxplot',
compare: 'compare',
contribution: 'contribution',
cum: 'cum',
diff: 'diff',
escape_separator: 'escape_separator',
flatten: 'flatten',
geodetic_parse: 'geodetic_parse',
geohash_decode: 'geohash_decode',
geohash_encode: 'geohash_encode',
histogram: 'histogram',
pivot: 'pivot',
prophet: 'prophet',
rank: 'rank',
rename: 'rename',
resample: 'resample',
rolling: 'rolling',
select: 'select',
sort: 'sort',
unescape_separator: 'unescape_separator',
} as const;

View File

@@ -0,0 +1,14 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Options specifying how to perform the operation. Please refer to the respective post processing operation option schemas. For example, `ChartDataPostProcessingOperationOptions` specifies the required options for the pivot operation.
*/
export type ChartDataPostProcessingOperationOptions = {
[key: string]: unknown;
};

View File

@@ -0,0 +1,27 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataProphetOptionsSchemaTimeGrain } from './chartDataProphetOptionsSchemaTimeGrain';
export interface ChartDataProphetOptionsSchema {
/**
* Width of predicted confidence interval
* @minimum 0
* @maximum 1
*/
confidence_interval: number;
/** Should monthly seasonality be applied. An integer value will specify Fourier order of seasonality, `None` will automatically detect seasonality. */
monthly_seasonality?: unknown;
/** Time periods (in units of `time_grain`) to predict into the future */
periods: number;
/** Time grain used to specify time period increments in prediction. Supports [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Durations) durations. */
time_grain: ChartDataProphetOptionsSchemaTimeGrain;
/** Should weekly seasonality be applied. An integer value will specify Fourier order of seasonality, `None` will automatically detect seasonality. */
weekly_seasonality?: unknown;
/** Should yearly seasonality be applied. An integer value will specify Fourier order of seasonality, `None` will automatically detect seasonality. */
yearly_seasonality?: unknown;
}

View File

@@ -0,0 +1,36 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Time grain used to specify time period increments in prediction. Supports [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601#Durations) durations.
*/
export type ChartDataProphetOptionsSchemaTimeGrain =
(typeof ChartDataProphetOptionsSchemaTimeGrain)[keyof typeof ChartDataProphetOptionsSchemaTimeGrain];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ChartDataProphetOptionsSchemaTimeGrain = {
PT1S: 'PT1S',
PT5S: 'PT5S',
PT30S: 'PT30S',
PT1M: 'PT1M',
PT5M: 'PT5M',
PT10M: 'PT10M',
PT15M: 'PT15M',
PT30M: 'PT30M',
PT1H: 'PT1H',
PT6H: 'PT6H',
P1D: 'P1D',
P1W: 'P1W',
P1M: 'P1M',
P3M: 'P3M',
P1Y: 'P1Y',
'1969-12-28T00:00:00Z/P1W': '1969-12-28T00:00:00Z/P1W',
'1969-12-29T00:00:00Z/P1W': '1969-12-29T00:00:00Z/P1W',
'P1W/1970-01-03T00:00:00Z': 'P1W/1970-01-03T00:00:00Z',
'P1W/1970-01-04T00:00:00Z': 'P1W/1970-01-04T00:00:00Z',
} as const;

View File

@@ -0,0 +1,31 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataDatasource } from './chartDataDatasource';
import type { ChartDataQueryContextSchemaFormData } from './chartDataQueryContextSchemaFormData';
import type { ChartDataQueryObject } from './chartDataQueryObject';
import type { ChartDataQueryContextSchemaResultFormat } from './chartDataQueryContextSchemaResultFormat';
import type { ChartDataQueryContextSchemaResultType } from './chartDataQueryContextSchemaResultType';
export interface ChartDataQueryContextSchema {
/**
* Override the default cache timeout
* @nullable
*/
custom_cache_timeout?: number | null;
datasource?: ChartDataDatasource;
/**
* Should the queries be forced to load from the source. Default: `false`
* @nullable
*/
force?: boolean | null;
/** @nullable */
form_data?: ChartDataQueryContextSchemaFormData;
queries?: ChartDataQueryObject[];
result_format?: ChartDataQueryContextSchemaResultFormat;
result_type?: ChartDataQueryContextSchemaResultType;
}

View File

@@ -0,0 +1,12 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* @nullable
*/
export type ChartDataQueryContextSchemaFormData = unknown | null;

View File

@@ -0,0 +1,17 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export type ChartDataQueryContextSchemaResultFormat =
(typeof ChartDataQueryContextSchemaResultFormat)[keyof typeof ChartDataQueryContextSchemaResultFormat];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ChartDataQueryContextSchemaResultFormat = {
csv: 'csv',
json: 'json',
xlsx: 'xlsx',
} as const;

View File

@@ -0,0 +1,22 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export type ChartDataQueryContextSchemaResultType =
(typeof ChartDataQueryContextSchemaResultType)[keyof typeof ChartDataQueryContextSchemaResultType];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ChartDataQueryContextSchemaResultType = {
columns: 'columns',
full: 'full',
query: 'query',
results: 'results',
samples: 'samples',
timegrains: 'timegrains',
post_processed: 'post_processed',
drill_detail: 'drill_detail',
} as const;

View File

@@ -0,0 +1,184 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { AnnotationLayer } from './annotationLayer';
import type { ChartDataQueryObjectAppliedTimeExtras } from './chartDataQueryObjectAppliedTimeExtras';
import type { ChartDataQueryObjectDatasource } from './chartDataQueryObjectDatasource';
import type { ChartDataQueryObjectExtras } from './chartDataQueryObjectExtras';
import type { ChartDataFilter } from './chartDataFilter';
import type { ChartDataQueryObjectPostProcessingItem } from './chartDataQueryObjectPostProcessingItem';
import type { ChartDataQueryObjectResultType } from './chartDataQueryObjectResultType';
import type { ChartDataQueryObjectSeriesLimitMetric } from './chartDataQueryObjectSeriesLimitMetric';
import type { ChartDataQueryObjectTimeseriesLimitMetric } from './chartDataQueryObjectTimeseriesLimitMetric';
import type { ChartDataQueryObjectUrlParams } from './chartDataQueryObjectUrlParams';
export interface ChartDataQueryObject {
/**
* Annotation layers to apply to chart
* @nullable
*/
annotation_layers?: AnnotationLayer[] | null;
/**
* A mapping of temporal extras that have been applied to the query
* @nullable
*/
applied_time_extras?: ChartDataQueryObjectAppliedTimeExtras;
/**
* Add fetch values predicate (where clause) to query if defined in datasource
* @nullable
*/
apply_fetch_values_predicate?: boolean | null;
/**
* Columns which to select in the query.
* @nullable
*/
columns?: unknown[] | null;
/** @nullable */
datasource?: ChartDataQueryObjectDatasource;
/**
* Extra parameters to add to the query.
* @nullable
*/
extras?: ChartDataQueryObjectExtras;
/** @nullable */
filters?: ChartDataFilter[] | null;
/**
* Name of temporal column used for time filtering.
* @nullable
*/
granularity?: string | null;
/**
* Name of temporal column used for time filtering for SQL datasources. This field is deprecated, use `granularity` instead.
* @deprecated
* @nullable
*/
granularity_sqla?: string | null;
/**
* When true, groups remaining series into an 'Others' category when series limit is reached. Prevents incomplete data.
* @nullable
*/
group_others_when_limit_reached?: boolean | null;
/**
* Columns by which to group the query. This field is deprecated, use `columns` instead.
* @nullable
*/
groupby?: unknown[] | null;
/**
* HAVING clause to be added to aggregate queries using AND operator. This field is deprecated and should be passed to `extras`.
* @deprecated
* @nullable
*/
having?: string | null;
/**
* Should the rowcount of the actual query be returned
* @nullable
*/
is_rowcount?: boolean | null;
/**
* Is the `query_object` a timeseries.
* @nullable
*/
is_timeseries?: boolean | null;
/**
* Aggregate expressions. Metrics can be passed as both references to datasource metrics (strings), or ad-hoc metricswhich are defined only within the query object. See `ChartDataAdhocMetricSchema` for the structure of ad-hoc metrics.
* @nullable
*/
metrics?: unknown[] | null;
/**
* Reverse order. Default: `false`
* @nullable
*/
order_desc?: boolean | null;
/**
* Expects a list of lists where the first element is the column name which to sort by, and the second element is a boolean.
* @nullable
*/
orderby?: unknown[] | null;
/**
* Post processing operations to be applied to the result set. Operations are applied to the result set in sequential order.
* @nullable
*/
post_processing?: ChartDataQueryObjectPostProcessingItem[] | null;
/** @nullable */
result_type?: ChartDataQueryObjectResultType;
/**
* Maximum row count (0=disabled). Default: `config["ROW_LIMIT"]`
* @minimum 0
* @nullable
*/
row_limit?: number | null;
/**
* Number of rows to skip. Default: `0`
* @minimum 0
* @nullable
*/
row_offset?: number | null;
/**
* Columns to use when limiting series count. All columns must be present in the `columns` property. Requires `series_limit` and `series_limit_metric` to be set.
* @nullable
*/
series_columns?: unknown[] | null;
/**
* Maximum number of series. Requires `series` and `series_limit_metric` to be set.
* @nullable
*/
series_limit?: number | null;
/**
* Metric used to limit timeseries queries by. Requires `series` and `series_limit` to be set.
* @nullable
*/
series_limit_metric?: ChartDataQueryObjectSeriesLimitMetric;
/** @nullable */
time_offsets?: string[] | null;
/**
* A time rage, either expressed as a colon separated string `since : until` or human readable freeform. Valid formats for `since` and `until` are:
- ISO 8601
- X days/years/hours/day/year/weeks
- X days/years/hours/day/year/weeks ago
- X days/years/hours/day/year/weeks from now
Additionally, the following freeform can be used:
- Last day
- Last week
- Last month
- Last quarter
- Last year
- No filter
- Last X seconds/minutes/hours/days/weeks/months/years
- Next X seconds/minutes/hours/days/weeks/months/years
* @nullable
*/
time_range?: string | null;
/**
* A human-readable date/time string. Please refer to [parsdatetime](https://github.com/bear/parsedatetime) documentation for details on valid values.
* @nullable
*/
time_shift?: string | null;
/**
* Maximum row count for timeseries queries. This field is deprecated, use `series_limit` instead.Default: `0`
* @nullable
*/
timeseries_limit?: number | null;
/**
* Metric used to limit timeseries queries by. This field is deprecated, use `series_limit_metric` instead.
* @nullable
*/
timeseries_limit_metric?: ChartDataQueryObjectTimeseriesLimitMetric;
/**
* Optional query parameters passed to a dashboard or Explore view
* @nullable
*/
url_params?: ChartDataQueryObjectUrlParams;
/**
* WHERE clause to be added to queries using AND operator.This field is deprecated and should be passed to `extras`.
* @deprecated
* @nullable
*/
where?: string | null;
}

View File

@@ -0,0 +1,15 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* A mapping of temporal extras that have been applied to the query
* @nullable
*/
export type ChartDataQueryObjectAppliedTimeExtras = {
[key: string]: unknown;
} | null;

View File

@@ -0,0 +1,13 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataDatasource } from './chartDataDatasource';
/**
* @nullable
*/
export type ChartDataQueryObjectDatasource = ChartDataDatasource | null;

View File

@@ -0,0 +1,14 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataExtras } from './chartDataExtras';
/**
* Extra parameters to add to the query.
* @nullable
*/
export type ChartDataQueryObjectExtras = ChartDataExtras | null;

View File

@@ -0,0 +1,14 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataPostProcessingOperation } from './chartDataPostProcessingOperation';
/**
* @nullable
*/
export type ChartDataQueryObjectPostProcessingItem =
ChartDataPostProcessingOperation | null;

View File

@@ -0,0 +1,26 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* @nullable
*/
export type ChartDataQueryObjectResultType =
| (typeof ChartDataQueryObjectResultType)[keyof typeof ChartDataQueryObjectResultType]
| null;
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ChartDataQueryObjectResultType = {
columns: 'columns',
full: 'full',
query: 'query',
results: 'results',
samples: 'samples',
timegrains: 'timegrains',
post_processed: 'post_processed',
drill_detail: 'drill_detail',
} as const;

View File

@@ -0,0 +1,13 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Metric used to limit timeseries queries by. Requires `series` and `series_limit` to be set.
* @nullable
*/
export type ChartDataQueryObjectSeriesLimitMetric = unknown | null;

View File

@@ -0,0 +1,13 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Metric used to limit timeseries queries by. This field is deprecated, use `series_limit_metric` instead.
* @nullable
*/
export type ChartDataQueryObjectTimeseriesLimitMetric = unknown | null;

View File

@@ -0,0 +1,13 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Optional query parameters passed to a dashboard or Explore view
* @nullable
*/
export type ChartDataQueryObjectUrlParams = { [key: string]: string } | null;

View File

@@ -0,0 +1,73 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataResponseResultAnnotationDataItem } from './chartDataResponseResultAnnotationDataItem';
import type { ChartDataResponseResultAppliedFiltersItem } from './chartDataResponseResultAppliedFiltersItem';
import type { ChartDataResponseResultDataItem } from './chartDataResponseResultDataItem';
import type { ChartDataResponseResultRejectedFiltersItem } from './chartDataResponseResultRejectedFiltersItem';
import type { ChartDataResponseResultStatus } from './chartDataResponseResultStatus';
export interface ChartDataResponseResult {
/**
* All requested annotation data
* @nullable
*/
annotation_data?: ChartDataResponseResultAnnotationDataItem[] | null;
/** A list with applied filters */
applied_filters?: ChartDataResponseResultAppliedFiltersItem[];
/**
* Unique cache key for query object
* @nullable
*/
cache_key: string | null;
/**
* Cache timeout in following order: custom timeout, datasource timeout, cache default timeout, config default cache timeout.
* @nullable
*/
cache_timeout: number | null;
/**
* Cache timestamp
* @nullable
*/
cached_dttm: string | null;
/** A list of column names */
colnames?: string[];
/** A list of generic data types of each column */
coltypes?: number[];
/** A list with results */
data?: ChartDataResponseResultDataItem[];
/**
* Error
* @nullable
*/
error?: string | null;
/**
* Start timestamp of time range
* @nullable
*/
from_dttm?: number | null;
/** Is the result cached */
is_cached: boolean;
/** The executed query statement */
query: string;
/** A list with rejected filters */
rejected_filters?: ChartDataResponseResultRejectedFiltersItem[];
/** Amount of rows in result set */
rowcount?: number;
/**
* Stacktrace if there was an error
* @nullable
*/
stacktrace?: string | null;
/** Status of the query */
status?: ChartDataResponseResultStatus;
/**
* End timestamp of time range
* @nullable
*/
to_dttm?: number | null;
}

View File

@@ -0,0 +1,11 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export type ChartDataResponseResultAnnotationDataItem = {
[key: string]: string;
};

View File

@@ -0,0 +1,11 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export type ChartDataResponseResultAppliedFiltersItem = {
[key: string]: unknown;
};

View File

@@ -0,0 +1,9 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export type ChartDataResponseResultDataItem = { [key: string]: unknown };

View File

@@ -0,0 +1,11 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export type ChartDataResponseResultRejectedFiltersItem = {
[key: string]: unknown;
};

View File

@@ -0,0 +1,24 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
/**
* Status of the query
*/
export type ChartDataResponseResultStatus =
(typeof ChartDataResponseResultStatus)[keyof typeof ChartDataResponseResultStatus];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ChartDataResponseResultStatus = {
stopped: 'stopped',
failed: 'failed',
pending: 'pending',
running: 'running',
scheduled: 'scheduled',
success: 'success',
timed_out: 'timed_out',
} as const;

View File

@@ -0,0 +1,13 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataResponseResult } from './chartDataResponseResult';
export interface ChartDataResponseSchema {
/** A list of results for each corresponding query in the request. */
result?: ChartDataResponseResult[];
}

View File

@@ -0,0 +1,11 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface ChartDataRestApiGet {
id?: number;
}

View File

@@ -0,0 +1,71 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataRestApiGetListUser } from './chartDataRestApiGetListUser';
import type { ChartDataRestApiGetListUser1 } from './chartDataRestApiGetListUser1';
import type { ChartDataRestApiGetListDashboard } from './chartDataRestApiGetListDashboard';
import type { ChartDataRestApiGetListUser2 } from './chartDataRestApiGetListUser2';
import type { ChartDataRestApiGetListUser3 } from './chartDataRestApiGetListUser3';
import type { ChartDataRestApiGetListSqlaTable } from './chartDataRestApiGetListSqlaTable';
import type { ChartDataRestApiGetListTag } from './chartDataRestApiGetListTag';
export interface ChartDataRestApiGetList {
/** @nullable */
cache_timeout?: number | null;
/** @nullable */
certification_details?: string | null;
/** @nullable */
certified_by?: string | null;
changed_by?: ChartDataRestApiGetListUser;
readonly changed_by_name?: unknown;
readonly changed_on_delta_humanized?: unknown;
readonly changed_on_dttm?: unknown;
readonly changed_on_utc?: unknown;
created_by?: ChartDataRestApiGetListUser1;
readonly created_by_name?: unknown;
readonly created_on_delta_humanized?: unknown;
dashboards?: ChartDataRestApiGetListDashboard;
/** @nullable */
datasource_id?: number | null;
readonly datasource_name_text?: unknown;
/**
* @maxLength 200
* @nullable
*/
datasource_type?: string | null;
readonly datasource_url?: unknown;
/** @nullable */
description?: string | null;
readonly description_markeddown?: unknown;
readonly edit_url?: unknown;
readonly form_data?: unknown;
id?: number;
is_managed_externally?: boolean;
/** @nullable */
last_saved_at?: string | null;
last_saved_by?: ChartDataRestApiGetListUser2;
owners?: ChartDataRestApiGetListUser3;
/** @nullable */
params?: string | null;
/**
* @maxLength 250
* @nullable
*/
slice_name?: string | null;
readonly slice_url?: unknown;
table?: ChartDataRestApiGetListSqlaTable;
tags?: ChartDataRestApiGetListTag;
readonly thumbnail_url?: unknown;
readonly url?: unknown;
/** @nullable */
uuid?: string | null;
/**
* @maxLength 250
* @nullable
*/
viz_type?: string | null;
}

View File

@@ -0,0 +1,16 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface ChartDataRestApiGetListDashboard {
/**
* @maxLength 500
* @nullable
*/
dashboard_title?: string | null;
id?: number;
}

View File

@@ -0,0 +1,14 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export interface ChartDataRestApiGetListSqlaTable {
/** @nullable */
default_endpoint?: string | null;
/** @maxLength 250 */
table_name: string;
}

View File

@@ -0,0 +1,18 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
import type { ChartDataRestApiGetListTagType } from './chartDataRestApiGetListTagType';
export interface ChartDataRestApiGetListTag {
id?: number;
/**
* @maxLength 250
* @nullable
*/
name?: string | null;
type?: ChartDataRestApiGetListTagType;
}

View File

@@ -0,0 +1,18 @@
/**
* Generated by orval v7.11.2 🍺
* Do not edit manually.
* Superset
* Superset
* OpenAPI spec version: v1
*/
export type ChartDataRestApiGetListTagType =
(typeof ChartDataRestApiGetListTagType)[keyof typeof ChartDataRestApiGetListTagType];
// eslint-disable-next-line @typescript-eslint/no-redeclare
export const ChartDataRestApiGetListTagType = {
NUMBER_1: 1,
NUMBER_2: 2,
NUMBER_3: 3,
NUMBER_4: 4,
} as const;

Some files were not shown because too many files have changed in this diff Show More