Skip to content

Common foundations

Persona-blind helpers + base AWS dataclasses that the tree builds on top of. Most tree-API authors never touch these directly — the tree's typed wrappers cover the construction surface — but they're documented here for reference and for extension authors.

Models

The dataclass mapping to the AWS QuickSight API JSON shapes (to_aws_json() produces the exact dict shape create-analysis / create-dashboard / create-data-set / create-theme / create-data-source accept).

models

Dataclass models mapping to AWS QuickSight API JSON structures.

Each top-level model (Theme, DataSet, Analysis) has a to_aws_json() method that returns the exact dict shape expected by the corresponding AWS CLI command (create-theme, create-data-set, create-analysis).

ColumnIdentifier dataclass

References a column on a specific dataset by identifier.

Reused across many AWS QuickSight shapes — every typed field-well leaf (CategoricalDimensionField, DateDimensionField, etc.) and cascading control source carries one.

DataSetIdentifier instance-attribute

DataSetIdentifier: str

ColumnName instance-attribute

ColumnName: str

__init__

__init__(DataSetIdentifier: str, ColumnName: str) -> None

CategoricalDimensionField dataclass

FieldId instance-attribute

FieldId: str

Column instance-attribute

HierarchyId class-attribute instance-attribute

HierarchyId: str | None = None

__init__

__init__(FieldId: str, Column: ColumnIdentifier, HierarchyId: str | None = None) -> None

DateDimensionField dataclass

FieldId instance-attribute

FieldId: str

Column instance-attribute

DateGranularity class-attribute instance-attribute

DateGranularity: str | None = None

HierarchyId class-attribute instance-attribute

HierarchyId: str | None = None

__init__

__init__(FieldId: str, Column: ColumnIdentifier, DateGranularity: str | None = None, HierarchyId: str | None = None) -> None

NumericalDimensionField dataclass

FieldId instance-attribute

FieldId: str

Column instance-attribute

HierarchyId class-attribute instance-attribute

HierarchyId: str | None = None

FormatConfiguration class-attribute instance-attribute

FormatConfiguration: NumberFormatConfiguration | None = None

__init__

__init__(FieldId: str, Column: ColumnIdentifier, HierarchyId: str | None = None, FormatConfiguration: NumberFormatConfiguration | None = None) -> None

DimensionField dataclass

Union type — set exactly one.

CategoricalDimensionField class-attribute instance-attribute

CategoricalDimensionField: CategoricalDimensionField | None = None

DateDimensionField class-attribute instance-attribute

DateDimensionField: DateDimensionField | None = None

NumericalDimensionField class-attribute instance-attribute

NumericalDimensionField: NumericalDimensionField | None = None

__init__

__init__(CategoricalDimensionField: CategoricalDimensionField | None = None, DateDimensionField: DateDimensionField | None = None, NumericalDimensionField: NumericalDimensionField | None = None) -> None

NumericalAggregationFunction dataclass

SimpleNumericalAggregation class-attribute instance-attribute

SimpleNumericalAggregation: str | None = None

__init__

__init__(SimpleNumericalAggregation: str | None = None) -> None

DecimalPlacesConfiguration dataclass

Wire shape for the per-field decimal-places setting.

DecimalPlaces instance-attribute

DecimalPlaces: int

__init__

__init__(DecimalPlaces: int) -> None

ThousandSeparatorOptions dataclass

Symbol instance-attribute

Symbol: str

Visibility instance-attribute

Visibility: str

__init__

__init__(Symbol: str, Visibility: str) -> None

SeparatorConfiguration dataclass

DecimalSeparator class-attribute instance-attribute

DecimalSeparator: str | None = None

ThousandsSeparator class-attribute instance-attribute

ThousandsSeparator: ThousandSeparatorOptions | None = None

__init__

__init__(DecimalSeparator: str | None = None, ThousandsSeparator: ThousandSeparatorOptions | None = None) -> None

CurrencyDisplayFormatConfiguration dataclass

Currency-format wire shape. Symbol is an ISO 4217 code ("USD"); QuickSight renders the appropriate symbol prefix ($ for USD, etc.) automatically.

Symbol class-attribute instance-attribute

Symbol: str | None = None

DecimalPlacesConfiguration class-attribute instance-attribute

DecimalPlacesConfiguration: DecimalPlacesConfiguration | None = None

SeparatorConfiguration class-attribute instance-attribute

SeparatorConfiguration: SeparatorConfiguration | None = None

__init__

__init__(Symbol: str | None = None, DecimalPlacesConfiguration: DecimalPlacesConfiguration | None = None, SeparatorConfiguration: SeparatorConfiguration | None = None) -> None

NumericFormatConfiguration dataclass

Discriminated union — exactly one of the three sub-format configurations is set.

NumberDisplayFormatConfiguration class-attribute instance-attribute

NumberDisplayFormatConfiguration: dict[str, Any] | None = None

CurrencyDisplayFormatConfiguration class-attribute instance-attribute

CurrencyDisplayFormatConfiguration: CurrencyDisplayFormatConfiguration | None = None

PercentageDisplayFormatConfiguration class-attribute instance-attribute

PercentageDisplayFormatConfiguration: dict[str, Any] | None = None

__init__

__init__(NumberDisplayFormatConfiguration: dict[str, Any] | None = None, CurrencyDisplayFormatConfiguration: CurrencyDisplayFormatConfiguration | None = None, PercentageDisplayFormatConfiguration: dict[str, Any] | None = None) -> None

NumberFormatConfiguration dataclass

Wrapper carrying the actual format inside its FormatConfiguration slot — this two-level nesting matches the AWS QuickSight wire schema.

FormatConfiguration class-attribute instance-attribute

FormatConfiguration: NumericFormatConfiguration | None = None

__init__

__init__(FormatConfiguration: NumericFormatConfiguration | None = None) -> None

NumericalMeasureField dataclass

FieldId instance-attribute

FieldId: str

Column instance-attribute

AggregationFunction class-attribute instance-attribute

AggregationFunction: NumericalAggregationFunction | None = None

FormatConfiguration class-attribute instance-attribute

FormatConfiguration: NumberFormatConfiguration | None = None

__init__

__init__(FieldId: str, Column: ColumnIdentifier, AggregationFunction: NumericalAggregationFunction | None = None, FormatConfiguration: NumberFormatConfiguration | None = None) -> None

CategoricalMeasureField dataclass

FieldId instance-attribute

FieldId: str

Column instance-attribute

AggregationFunction class-attribute instance-attribute

AggregationFunction: str | None = None

__init__

__init__(FieldId: str, Column: ColumnIdentifier, AggregationFunction: str | None = None) -> None

DateMeasureField dataclass

FieldId instance-attribute

FieldId: str

Column instance-attribute

AggregationFunction class-attribute instance-attribute

AggregationFunction: str | None = None

__init__

__init__(FieldId: str, Column: ColumnIdentifier, AggregationFunction: str | None = None) -> None

MeasureField dataclass

Union type — set exactly one.

NumericalMeasureField class-attribute instance-attribute

NumericalMeasureField: NumericalMeasureField | None = None

CategoricalMeasureField class-attribute instance-attribute

CategoricalMeasureField: CategoricalMeasureField | None = None

DateMeasureField class-attribute instance-attribute

DateMeasureField: DateMeasureField | None = None

__init__

__init__(NumericalMeasureField: NumericalMeasureField | None = None, CategoricalMeasureField: CategoricalMeasureField | None = None, DateMeasureField: DateMeasureField | None = None) -> None

VisualTitleLabelOptions dataclass

Visibility class-attribute instance-attribute

Visibility: str = 'VISIBLE'

FormatText class-attribute instance-attribute

FormatText: dict[str, str] | None = None

__init__

__init__(Visibility: str = 'VISIBLE', FormatText: dict[str, str] | None = None) -> None

VisualSubtitleLabelOptions dataclass

Visibility class-attribute instance-attribute

Visibility: str = 'VISIBLE'

FormatText class-attribute instance-attribute

FormatText: dict[str, str] | None = None

__init__

__init__(Visibility: str = 'VISIBLE', FormatText: dict[str, str] | None = None) -> None

DataColorPalette dataclass

Colors class-attribute instance-attribute

Colors: list[str] | None = None

EmptyFillColor class-attribute instance-attribute

EmptyFillColor: str | None = None

MinMaxGradient class-attribute instance-attribute

MinMaxGradient: list[str] | None = None

__init__

__init__(Colors: list[str] | None = None, EmptyFillColor: str | None = None, MinMaxGradient: list[str] | None = None) -> None

UIColorPalette dataclass

PrimaryBackground class-attribute instance-attribute

PrimaryBackground: str | None = None

PrimaryForeground class-attribute instance-attribute

PrimaryForeground: str | None = None

SecondaryBackground class-attribute instance-attribute

SecondaryBackground: str | None = None

SecondaryForeground class-attribute instance-attribute

SecondaryForeground: str | None = None

Accent class-attribute instance-attribute

Accent: str | None = None

AccentForeground class-attribute instance-attribute

AccentForeground: str | None = None

Danger class-attribute instance-attribute

Danger: str | None = None

DangerForeground class-attribute instance-attribute

DangerForeground: str | None = None

Warning class-attribute instance-attribute

Warning: str | None = None

WarningForeground class-attribute instance-attribute

WarningForeground: str | None = None

Success class-attribute instance-attribute

Success: str | None = None

SuccessForeground class-attribute instance-attribute

SuccessForeground: str | None = None

Dimension class-attribute instance-attribute

Dimension: str | None = None

DimensionForeground class-attribute instance-attribute

DimensionForeground: str | None = None

Measure class-attribute instance-attribute

Measure: str | None = None

MeasureForeground class-attribute instance-attribute

MeasureForeground: str | None = None

__init__

__init__(PrimaryBackground: str | None = None, PrimaryForeground: str | None = None, SecondaryBackground: str | None = None, SecondaryForeground: str | None = None, Accent: str | None = None, AccentForeground: str | None = None, Danger: str | None = None, DangerForeground: str | None = None, Warning: str | None = None, WarningForeground: str | None = None, Success: str | None = None, SuccessForeground: str | None = None, Dimension: str | None = None, DimensionForeground: str | None = None, Measure: str | None = None, MeasureForeground: str | None = None) -> None

TileBorder dataclass

Show class-attribute instance-attribute

Show: bool | None = None

__init__

__init__(Show: bool | None = None) -> None

Tile dataclass

Border class-attribute instance-attribute

Border: TileBorder | None = None

__init__

__init__(Border: TileBorder | None = None) -> None

Gutter dataclass

Show class-attribute instance-attribute

Show: bool | None = None

__init__

__init__(Show: bool | None = None) -> None

Margin dataclass

Show class-attribute instance-attribute

Show: bool | None = None

__init__

__init__(Show: bool | None = None) -> None

TileLayout dataclass

Gutter class-attribute instance-attribute

Gutter: Gutter | None = None

Margin class-attribute instance-attribute

Margin: Margin | None = None

__init__

__init__(Gutter: Gutter | None = None, Margin: Margin | None = None) -> None

SheetStyle dataclass

Tile class-attribute instance-attribute

Tile: Tile | None = None

TileLayout class-attribute instance-attribute

TileLayout: TileLayout | None = None

__init__

__init__(Tile: Tile | None = None, TileLayout: TileLayout | None = None) -> None

FontFamily dataclass

FontFamily instance-attribute

FontFamily: str

__init__

__init__(FontFamily: str) -> None

Typography dataclass

FontFamilies class-attribute instance-attribute

FontFamilies: list[FontFamily] | None = None

__init__

__init__(FontFamilies: list[FontFamily] | None = None) -> None

ThemeConfiguration dataclass

DataColorPalette class-attribute instance-attribute

DataColorPalette: DataColorPalette | None = None

UIColorPalette class-attribute instance-attribute

UIColorPalette: UIColorPalette | None = None

Sheet class-attribute instance-attribute

Sheet: SheetStyle | None = None

Typography class-attribute instance-attribute

Typography: Typography | None = None

__init__

__init__(DataColorPalette: DataColorPalette | None = None, UIColorPalette: UIColorPalette | None = None, Sheet: SheetStyle | None = None, Typography: Typography | None = None) -> None

Tag dataclass

Key instance-attribute

Key: str

Value instance-attribute

Value: str

__init__

__init__(Key: str, Value: str) -> None

ResourcePermission dataclass

Principal instance-attribute

Principal: str

Actions instance-attribute

Actions: list[str]

__init__

__init__(Principal: str, Actions: list[str]) -> None

Theme dataclass

AwsAccountId instance-attribute

AwsAccountId: str

ThemeId instance-attribute

ThemeId: str

Name instance-attribute

Name: str

BaseThemeId instance-attribute

BaseThemeId: str

Configuration instance-attribute

Configuration: ThemeConfiguration

Permissions class-attribute instance-attribute

Permissions: list[ResourcePermission] | None = None

Tags class-attribute instance-attribute

Tags: list[Tag] | None = None

VersionDescription class-attribute instance-attribute

VersionDescription: str | None = None

__init__

__init__(AwsAccountId: str, ThemeId: str, Name: str, BaseThemeId: str, Configuration: ThemeConfiguration, Permissions: list[ResourcePermission] | None = None, Tags: list[Tag] | None = None, VersionDescription: str | None = None) -> None

to_aws_json

to_aws_json() -> dict[str, Any]

to_json_string

to_json_string(indent: int = 2) -> str

PostgreSqlParameters dataclass

Host instance-attribute

Host: str

Port instance-attribute

Port: int

Database instance-attribute

Database: str

__init__

__init__(Host: str, Port: int, Database: str) -> None

OracleParameters dataclass

QuickSight OracleParameters shape (boto3 quicksight create-data-source).

Per the AWS QuickSight API: - Host — RDS Oracle endpoint hostname. - Port — listener port (defaults 1521). - Database — SID or service name (e.g. ORCL). - UseServiceName — when True, Database is treated as a service name; when False (AWS default), as a SID.

UseServiceName defaults True on this dataclass because RDS Oracle endpoints (and Aurora Oracle) connect via service name — the SID-style interpretation only matches older self-managed Oracle installs. Override at construction if needed.

Host instance-attribute

Host: str

Port instance-attribute

Port: int

Database instance-attribute

Database: str

UseServiceName class-attribute instance-attribute

UseServiceName: bool = True

__init__

__init__(Host: str, Port: int, Database: str, UseServiceName: bool = True) -> None

DataSourceParameters dataclass

PostgreSqlParameters class-attribute instance-attribute

PostgreSqlParameters: PostgreSqlParameters | None = None

OracleParameters class-attribute instance-attribute

OracleParameters: OracleParameters | None = None

__init__

__init__(PostgreSqlParameters: PostgreSqlParameters | None = None, OracleParameters: OracleParameters | None = None) -> None

CredentialPair dataclass

Username instance-attribute

Username: str

Password instance-attribute

Password: str

__init__

__init__(Username: str, Password: str) -> None

DataSourceCredentials dataclass

CredentialPair class-attribute instance-attribute

CredentialPair: CredentialPair | None = None

__init__

__init__(CredentialPair: CredentialPair | None = None) -> None

SslProperties dataclass

DisableSsl class-attribute instance-attribute

DisableSsl: bool = False

__init__

__init__(DisableSsl: bool = False) -> None

DataSource dataclass

AwsAccountId instance-attribute

AwsAccountId: str

DataSourceId instance-attribute

DataSourceId: str

Name instance-attribute

Name: str

Type instance-attribute

Type: str

DataSourceParameters instance-attribute

DataSourceParameters: DataSourceParameters

Credentials class-attribute instance-attribute

Credentials: DataSourceCredentials | None = None

SslProperties class-attribute instance-attribute

SslProperties: SslProperties | None = None

Permissions class-attribute instance-attribute

Permissions: list[ResourcePermission] | None = None

Tags class-attribute instance-attribute

Tags: list[Tag] | None = None

__init__

__init__(AwsAccountId: str, DataSourceId: str, Name: str, Type: str, DataSourceParameters: DataSourceParameters, Credentials: DataSourceCredentials | None = None, SslProperties: SslProperties | None = None, Permissions: list[ResourcePermission] | None = None, Tags: list[Tag] | None = None) -> None

to_aws_json

to_aws_json() -> dict[str, Any]

to_json_string

to_json_string(indent: int = 2) -> str

InputColumn dataclass

Name instance-attribute

Name: str

Type instance-attribute

Type: str

SubType class-attribute instance-attribute

SubType: str | None = None

__init__

__init__(Name: str, Type: str, SubType: str | None = None) -> None

CustomSql dataclass

Name instance-attribute

Name: str

DataSourceArn instance-attribute

DataSourceArn: str

SqlQuery instance-attribute

SqlQuery: str

Columns instance-attribute

Columns: list[InputColumn]

__init__

__init__(Name: str, DataSourceArn: str, SqlQuery: str, Columns: list[InputColumn]) -> None

PhysicalTable dataclass

Union type — set exactly one.

CustomSql class-attribute instance-attribute

CustomSql: CustomSql | None = None

__init__

__init__(CustomSql: CustomSql | None = None) -> None

LogicalTableSource dataclass

PhysicalTableId class-attribute instance-attribute

PhysicalTableId: str | None = None

DataSetArn class-attribute instance-attribute

DataSetArn: str | None = None

__init__

__init__(PhysicalTableId: str | None = None, DataSetArn: str | None = None) -> None

LogicalTable dataclass

Alias instance-attribute

Alias: str

Source instance-attribute

DataTransforms class-attribute instance-attribute

DataTransforms: list[dict[str, Any]] | None = None

__init__

__init__(Alias: str, Source: LogicalTableSource, DataTransforms: list[dict[str, Any]] | None = None) -> None

DataSetUsageConfiguration dataclass

DisableUseAsDirectQuerySource class-attribute instance-attribute

DisableUseAsDirectQuerySource: bool = False

DisableUseAsImportedSource class-attribute instance-attribute

DisableUseAsImportedSource: bool = False

__init__

__init__(DisableUseAsDirectQuerySource: bool = False, DisableUseAsImportedSource: bool = False) -> None

StringDatasetParameterDefaultValues dataclass

StaticValues class-attribute instance-attribute

StaticValues: list[str] | None = None

__init__

__init__(StaticValues: list[str] | None = None) -> None

IntegerDatasetParameterDefaultValues dataclass

StaticValues class-attribute instance-attribute

StaticValues: list[int] | None = None

__init__

__init__(StaticValues: list[int] | None = None) -> None

DecimalDatasetParameterDefaultValues dataclass

StaticValues class-attribute instance-attribute

StaticValues: list[float] | None = None

__init__

__init__(StaticValues: list[float] | None = None) -> None

DateTimeDatasetParameterDefaultValues dataclass

StaticValues class-attribute instance-attribute

StaticValues: list[str] | None = None

__init__

__init__(StaticValues: list[str] | None = None) -> None

StringDatasetParameter dataclass

Id instance-attribute

Id: str

Name instance-attribute

Name: str

ValueType instance-attribute

ValueType: str

DefaultValues class-attribute instance-attribute

DefaultValues: StringDatasetParameterDefaultValues | None = None

__init__

__init__(Id: str, Name: str, ValueType: str, DefaultValues: StringDatasetParameterDefaultValues | None = None) -> None

IntegerDatasetParameter dataclass

Id instance-attribute

Id: str

Name instance-attribute

Name: str

ValueType instance-attribute

ValueType: str

DefaultValues class-attribute instance-attribute

DefaultValues: IntegerDatasetParameterDefaultValues | None = None

__init__

__init__(Id: str, Name: str, ValueType: str, DefaultValues: IntegerDatasetParameterDefaultValues | None = None) -> None

DecimalDatasetParameter dataclass

Id instance-attribute

Id: str

Name instance-attribute

Name: str

ValueType instance-attribute

ValueType: str

DefaultValues class-attribute instance-attribute

DefaultValues: DecimalDatasetParameterDefaultValues | None = None

__init__

__init__(Id: str, Name: str, ValueType: str, DefaultValues: DecimalDatasetParameterDefaultValues | None = None) -> None

DateTimeDatasetParameter dataclass

Id instance-attribute

Id: str

Name instance-attribute

Name: str

ValueType instance-attribute

ValueType: str

TimeGranularity class-attribute instance-attribute

TimeGranularity: str | None = None

DefaultValues class-attribute instance-attribute

DefaultValues: DateTimeDatasetParameterDefaultValues | None = None

__init__

__init__(Id: str, Name: str, ValueType: str, TimeGranularity: str | None = None, DefaultValues: DateTimeDatasetParameterDefaultValues | None = None) -> None

DatasetParameter dataclass

Discriminated union — set exactly one variant.

StringDatasetParameter class-attribute instance-attribute

StringDatasetParameter: StringDatasetParameter | None = None

IntegerDatasetParameter class-attribute instance-attribute

IntegerDatasetParameter: IntegerDatasetParameter | None = None

DecimalDatasetParameter class-attribute instance-attribute

DecimalDatasetParameter: DecimalDatasetParameter | None = None

DateTimeDatasetParameter class-attribute instance-attribute

DateTimeDatasetParameter: DateTimeDatasetParameter | None = None

__init__

__init__(StringDatasetParameter: StringDatasetParameter | None = None, IntegerDatasetParameter: IntegerDatasetParameter | None = None, DecimalDatasetParameter: DecimalDatasetParameter | None = None, DateTimeDatasetParameter: DateTimeDatasetParameter | None = None) -> None

DataSet dataclass

AwsAccountId instance-attribute

AwsAccountId: str

DataSetId instance-attribute

DataSetId: str

Name instance-attribute

Name: str

PhysicalTableMap instance-attribute

PhysicalTableMap: dict[str, PhysicalTable]

ImportMode class-attribute instance-attribute

ImportMode: str = 'DIRECT_QUERY'

LogicalTableMap class-attribute instance-attribute

LogicalTableMap: dict[str, LogicalTable] | None = None

DataSetUsageConfiguration class-attribute instance-attribute

DataSetUsageConfiguration: DataSetUsageConfiguration | None = None

Permissions class-attribute instance-attribute

Permissions: list[ResourcePermission] | None = None

Tags class-attribute instance-attribute

Tags: list[Tag] | None = None

DatasetParameters class-attribute instance-attribute

DatasetParameters: list[DatasetParameter] | None = None

__init__

__init__(AwsAccountId: str, DataSetId: str, Name: str, PhysicalTableMap: dict[str, PhysicalTable], ImportMode: str = 'DIRECT_QUERY', LogicalTableMap: dict[str, LogicalTable] | None = None, DataSetUsageConfiguration: DataSetUsageConfiguration | None = None, Permissions: list[ResourcePermission] | None = None, Tags: list[Tag] | None = None, DatasetParameters: list[DatasetParameter] | None = None) -> None

to_aws_json

to_aws_json() -> dict[str, Any]

to_json_string

to_json_string(indent: int = 2) -> str

AxisLabelReferenceOptions dataclass

Bind an AxisLabelOptions.CustomLabel to a specific field-well leaf. AWS QuickSight requires the ApplyTo reference for the custom label to render on the axis — without it, CustomLabel is silently ignored (chart axis renders the raw column name).

See quicksight-quirks.md entry on chart axis labels.

FieldId instance-attribute

FieldId: str

Column instance-attribute

__init__

__init__(FieldId: str, Column: ColumnIdentifier) -> None

AxisLabelOptions dataclass

Label override for a single axis field.

ApplyTo is the binding to a specific FieldId + dataset column. AWS QuickSight requires it for CustomLabel to render — a label without ApplyTo is parsed cleanly but produces a chart that still shows the raw column name on the axis (silent no-op). v8.6.1 made the field required at the type level after v8.5.5's auto-derive-but-no-render bug.

CustomLabel class-attribute instance-attribute

CustomLabel: str | None = None

ApplyTo class-attribute instance-attribute

ApplyTo: AxisLabelReferenceOptions | None = None

__init__

__init__(CustomLabel: str | None = None, ApplyTo: AxisLabelReferenceOptions | None = None) -> None

ChartAxisLabelOptions dataclass

Axis label options — list of per-field overrides plus visibility.

Visibility class-attribute instance-attribute

Visibility: str = 'VISIBLE'

AxisLabelOptions class-attribute instance-attribute

AxisLabelOptions: list[AxisLabelOptions] | None = None

__init__

__init__(Visibility: str = 'VISIBLE', AxisLabelOptions: list[AxisLabelOptions] | None = None) -> None

BarChartAggregatedFieldWells dataclass

Category class-attribute instance-attribute

Category: list[DimensionField] | None = None

Values class-attribute instance-attribute

Values: list[MeasureField] | None = None

Colors class-attribute instance-attribute

Colors: list[DimensionField] | None = None

__init__

__init__(Category: list[DimensionField] | None = None, Values: list[MeasureField] | None = None, Colors: list[DimensionField] | None = None) -> None

BarChartFieldWells dataclass

BarChartAggregatedFieldWells class-attribute instance-attribute

BarChartAggregatedFieldWells: BarChartAggregatedFieldWells | None = None

__init__

__init__(BarChartAggregatedFieldWells: BarChartAggregatedFieldWells | None = None) -> None

BarChartSortConfiguration dataclass

CategorySort class-attribute instance-attribute

CategorySort: list[dict[str, Any]] | None = None

__init__

__init__(CategorySort: list[dict[str, Any]] | None = None) -> None

BarChartConfiguration dataclass

FieldWells class-attribute instance-attribute

FieldWells: BarChartFieldWells | None = None

Orientation class-attribute instance-attribute

Orientation: str | None = None

BarsArrangement class-attribute instance-attribute

BarsArrangement: str | None = None

SortConfiguration class-attribute instance-attribute

SortConfiguration: BarChartSortConfiguration | None = None

CategoryLabelOptions class-attribute instance-attribute

CategoryLabelOptions: ChartAxisLabelOptions | None = None

ValueLabelOptions class-attribute instance-attribute

ValueLabelOptions: ChartAxisLabelOptions | None = None

ColorLabelOptions class-attribute instance-attribute

ColorLabelOptions: ChartAxisLabelOptions | None = None

__init__

__init__(FieldWells: BarChartFieldWells | None = None, Orientation: str | None = None, BarsArrangement: str | None = None, SortConfiguration: BarChartSortConfiguration | None = None, CategoryLabelOptions: ChartAxisLabelOptions | None = None, ValueLabelOptions: ChartAxisLabelOptions | None = None, ColorLabelOptions: ChartAxisLabelOptions | None = None) -> None

BarChartVisual dataclass

VisualId instance-attribute

VisualId: str

Title class-attribute instance-attribute

Title: VisualTitleLabelOptions | None = None

Subtitle class-attribute instance-attribute

Subtitle: VisualSubtitleLabelOptions | None = None

ChartConfiguration class-attribute instance-attribute

ChartConfiguration: BarChartConfiguration | None = None

Actions class-attribute instance-attribute

Actions: list[VisualCustomAction] | None = None

__init__

__init__(VisualId: str, Title: VisualTitleLabelOptions | None = None, Subtitle: VisualSubtitleLabelOptions | None = None, ChartConfiguration: BarChartConfiguration | None = None, Actions: list[VisualCustomAction] | None = None) -> None

LineChartAggregatedFieldWells dataclass

Category class-attribute instance-attribute

Category: list[DimensionField] | None = None

Values class-attribute instance-attribute

Values: list[MeasureField] | None = None

Colors class-attribute instance-attribute

Colors: list[DimensionField] | None = None

__init__

__init__(Category: list[DimensionField] | None = None, Values: list[MeasureField] | None = None, Colors: list[DimensionField] | None = None) -> None

LineChartFieldWells dataclass

LineChartAggregatedFieldWells class-attribute instance-attribute

LineChartAggregatedFieldWells: LineChartAggregatedFieldWells | None = None

__init__

__init__(LineChartAggregatedFieldWells: LineChartAggregatedFieldWells | None = None) -> None

LineChartSortConfiguration dataclass

CategorySort class-attribute instance-attribute

CategorySort: list[dict[str, Any]] | None = None

__init__

__init__(CategorySort: list[dict[str, Any]] | None = None) -> None

LineChartConfiguration dataclass

FieldWells class-attribute instance-attribute

FieldWells: LineChartFieldWells | None = None

Type class-attribute instance-attribute

Type: str | None = None

SortConfiguration class-attribute instance-attribute

SortConfiguration: LineChartSortConfiguration | None = None

XAxisLabelOptions class-attribute instance-attribute

XAxisLabelOptions: ChartAxisLabelOptions | None = None

PrimaryYAxisLabelOptions class-attribute instance-attribute

PrimaryYAxisLabelOptions: ChartAxisLabelOptions | None = None

__init__

__init__(FieldWells: LineChartFieldWells | None = None, Type: str | None = None, SortConfiguration: LineChartSortConfiguration | None = None, XAxisLabelOptions: ChartAxisLabelOptions | None = None, PrimaryYAxisLabelOptions: ChartAxisLabelOptions | None = None) -> None

LineChartVisual dataclass

VisualId instance-attribute

VisualId: str

Title class-attribute instance-attribute

Title: VisualTitleLabelOptions | None = None

Subtitle class-attribute instance-attribute

Subtitle: VisualSubtitleLabelOptions | None = None

ChartConfiguration class-attribute instance-attribute

ChartConfiguration: LineChartConfiguration | None = None

Actions class-attribute instance-attribute

Actions: list[VisualCustomAction] | None = None

__init__

__init__(VisualId: str, Title: VisualTitleLabelOptions | None = None, Subtitle: VisualSubtitleLabelOptions | None = None, ChartConfiguration: LineChartConfiguration | None = None, Actions: list[VisualCustomAction] | None = None) -> None

PieChartAggregatedFieldWells dataclass

Category class-attribute instance-attribute

Category: list[DimensionField] | None = None

Values class-attribute instance-attribute

Values: list[MeasureField] | None = None

__init__

__init__(Category: list[DimensionField] | None = None, Values: list[MeasureField] | None = None) -> None

PieChartFieldWells dataclass

PieChartAggregatedFieldWells class-attribute instance-attribute

PieChartAggregatedFieldWells: PieChartAggregatedFieldWells | None = None

__init__

__init__(PieChartAggregatedFieldWells: PieChartAggregatedFieldWells | None = None) -> None

DonutOptions dataclass

ArcOptions class-attribute instance-attribute

ArcOptions: dict[str, str] | None = None

__init__

__init__(ArcOptions: dict[str, str] | None = None) -> None

PieChartConfiguration dataclass

FieldWells class-attribute instance-attribute

FieldWells: PieChartFieldWells | None = None

DonutOptions class-attribute instance-attribute

DonutOptions: DonutOptions | None = None

CategoryLabelOptions class-attribute instance-attribute

CategoryLabelOptions: ChartAxisLabelOptions | None = None

ValueLabelOptions class-attribute instance-attribute

ValueLabelOptions: ChartAxisLabelOptions | None = None

__init__

__init__(FieldWells: PieChartFieldWells | None = None, DonutOptions: DonutOptions | None = None, CategoryLabelOptions: ChartAxisLabelOptions | None = None, ValueLabelOptions: ChartAxisLabelOptions | None = None) -> None

PieChartVisual dataclass

VisualId instance-attribute

VisualId: str

Title class-attribute instance-attribute

Title: VisualTitleLabelOptions | None = None

Subtitle class-attribute instance-attribute

Subtitle: VisualSubtitleLabelOptions | None = None

ChartConfiguration class-attribute instance-attribute

ChartConfiguration: PieChartConfiguration | None = None

Actions class-attribute instance-attribute

Actions: list[VisualCustomAction] | None = None

__init__

__init__(VisualId: str, Title: VisualTitleLabelOptions | None = None, Subtitle: VisualSubtitleLabelOptions | None = None, ChartConfiguration: PieChartConfiguration | None = None, Actions: list[VisualCustomAction] | None = None) -> None

KPIFieldWells dataclass

Values class-attribute instance-attribute

Values: list[MeasureField] | None = None

TargetValues class-attribute instance-attribute

TargetValues: list[MeasureField] | None = None

TrendGroups class-attribute instance-attribute

TrendGroups: list[DimensionField] | None = None

__init__

__init__(Values: list[MeasureField] | None = None, TargetValues: list[MeasureField] | None = None, TrendGroups: list[DimensionField] | None = None) -> None

KPIOptions dataclass

KPI display options.

QS rejects partial KPIOptions when the field-well has no TargetValue/TrendGroup (verified against hand-built control KPI on 2026-04-29 — KPIOptions(PrimaryValueDisplayType="ACTUAL") alone got rejected with "Only PrimaryValueFontSize display property can be defined..."). The hand-built shape — Comparison + PrimaryValueDisplayType + SecondaryValueFontConfiguration + Sparkline + VisualLayoutOptions — is the smallest set QS UI produces and accepts. Tree's KPI.emit() defaults to that shape.

Comparison class-attribute instance-attribute

Comparison: dict[str, Any] | None = None

PrimaryValueDisplayType class-attribute instance-attribute

PrimaryValueDisplayType: str | None = None

SecondaryValueFontConfiguration class-attribute instance-attribute

SecondaryValueFontConfiguration: dict[str, Any] | None = None

Sparkline class-attribute instance-attribute

Sparkline: dict[str, Any] | None = None

VisualLayoutOptions class-attribute instance-attribute

VisualLayoutOptions: dict[str, Any] | None = None

__init__

__init__(Comparison: dict[str, Any] | None = None, PrimaryValueDisplayType: str | None = None, SecondaryValueFontConfiguration: dict[str, Any] | None = None, Sparkline: dict[str, Any] | None = None, VisualLayoutOptions: dict[str, Any] | None = None) -> None

KPIConfiguration dataclass

FieldWells class-attribute instance-attribute

FieldWells: KPIFieldWells | None = None

KPIOptions class-attribute instance-attribute

KPIOptions: KPIOptions | None = None

__init__

__init__(FieldWells: KPIFieldWells | None = None, KPIOptions: KPIOptions | None = None) -> None

KPIVisual dataclass

VisualId instance-attribute

VisualId: str

Title class-attribute instance-attribute

Title: VisualTitleLabelOptions | None = None

Subtitle class-attribute instance-attribute

Subtitle: VisualSubtitleLabelOptions | None = None

ChartConfiguration class-attribute instance-attribute

ChartConfiguration: KPIConfiguration | None = None

__init__

__init__(VisualId: str, Title: VisualTitleLabelOptions | None = None, Subtitle: VisualSubtitleLabelOptions | None = None, ChartConfiguration: KPIConfiguration | None = None) -> None

TableAggregatedFieldWells dataclass

GroupBy class-attribute instance-attribute

GroupBy: list[DimensionField] | None = None

Values class-attribute instance-attribute

Values: list[MeasureField] | None = None

__init__

__init__(GroupBy: list[DimensionField] | None = None, Values: list[MeasureField] | None = None) -> None

TableUnaggregatedFieldWells dataclass

Values class-attribute instance-attribute

Values: list[dict[str, Any]] | None = None

__init__

__init__(Values: list[dict[str, Any]] | None = None) -> None

TableFieldWells dataclass

TableAggregatedFieldWells class-attribute instance-attribute

TableAggregatedFieldWells: TableAggregatedFieldWells | None = None

TableUnaggregatedFieldWells class-attribute instance-attribute

TableUnaggregatedFieldWells: TableUnaggregatedFieldWells | None = None

__init__

__init__(TableAggregatedFieldWells: TableAggregatedFieldWells | None = None, TableUnaggregatedFieldWells: TableUnaggregatedFieldWells | None = None) -> None

TableOptions dataclass

HeaderStyle class-attribute instance-attribute

HeaderStyle: dict[str, Any] | None = None

CellStyle class-attribute instance-attribute

CellStyle: dict[str, Any] | None = None

__init__

__init__(HeaderStyle: dict[str, Any] | None = None, CellStyle: dict[str, Any] | None = None) -> None

TableFieldOption dataclass

Per-column header override for a Table visual (v8.5.0).

FieldId references one of the Table's field-well leaves (Dim or Measure). CustomLabel overrides the header text QuickSight would otherwise auto-derive from the column name. Visibility defaults to "VISIBLE".

FieldId instance-attribute

FieldId: str

CustomLabel class-attribute instance-attribute

CustomLabel: str | None = None

Visibility class-attribute instance-attribute

Visibility: str = 'VISIBLE'

__init__

__init__(FieldId: str, CustomLabel: str | None = None, Visibility: str = 'VISIBLE') -> None

TableFieldOptions dataclass

Container for per-column table header overrides (v8.5.0).

SelectedFieldOptions class-attribute instance-attribute

SelectedFieldOptions: list[TableFieldOption] | None = None

__init__

__init__(SelectedFieldOptions: list[TableFieldOption] | None = None) -> None

TableConfiguration dataclass

FieldWells class-attribute instance-attribute

FieldWells: TableFieldWells | None = None

SortConfiguration class-attribute instance-attribute

SortConfiguration: dict[str, Any] | None = None

TableOptions class-attribute instance-attribute

TableOptions: TableOptions | None = None

FieldOptions class-attribute instance-attribute

FieldOptions: TableFieldOptions | None = None

__init__

__init__(FieldWells: TableFieldWells | None = None, SortConfiguration: dict[str, Any] | None = None, TableOptions: TableOptions | None = None, FieldOptions: TableFieldOptions | None = None) -> None

TableVisual dataclass

VisualId instance-attribute

VisualId: str

Title class-attribute instance-attribute

Title: VisualTitleLabelOptions | None = None

Subtitle class-attribute instance-attribute

Subtitle: VisualSubtitleLabelOptions | None = None

ChartConfiguration class-attribute instance-attribute

ChartConfiguration: TableConfiguration | None = None

Actions class-attribute instance-attribute

Actions: list[VisualCustomAction] | None = None

ConditionalFormatting class-attribute instance-attribute

ConditionalFormatting: dict[str, Any] | None = None

__init__

__init__(VisualId: str, Title: VisualTitleLabelOptions | None = None, Subtitle: VisualSubtitleLabelOptions | None = None, ChartConfiguration: TableConfiguration | None = None, Actions: list[VisualCustomAction] | None = None, ConditionalFormatting: dict[str, Any] | None = None) -> None

SankeyDiagramAggregatedFieldWells dataclass

Source class-attribute instance-attribute

Source: list[DimensionField] | None = None

Destination class-attribute instance-attribute

Destination: list[DimensionField] | None = None

Weight class-attribute instance-attribute

Weight: list[MeasureField] | None = None

__init__

__init__(Source: list[DimensionField] | None = None, Destination: list[DimensionField] | None = None, Weight: list[MeasureField] | None = None) -> None

SankeyDiagramFieldWells dataclass

SankeyDiagramAggregatedFieldWells class-attribute instance-attribute

SankeyDiagramAggregatedFieldWells: SankeyDiagramAggregatedFieldWells | None = None

__init__

__init__(SankeyDiagramAggregatedFieldWells: SankeyDiagramAggregatedFieldWells | None = None) -> None

SankeyDiagramSortConfiguration dataclass

WeightSort class-attribute instance-attribute

WeightSort: list[dict[str, Any]] | None = None

SourceItemsLimit class-attribute instance-attribute

SourceItemsLimit: dict[str, Any] | None = None

DestinationItemsLimit class-attribute instance-attribute

DestinationItemsLimit: dict[str, Any] | None = None

__init__

__init__(WeightSort: list[dict[str, Any]] | None = None, SourceItemsLimit: dict[str, Any] | None = None, DestinationItemsLimit: dict[str, Any] | None = None) -> None

SankeyDiagramChartConfiguration dataclass

FieldWells class-attribute instance-attribute

FieldWells: SankeyDiagramFieldWells | None = None

SortConfiguration class-attribute instance-attribute

SortConfiguration: SankeyDiagramSortConfiguration | None = None

DataLabels class-attribute instance-attribute

DataLabels: dict[str, Any] | None = None

__init__

__init__(FieldWells: SankeyDiagramFieldWells | None = None, SortConfiguration: SankeyDiagramSortConfiguration | None = None, DataLabels: dict[str, Any] | None = None) -> None

SankeyDiagramVisual dataclass

VisualId instance-attribute

VisualId: str

Title class-attribute instance-attribute

Title: VisualTitleLabelOptions | None = None

Subtitle class-attribute instance-attribute

Subtitle: VisualSubtitleLabelOptions | None = None

ChartConfiguration class-attribute instance-attribute

ChartConfiguration: SankeyDiagramChartConfiguration | None = None

Actions class-attribute instance-attribute

Actions: list[VisualCustomAction] | None = None

__init__

__init__(VisualId: str, Title: VisualTitleLabelOptions | None = None, Subtitle: VisualSubtitleLabelOptions | None = None, ChartConfiguration: SankeyDiagramChartConfiguration | None = None, Actions: list[VisualCustomAction] | None = None) -> None

LocalNavigationConfiguration dataclass

TargetSheetId instance-attribute

TargetSheetId: str

__init__

__init__(TargetSheetId: str) -> None

CustomActionNavigationOperation dataclass

LocalNavigationConfiguration instance-attribute

LocalNavigationConfiguration: LocalNavigationConfiguration

__init__

__init__(LocalNavigationConfiguration: LocalNavigationConfiguration) -> None

CustomActionSetParametersOperation dataclass

ParameterValueConfigurations instance-attribute

ParameterValueConfigurations: list[dict[str, Any]]

__init__

__init__(ParameterValueConfigurations: list[dict[str, Any]]) -> None

SameSheetTargetVisualConfiguration dataclass

TargetVisualOptions class-attribute instance-attribute

TargetVisualOptions: str | None = None

TargetVisuals class-attribute instance-attribute

TargetVisuals: list[str] | None = None

__init__

__init__(TargetVisualOptions: str | None = None, TargetVisuals: list[str] | None = None) -> None

FilterOperationTargetVisualsConfiguration dataclass

SameSheetTargetVisualConfiguration class-attribute instance-attribute

SameSheetTargetVisualConfiguration: SameSheetTargetVisualConfiguration | None = None

__init__

__init__(SameSheetTargetVisualConfiguration: SameSheetTargetVisualConfiguration | None = None) -> None

FilterOperationSelectedFieldsConfiguration dataclass

SelectedFieldOptions class-attribute instance-attribute

SelectedFieldOptions: str | None = None

SelectedFields class-attribute instance-attribute

SelectedFields: list[str] | None = None

SelectedColumns class-attribute instance-attribute

SelectedColumns: list[ColumnIdentifier] | None = None

__init__

__init__(SelectedFieldOptions: str | None = None, SelectedFields: list[str] | None = None, SelectedColumns: list[ColumnIdentifier] | None = None) -> None

CustomActionFilterOperation dataclass

SelectedFieldsConfiguration instance-attribute

SelectedFieldsConfiguration: FilterOperationSelectedFieldsConfiguration

TargetVisualsConfiguration instance-attribute

TargetVisualsConfiguration: FilterOperationTargetVisualsConfiguration

__init__

__init__(SelectedFieldsConfiguration: FilterOperationSelectedFieldsConfiguration, TargetVisualsConfiguration: FilterOperationTargetVisualsConfiguration) -> None

VisualCustomActionOperation dataclass

Union type — set exactly one.

NavigationOperation class-attribute instance-attribute

NavigationOperation: CustomActionNavigationOperation | None = None

SetParametersOperation class-attribute instance-attribute

SetParametersOperation: CustomActionSetParametersOperation | None = None

FilterOperation class-attribute instance-attribute

FilterOperation: CustomActionFilterOperation | None = None

__init__

__init__(NavigationOperation: CustomActionNavigationOperation | None = None, SetParametersOperation: CustomActionSetParametersOperation | None = None, FilterOperation: CustomActionFilterOperation | None = None) -> None

VisualCustomAction dataclass

DATA_POINT_CLICK class-attribute

DATA_POINT_CLICK: Literal['DATA_POINT_CLICK'] = 'DATA_POINT_CLICK'

DATA_POINT_MENU class-attribute

DATA_POINT_MENU: Literal['DATA_POINT_MENU'] = 'DATA_POINT_MENU'

ENABLED class-attribute

ENABLED: Literal['ENABLED'] = 'ENABLED'

DISABLED class-attribute

DISABLED: Literal['DISABLED'] = 'DISABLED'

CustomActionId instance-attribute

CustomActionId: str

Name instance-attribute

Name: str

Trigger instance-attribute

Trigger: Literal['DATA_POINT_CLICK', 'DATA_POINT_MENU']

ActionOperations instance-attribute

ActionOperations: list[VisualCustomActionOperation]

Status class-attribute instance-attribute

Status: Literal['ENABLED', 'DISABLED'] = 'ENABLED'

__init__

__init__(CustomActionId: str, Name: str, Trigger: Literal['DATA_POINT_CLICK', 'DATA_POINT_MENU'], ActionOperations: list[VisualCustomActionOperation], Status: Literal['ENABLED', 'DISABLED'] = 'ENABLED') -> None

Visual dataclass

Union type — set exactly one.

BarChartVisual class-attribute instance-attribute

BarChartVisual: BarChartVisual | None = None

LineChartVisual class-attribute instance-attribute

LineChartVisual: LineChartVisual | None = None

PieChartVisual class-attribute instance-attribute

PieChartVisual: PieChartVisual | None = None

KPIVisual class-attribute instance-attribute

KPIVisual: KPIVisual | None = None

TableVisual class-attribute instance-attribute

TableVisual: TableVisual | None = None

SankeyDiagramVisual class-attribute instance-attribute

SankeyDiagramVisual: SankeyDiagramVisual | None = None

__init__

__init__(BarChartVisual: BarChartVisual | None = None, LineChartVisual: LineChartVisual | None = None, PieChartVisual: PieChartVisual | None = None, KPIVisual: KPIVisual | None = None, TableVisual: TableVisual | None = None, SankeyDiagramVisual: SankeyDiagramVisual | None = None) -> None

DefaultDateTimePickerControlOptions dataclass

Type class-attribute instance-attribute

Type: str = 'DATE_RANGE'

CommitMode class-attribute instance-attribute

CommitMode: str | None = None

__init__

__init__(Type: str = 'DATE_RANGE', CommitMode: str | None = None) -> None

DefaultDropdownControlOptions dataclass

Type class-attribute instance-attribute

Type: str = 'MULTI_SELECT'

CommitMode class-attribute instance-attribute

CommitMode: str | None = None

__init__

__init__(Type: str = 'MULTI_SELECT', CommitMode: str | None = None) -> None

DefaultSliderControlOptions dataclass

MaximumValue instance-attribute

MaximumValue: float

MinimumValue instance-attribute

MinimumValue: float

StepSize instance-attribute

StepSize: float

Type class-attribute instance-attribute

Type: str = 'SINGLE_POINT'

__init__

__init__(MaximumValue: float, MinimumValue: float, StepSize: float, Type: str = 'SINGLE_POINT') -> None

DefaultFilterControlOptions dataclass

Union type — set exactly one.

DefaultDateTimePickerOptions class-attribute instance-attribute

DefaultDateTimePickerOptions: DefaultDateTimePickerControlOptions | None = None

DefaultDropdownOptions class-attribute instance-attribute

DefaultDropdownOptions: DefaultDropdownControlOptions | None = None

DefaultSliderOptions class-attribute instance-attribute

DefaultSliderOptions: DefaultSliderControlOptions | None = None

__init__

__init__(DefaultDateTimePickerOptions: DefaultDateTimePickerControlOptions | None = None, DefaultDropdownOptions: DefaultDropdownControlOptions | None = None, DefaultSliderOptions: DefaultSliderControlOptions | None = None) -> None

DefaultFilterControlConfiguration dataclass

Title instance-attribute

Title: str

ControlOptions instance-attribute

__init__

__init__(Title: str, ControlOptions: DefaultFilterControlOptions) -> None

CategoryFilterConfiguration dataclass

FilterListConfiguration class-attribute instance-attribute

FilterListConfiguration: dict[str, Any] | None = None

CustomFilterListConfiguration class-attribute instance-attribute

CustomFilterListConfiguration: dict[str, Any] | None = None

CustomFilterConfiguration class-attribute instance-attribute

CustomFilterConfiguration: dict[str, Any] | None = None

__init__

__init__(FilterListConfiguration: dict[str, Any] | None = None, CustomFilterListConfiguration: dict[str, Any] | None = None, CustomFilterConfiguration: dict[str, Any] | None = None) -> None

CategoryFilter dataclass

FilterId instance-attribute

FilterId: str

Column instance-attribute

Configuration instance-attribute

DefaultFilterControlConfiguration class-attribute instance-attribute

DefaultFilterControlConfiguration: DefaultFilterControlConfiguration | None = None

__init__

__init__(FilterId: str, Column: ColumnIdentifier, Configuration: CategoryFilterConfiguration, DefaultFilterControlConfiguration: DefaultFilterControlConfiguration | None = None) -> None

TimeRangeFilter dataclass

FilterId instance-attribute

FilterId: str

Column instance-attribute

NullOption class-attribute instance-attribute

NullOption: str = 'NON_NULLS_ONLY'

TimeGranularity class-attribute instance-attribute

TimeGranularity: str | None = None

RangeMinimumValue class-attribute instance-attribute

RangeMinimumValue: dict[str, Any] | None = None

RangeMaximumValue class-attribute instance-attribute

RangeMaximumValue: dict[str, Any] | None = None

IncludeMinimum class-attribute instance-attribute

IncludeMinimum: bool | None = None

IncludeMaximum class-attribute instance-attribute

IncludeMaximum: bool | None = None

DefaultFilterControlConfiguration class-attribute instance-attribute

DefaultFilterControlConfiguration: DefaultFilterControlConfiguration | None = None

__init__

__init__(FilterId: str, Column: ColumnIdentifier, NullOption: str = 'NON_NULLS_ONLY', TimeGranularity: str | None = None, RangeMinimumValue: dict[str, Any] | None = None, RangeMaximumValue: dict[str, Any] | None = None, IncludeMinimum: bool | None = None, IncludeMaximum: bool | None = None, DefaultFilterControlConfiguration: DefaultFilterControlConfiguration | None = None) -> None

TimeEqualityFilter dataclass

FilterId instance-attribute

FilterId: str

Column instance-attribute

Value class-attribute instance-attribute

Value: str | None = None

ParameterName class-attribute instance-attribute

ParameterName: str | None = None

TimeGranularity class-attribute instance-attribute

TimeGranularity: str | None = None

RollingDate class-attribute instance-attribute

RollingDate: dict[str, Any] | None = None

DefaultFilterControlConfiguration class-attribute instance-attribute

DefaultFilterControlConfiguration: DefaultFilterControlConfiguration | None = None

__init__

__init__(FilterId: str, Column: ColumnIdentifier, Value: str | None = None, ParameterName: str | None = None, TimeGranularity: str | None = None, RollingDate: dict[str, Any] | None = None, DefaultFilterControlConfiguration: DefaultFilterControlConfiguration | None = None) -> None

NumericRangeFilterValue dataclass

Set exactly one — a literal bound or a parameter binding.

StaticValue class-attribute instance-attribute

StaticValue: float | None = None

Parameter class-attribute instance-attribute

Parameter: str | None = None

__init__

__init__(StaticValue: float | None = None, Parameter: str | None = None) -> None

NumericRangeFilter dataclass

FilterId instance-attribute

FilterId: str

Column instance-attribute

NullOption class-attribute instance-attribute

NullOption: str = 'NON_NULLS_ONLY'

RangeMinimum class-attribute instance-attribute

RangeMinimum: NumericRangeFilterValue | None = None

RangeMaximum class-attribute instance-attribute

RangeMaximum: NumericRangeFilterValue | None = None

IncludeMinimum class-attribute instance-attribute

IncludeMinimum: bool | None = None

IncludeMaximum class-attribute instance-attribute

IncludeMaximum: bool | None = None

DefaultFilterControlConfiguration class-attribute instance-attribute

DefaultFilterControlConfiguration: DefaultFilterControlConfiguration | None = None

__init__

__init__(FilterId: str, Column: ColumnIdentifier, NullOption: str = 'NON_NULLS_ONLY', RangeMinimum: NumericRangeFilterValue | None = None, RangeMaximum: NumericRangeFilterValue | None = None, IncludeMinimum: bool | None = None, IncludeMaximum: bool | None = None, DefaultFilterControlConfiguration: DefaultFilterControlConfiguration | None = None) -> None

Filter dataclass

Union type — set exactly one.

CategoryFilter class-attribute instance-attribute

CategoryFilter: CategoryFilter | None = None

TimeRangeFilter class-attribute instance-attribute

TimeRangeFilter: TimeRangeFilter | None = None

TimeEqualityFilter class-attribute instance-attribute

TimeEqualityFilter: TimeEqualityFilter | None = None

NumericRangeFilter class-attribute instance-attribute

NumericRangeFilter: NumericRangeFilter | None = None

__init__

__init__(CategoryFilter: CategoryFilter | None = None, TimeRangeFilter: TimeRangeFilter | None = None, TimeEqualityFilter: TimeEqualityFilter | None = None, NumericRangeFilter: NumericRangeFilter | None = None) -> None

SheetVisualScopingConfiguration dataclass

ALL_VISUALS class-attribute

ALL_VISUALS: Literal['ALL_VISUALS'] = 'ALL_VISUALS'

SELECTED_VISUALS class-attribute

SELECTED_VISUALS: Literal['SELECTED_VISUALS'] = 'SELECTED_VISUALS'

SheetId instance-attribute

SheetId: str

Scope instance-attribute

Scope: Literal['ALL_VISUALS', 'SELECTED_VISUALS']

VisualIds class-attribute instance-attribute

VisualIds: list[str] | None = None

__init__

__init__(SheetId: str, Scope: Literal['ALL_VISUALS', 'SELECTED_VISUALS'], VisualIds: list[str] | None = None) -> None

SelectedSheetsFilterScopeConfiguration dataclass

SheetVisualScopingConfigurations class-attribute instance-attribute

SheetVisualScopingConfigurations: list[SheetVisualScopingConfiguration] | None = None

__init__

__init__(SheetVisualScopingConfigurations: list[SheetVisualScopingConfiguration] | None = None) -> None

AllSheetsFilterScopeConfiguration dataclass

__init__

__init__() -> None

FilterScopeConfiguration dataclass

Union type — set exactly one.

AllSheets class-attribute instance-attribute

AllSheets: AllSheetsFilterScopeConfiguration | None = None

SelectedSheets class-attribute instance-attribute

SelectedSheets: SelectedSheetsFilterScopeConfiguration | None = None

__init__

__init__(AllSheets: AllSheetsFilterScopeConfiguration | None = None, SelectedSheets: SelectedSheetsFilterScopeConfiguration | None = None) -> None

FilterGroup dataclass

SINGLE_DATASET class-attribute

SINGLE_DATASET: Literal['SINGLE_DATASET'] = 'SINGLE_DATASET'

ALL_DATASETS class-attribute

ALL_DATASETS: Literal['ALL_DATASETS'] = 'ALL_DATASETS'

ENABLED class-attribute

ENABLED: Literal['ENABLED'] = 'ENABLED'

DISABLED class-attribute

DISABLED: Literal['DISABLED'] = 'DISABLED'

FilterGroupId instance-attribute

FilterGroupId: str

Filters instance-attribute

Filters: list[Filter]

ScopeConfiguration instance-attribute

ScopeConfiguration: FilterScopeConfiguration

CrossDataset class-attribute instance-attribute

CrossDataset: Literal['SINGLE_DATASET', 'ALL_DATASETS'] = 'SINGLE_DATASET'

Status class-attribute instance-attribute

Status: Literal['ENABLED', 'DISABLED'] | None = None

__init__

__init__(FilterGroupId: str, Filters: list[Filter], ScopeConfiguration: FilterScopeConfiguration, CrossDataset: Literal['SINGLE_DATASET', 'ALL_DATASETS'] = 'SINGLE_DATASET', Status: Literal['ENABLED', 'DISABLED'] | None = None) -> None

FilterDropDownControl dataclass

FilterControlId instance-attribute

FilterControlId: str

Title instance-attribute

Title: str

SourceFilterId instance-attribute

SourceFilterId: str

Type class-attribute instance-attribute

Type: str | None = None

SelectableValues class-attribute instance-attribute

SelectableValues: dict[str, Any] | None = None

__init__

__init__(FilterControlId: str, Title: str, SourceFilterId: str, Type: str | None = None, SelectableValues: dict[str, Any] | None = None) -> None

FilterDateTimePickerControl dataclass

FilterControlId instance-attribute

FilterControlId: str

Title instance-attribute

Title: str

SourceFilterId instance-attribute

SourceFilterId: str

Type class-attribute instance-attribute

Type: str | None = None

__init__

__init__(FilterControlId: str, Title: str, SourceFilterId: str, Type: str | None = None) -> None

FilterSliderControl dataclass

FilterControlId instance-attribute

FilterControlId: str

Title instance-attribute

Title: str

SourceFilterId instance-attribute

SourceFilterId: str

MaximumValue instance-attribute

MaximumValue: float

MinimumValue instance-attribute

MinimumValue: float

StepSize instance-attribute

StepSize: float

Type class-attribute instance-attribute

Type: str | None = None

__init__

__init__(FilterControlId: str, Title: str, SourceFilterId: str, MaximumValue: float, MinimumValue: float, StepSize: float, Type: str | None = None) -> None

FilterCrossSheetControl dataclass

FilterControlId instance-attribute

FilterControlId: str

SourceFilterId instance-attribute

SourceFilterId: str

__init__

__init__(FilterControlId: str, SourceFilterId: str) -> None

FilterControl dataclass

Union type — set exactly one.

Dropdown class-attribute instance-attribute

Dropdown: FilterDropDownControl | None = None

DateTimePicker class-attribute instance-attribute

DateTimePicker: FilterDateTimePickerControl | None = None

Slider class-attribute instance-attribute

Slider: FilterSliderControl | None = None

CrossSheet class-attribute instance-attribute

CrossSheet: FilterCrossSheetControl | None = None

__init__

__init__(Dropdown: FilterDropDownControl | None = None, DateTimePicker: FilterDateTimePickerControl | None = None, Slider: FilterSliderControl | None = None, CrossSheet: FilterCrossSheetControl | None = None) -> None

ParameterDropDownControl dataclass

ParameterControlId instance-attribute

ParameterControlId: str

Title instance-attribute

Title: str

SourceParameterName instance-attribute

SourceParameterName: str

Type class-attribute instance-attribute

Type: str | None = None

SelectableValues class-attribute instance-attribute

SelectableValues: dict[str, Any] | None = None

DisplayOptions class-attribute instance-attribute

DisplayOptions: dict[str, Any] | None = None

CascadingControlConfiguration class-attribute instance-attribute

CascadingControlConfiguration: CascadingControlConfiguration | None = None

__init__

__init__(ParameterControlId: str, Title: str, SourceParameterName: str, Type: str | None = None, SelectableValues: dict[str, Any] | None = None, DisplayOptions: dict[str, Any] | None = None, CascadingControlConfiguration: CascadingControlConfiguration | None = None) -> None

ParameterDateTimePickerControl dataclass

ParameterControlId instance-attribute

ParameterControlId: str

Title instance-attribute

Title: str

SourceParameterName instance-attribute

SourceParameterName: str

__init__

__init__(ParameterControlId: str, Title: str, SourceParameterName: str) -> None

ParameterSliderControl dataclass

ParameterControlId instance-attribute

ParameterControlId: str

Title instance-attribute

Title: str

SourceParameterName instance-attribute

SourceParameterName: str

MinimumValue instance-attribute

MinimumValue: float

MaximumValue instance-attribute

MaximumValue: float

StepSize instance-attribute

StepSize: float

__init__

__init__(ParameterControlId: str, Title: str, SourceParameterName: str, MinimumValue: float, MaximumValue: float, StepSize: float) -> None

ParameterTextFieldControl dataclass

Free-text input bound to a string parameter. The analyst types a value; QS sets the bound parameter to that value (no enumeration).

Right shape for parameters whose option universe is unbounded / unknown at deploy time, or where the LinkedValues / StaticValues sample-fetch path is misbehaving (the X.1.b L2FT cascade Value dropdown ran into Sample values not found from QS's lazy sample-values fetch on cold per-CI-run dashboards; text input has no equivalent fetch path).

ParameterControlId instance-attribute

ParameterControlId: str

Title instance-attribute

Title: str

SourceParameterName instance-attribute

SourceParameterName: str

__init__

__init__(ParameterControlId: str, Title: str, SourceParameterName: str) -> None

ParameterControl dataclass

Union type — set exactly one.

Dropdown class-attribute instance-attribute

Dropdown: ParameterDropDownControl | None = None

DateTimePicker class-attribute instance-attribute

DateTimePicker: ParameterDateTimePickerControl | None = None

Slider class-attribute instance-attribute

Slider: ParameterSliderControl | None = None

TextField class-attribute instance-attribute

TextField: ParameterTextFieldControl | None = None

__init__

__init__(Dropdown: ParameterDropDownControl | None = None, DateTimePicker: ParameterDateTimePickerControl | None = None, Slider: ParameterSliderControl | None = None, TextField: ParameterTextFieldControl | None = None) -> None

FreeFormLayoutElement dataclass

VISUAL class-attribute

VISUAL: Literal['VISUAL'] = 'VISUAL'

FILTER_CONTROL class-attribute

FILTER_CONTROL: Literal['FILTER_CONTROL'] = 'FILTER_CONTROL'

PARAMETER_CONTROL class-attribute

PARAMETER_CONTROL: Literal['PARAMETER_CONTROL'] = 'PARAMETER_CONTROL'

TEXT_BOX class-attribute

TEXT_BOX: Literal['TEXT_BOX'] = 'TEXT_BOX'

IMAGE class-attribute

IMAGE: Literal['IMAGE'] = 'IMAGE'

ElementId instance-attribute

ElementId: str

ElementType instance-attribute

ElementType: Literal['VISUAL', 'FILTER_CONTROL', 'PARAMETER_CONTROL', 'TEXT_BOX', 'IMAGE']

XAxisLocation instance-attribute

XAxisLocation: str

YAxisLocation instance-attribute

YAxisLocation: str

Width instance-attribute

Width: str

Height instance-attribute

Height: str

Visibility class-attribute instance-attribute

Visibility: str = 'VISIBLE'

__init__

__init__(ElementId: str, ElementType: Literal['VISUAL', 'FILTER_CONTROL', 'PARAMETER_CONTROL', 'TEXT_BOX', 'IMAGE'], XAxisLocation: str, YAxisLocation: str, Width: str, Height: str, Visibility: str = 'VISIBLE') -> None

FreeFormLayoutConfiguration dataclass

Elements instance-attribute

Elements: list[FreeFormLayoutElement]

__init__

__init__(Elements: list[FreeFormLayoutElement]) -> None

GridLayoutElement dataclass

VISUAL class-attribute

VISUAL: Literal['VISUAL'] = 'VISUAL'

FILTER_CONTROL class-attribute

FILTER_CONTROL: Literal['FILTER_CONTROL'] = 'FILTER_CONTROL'

PARAMETER_CONTROL class-attribute

PARAMETER_CONTROL: Literal['PARAMETER_CONTROL'] = 'PARAMETER_CONTROL'

TEXT_BOX class-attribute

TEXT_BOX: Literal['TEXT_BOX'] = 'TEXT_BOX'

IMAGE class-attribute

IMAGE: Literal['IMAGE'] = 'IMAGE'

ElementId instance-attribute

ElementId: str

ElementType instance-attribute

ElementType: Literal['VISUAL', 'FILTER_CONTROL', 'PARAMETER_CONTROL', 'TEXT_BOX', 'IMAGE']

ColumnSpan instance-attribute

ColumnSpan: int

RowSpan instance-attribute

RowSpan: int

ColumnIndex class-attribute instance-attribute

ColumnIndex: int | None = None

RowIndex class-attribute instance-attribute

RowIndex: int | None = None

Padding class-attribute instance-attribute

Padding: str | None = None

__init__

__init__(ElementId: str, ElementType: Literal['VISUAL', 'FILTER_CONTROL', 'PARAMETER_CONTROL', 'TEXT_BOX', 'IMAGE'], ColumnSpan: int, RowSpan: int, ColumnIndex: int | None = None, RowIndex: int | None = None, Padding: str | None = None) -> None

GridLayoutConfiguration dataclass

Elements instance-attribute

Elements: list[GridLayoutElement]

CanvasSizeOptions class-attribute instance-attribute

CanvasSizeOptions: dict[str, Any] | None = None

__init__

__init__(Elements: list[GridLayoutElement], CanvasSizeOptions: dict[str, Any] | None = None) -> None

LayoutConfiguration dataclass

Union type — set exactly one.

GridLayout class-attribute instance-attribute

GridLayout: GridLayoutConfiguration | None = None

FreeFormLayout class-attribute instance-attribute

FreeFormLayout: FreeFormLayoutConfiguration | None = None

__init__

__init__(GridLayout: GridLayoutConfiguration | None = None, FreeFormLayout: FreeFormLayoutConfiguration | None = None) -> None

Layout dataclass

Configuration instance-attribute

Configuration: LayoutConfiguration

__init__

__init__(Configuration: LayoutConfiguration) -> None

SheetTextBox dataclass

SheetTextBoxId instance-attribute

SheetTextBoxId: str

Content instance-attribute

Content: str

__init__

__init__(SheetTextBoxId: str, Content: str) -> None

SheetDefinition dataclass

SheetId instance-attribute

SheetId: str

Name class-attribute instance-attribute

Name: str | None = None

Title class-attribute instance-attribute

Title: str | None = None

Description class-attribute instance-attribute

Description: str | None = None

ContentType class-attribute instance-attribute

ContentType: str = 'INTERACTIVE'

Visuals class-attribute instance-attribute

Visuals: list[Visual] | None = None

FilterControls class-attribute instance-attribute

FilterControls: list[FilterControl] | None = None

ParameterControls class-attribute instance-attribute

ParameterControls: list[ParameterControl] | None = None

Layouts class-attribute instance-attribute

Layouts: list[Layout] | None = None

TextBoxes class-attribute instance-attribute

TextBoxes: list[SheetTextBox] | None = None

__init__

__init__(SheetId: str, Name: str | None = None, Title: str | None = None, Description: str | None = None, ContentType: str = 'INTERACTIVE', Visuals: list[Visual] | None = None, FilterControls: list[FilterControl] | None = None, ParameterControls: list[ParameterControl] | None = None, Layouts: list[Layout] | None = None, TextBoxes: list[SheetTextBox] | None = None) -> None

DataSetIdentifierDeclaration dataclass

Identifier instance-attribute

Identifier: str

DataSetArn instance-attribute

DataSetArn: str

__init__

__init__(Identifier: str, DataSetArn: str) -> None

MappedDataSetParameter dataclass

Bridges an analysis-level parameter to a dataset-level parameter.

When the analysis parameter changes, QuickSight pushes the value into the named dataset parameter — which then substitutes into the dataset's CustomSql via <<$paramName>> at query time. The mapping list lives on the analysis ParameterDeclaration variant (StringParameterDeclaration, etc.).

DataSetIdentifier instance-attribute

DataSetIdentifier: str

DataSetParameterName instance-attribute

DataSetParameterName: str

__init__

__init__(DataSetIdentifier: str, DataSetParameterName: str) -> None

CascadingControlSource dataclass

One source control in a CascadingControlConfiguration.

SourceSheetControlId is the upstream control's ID; QS refreshes THIS control whenever that source control's value changes. ColumnToMatch is the documented value-match hint (used by column-on-column cascades); for parameter-bridged cascades it can be the dependent control's own source column — it doubles as a "this column is the one that varies with the source" marker.

SourceSheetControlId class-attribute instance-attribute

SourceSheetControlId: str | None = None

ColumnToMatch class-attribute instance-attribute

ColumnToMatch: ColumnIdentifier | None = None

__init__

__init__(SourceSheetControlId: str | None = None, ColumnToMatch: ColumnIdentifier | None = None) -> None

CascadingControlConfiguration dataclass

UI-level cascade wiring: tells QS to refresh THIS control's options when any of the listed source controls change.

Required for the M.3.10c metadata cascade — without this, even with MappedDataSetParameters correctly bridging analysis params to dataset params, QS won't refresh the dependent dropdown's options when the source dropdown changes (the dataset query substitution stays "pending" until something else triggers a refresh, like a sheet reload).

SourceControls class-attribute instance-attribute

SourceControls: list[CascadingControlSource] | None = None

__init__

__init__(SourceControls: list[CascadingControlSource] | None = None) -> None

StringParameterDeclaration dataclass

ParameterValueType instance-attribute

ParameterValueType: str

Name instance-attribute

Name: str

DefaultValues instance-attribute

DefaultValues: dict[str, Any]

MappedDataSetParameters class-attribute instance-attribute

MappedDataSetParameters: list[MappedDataSetParameter] | None = None

__init__

__init__(ParameterValueType: str, Name: str, DefaultValues: dict[str, Any], MappedDataSetParameters: list[MappedDataSetParameter] | None = None) -> None

IntegerParameterDeclaration dataclass

ParameterValueType instance-attribute

ParameterValueType: str

Name instance-attribute

Name: str

DefaultValues instance-attribute

DefaultValues: dict[str, Any]

MappedDataSetParameters class-attribute instance-attribute

MappedDataSetParameters: list[MappedDataSetParameter] | None = None

__init__

__init__(ParameterValueType: str, Name: str, DefaultValues: dict[str, Any], MappedDataSetParameters: list[MappedDataSetParameter] | None = None) -> None

DateTimeDefaultValues dataclass

StaticValues class-attribute instance-attribute

StaticValues: list[str] | None = None

DynamicValue class-attribute instance-attribute

DynamicValue: dict[str, Any] | None = None

RollingDate class-attribute instance-attribute

RollingDate: dict[str, Any] | None = None

__init__

__init__(StaticValues: list[str] | None = None, DynamicValue: dict[str, Any] | None = None, RollingDate: dict[str, Any] | None = None) -> None

DateTimeParameterDeclaration dataclass

Name instance-attribute

Name: str

TimeGranularity class-attribute instance-attribute

TimeGranularity: str | None = None

DefaultValues class-attribute instance-attribute

DefaultValues: DateTimeDefaultValues | None = None

ValueWhenUnset class-attribute instance-attribute

ValueWhenUnset: dict[str, Any] | None = None

MappedDataSetParameters class-attribute instance-attribute

MappedDataSetParameters: list[MappedDataSetParameter] | None = None

__init__

__init__(Name: str, TimeGranularity: str | None = None, DefaultValues: DateTimeDefaultValues | None = None, ValueWhenUnset: dict[str, Any] | None = None, MappedDataSetParameters: list[MappedDataSetParameter] | None = None) -> None

ParameterDeclaration dataclass

Union type — set exactly one.

StringParameterDeclaration class-attribute instance-attribute

StringParameterDeclaration: StringParameterDeclaration | None = None

IntegerParameterDeclaration class-attribute instance-attribute

IntegerParameterDeclaration: IntegerParameterDeclaration | None = None

DateTimeParameterDeclaration class-attribute instance-attribute

DateTimeParameterDeclaration: DateTimeParameterDeclaration | None = None

__init__

__init__(StringParameterDeclaration: StringParameterDeclaration | None = None, IntegerParameterDeclaration: IntegerParameterDeclaration | None = None, DateTimeParameterDeclaration: DateTimeParameterDeclaration | None = None) -> None

AnalysisDefinition dataclass

DataSetIdentifierDeclarations instance-attribute

DataSetIdentifierDeclarations: list[DataSetIdentifierDeclaration]

Sheets class-attribute instance-attribute

Sheets: list[SheetDefinition] | None = None

FilterGroups class-attribute instance-attribute

FilterGroups: list[FilterGroup] | None = None

ParameterDeclarations class-attribute instance-attribute

ParameterDeclarations: list[ParameterDeclaration] | None = None

CalculatedFields class-attribute instance-attribute

CalculatedFields: list[dict[str, Any]] | None = None

Options class-attribute instance-attribute

Options: dict[str, Any] | None = None

AnalysisDefaults class-attribute instance-attribute

AnalysisDefaults: dict[str, Any] | None = None

QueryExecutionOptions class-attribute instance-attribute

QueryExecutionOptions: dict[str, Any] | None = None

__init__

__init__(DataSetIdentifierDeclarations: list[DataSetIdentifierDeclaration], Sheets: list[SheetDefinition] | None = None, FilterGroups: list[FilterGroup] | None = None, ParameterDeclarations: list[ParameterDeclaration] | None = None, CalculatedFields: list[dict[str, Any]] | None = None, Options: dict[str, Any] | None = None, AnalysisDefaults: dict[str, Any] | None = None, QueryExecutionOptions: dict[str, Any] | None = None) -> None

Analysis dataclass

AwsAccountId instance-attribute

AwsAccountId: str

AnalysisId instance-attribute

AnalysisId: str

Name instance-attribute

Name: str

Definition instance-attribute

Definition: AnalysisDefinition

ThemeArn class-attribute instance-attribute

ThemeArn: str | None = None

Permissions class-attribute instance-attribute

Permissions: list[ResourcePermission] | None = None

Tags class-attribute instance-attribute

Tags: list[Tag] | None = None

__init__

__init__(AwsAccountId: str, AnalysisId: str, Name: str, Definition: AnalysisDefinition, ThemeArn: str | None = None, Permissions: list[ResourcePermission] | None = None, Tags: list[Tag] | None = None) -> None

to_aws_json

to_aws_json() -> dict[str, Any]

to_json_string

to_json_string(indent: int = 2) -> str

DashboardPublishOptions dataclass

AdHocFilteringOption class-attribute instance-attribute

AdHocFilteringOption: dict[str, str] | None = None

ExportToCSVOption class-attribute instance-attribute

ExportToCSVOption: dict[str, str] | None = None

SheetControlsOption class-attribute instance-attribute

SheetControlsOption: dict[str, str] | None = None

__init__

__init__(AdHocFilteringOption: dict[str, str] | None = None, ExportToCSVOption: dict[str, str] | None = None, SheetControlsOption: dict[str, str] | None = None) -> None

LinkSharingConfiguration dataclass

Permissions class-attribute instance-attribute

Permissions: list[ResourcePermission] | None = None

__init__

__init__(Permissions: list[ResourcePermission] | None = None) -> None

Dashboard dataclass

AwsAccountId instance-attribute

AwsAccountId: str

DashboardId instance-attribute

DashboardId: str

Name instance-attribute

Name: str

Definition instance-attribute

Definition: AnalysisDefinition

ThemeArn class-attribute instance-attribute

ThemeArn: str | None = None

Permissions class-attribute instance-attribute

Permissions: list[ResourcePermission] | None = None

Tags class-attribute instance-attribute

Tags: list[Tag] | None = None

VersionDescription class-attribute instance-attribute

VersionDescription: str | None = None

DashboardPublishOptions class-attribute instance-attribute

DashboardPublishOptions: DashboardPublishOptions | None = None

LinkSharingConfiguration class-attribute instance-attribute

LinkSharingConfiguration: LinkSharingConfiguration | None = None

__init__

__init__(AwsAccountId: str, DashboardId: str, Name: str, Definition: AnalysisDefinition, ThemeArn: str | None = None, Permissions: list[ResourcePermission] | None = None, Tags: list[Tag] | None = None, VersionDescription: str | None = None, DashboardPublishOptions: DashboardPublishOptions | None = None, LinkSharingConfiguration: LinkSharingConfiguration | None = None) -> None

to_aws_json

to_aws_json() -> dict[str, Any]

to_json_string

to_json_string(indent: int = 2) -> str

Typed IDs

NewType wrappers for the URL-facing and analyst-facing identifiers that stay explicit even after Phase L's auto-ID work for internal IDs.

ids

Typed identifier wrappers for QuickSight resource IDs.

QuickSight definitions cross-reference identifiers across many fields: SheetId flows into SheetVisualScopingConfigurations.SheetId and GridLayoutConfiguration, VisualId flows into the same scoping configuration's VisualIds list, FilterGroupId is the dict key QuickSight uses to look up a filter, and ParameterName is the bare string that gets templated into a CategoryFilter.

All four are plain strings at the API boundary, so a typo or — more insidiously — a kind swap (passing a SheetId into a VisualIds list, say) does not raise; QuickSight either silently widens scope or silently produces zero rows. The NewType wrappers here let mypy catch wrong-kind-of-string at the call site, mirroring the ColumnShape discipline common/drill.py already imposes on parameter wiring.

The wrappers are zero-cost at runtime — SheetId(x) returns x unchanged. They are an annotation discipline only.

SheetId module-attribute

SheetId = NewType('SheetId', str)

VisualId module-attribute

VisualId = NewType('VisualId', str)

FilterGroupId module-attribute

FilterGroupId = NewType('FilterGroupId', str)

ParameterName module-attribute

ParameterName = NewType('ParameterName', str)

Dataset contracts

DatasetContract ties a SQL query's projection to a typed list of expected columns; build_dataset() is the shared constructor used by every per-app datasets.py.

dataset_contract

Dataset column contracts and shared dataset-building helpers.

A DatasetContract declares the column interface a dataset produces. The SQL is one implementation of that contract (against the demo schema); customers swap in their own SQL. Everything downstream (visuals, filters, drill-downs) binds to contract columns, not SQL specifics.

DATASET_ACTIONS module-attribute

DATASET_ACTIONS = ['quicksight:DescribeDataSet', 'quicksight:DescribeDataSetPermissions', 'quicksight:PassDataSet', 'quicksight:DescribeIngestion', 'quicksight:ListIngestions', 'quicksight:UpdateDataSet', 'quicksight:DeleteDataSet', 'quicksight:CreateIngestion', 'quicksight:CancelIngestion', 'quicksight:UpdateDataSetPermissions']

ColumnShape

Bases: Enum

Application-level value shape of a drill-eligible column.

Layered above the AWS coarse type (STRING/DATETIME/...) so that two columns sharing a wire type but representing different semantic values cannot be cross-wired to the same drill parameter. K.2 spike found a silent zero-row bug where exception_date (DATETIME) was bound to a SINGLE_VALUED string parameter; QuickSight coerced it to the full timestamp text "2026-04-07 00:00:00.000" which never matched the destination's posted_date column (also STRING but YYYY-MM-DD formatted via TO_CHAR). The shape captures both the encoding and the semantic, so the typed drill helper can refuse the wiring at code-gen time instead of silently producing zero rows.

Tag a column with a shape only if it's an actual drill source or destination — every other column stays shape=None and is rejected by DrillSourceField resolution.

DATE_YYYY_MM_DD_TEXT class-attribute instance-attribute

DATE_YYYY_MM_DD_TEXT = 'date_yyyy_mm_dd_text'

DATETIME_DAY class-attribute instance-attribute

DATETIME_DAY = 'datetime_day'

ACCOUNT_ID class-attribute instance-attribute

ACCOUNT_ID = 'account_id'

SUBLEDGER_ACCOUNT_ID class-attribute instance-attribute

SUBLEDGER_ACCOUNT_ID = 'subledger_account_id'

LEDGER_ACCOUNT_ID class-attribute instance-attribute

LEDGER_ACCOUNT_ID = 'ledger_account_id'

ACCOUNT_DISPLAY class-attribute instance-attribute

ACCOUNT_DISPLAY = 'account_display'

TRANSFER_ID class-attribute instance-attribute

TRANSFER_ID = 'transfer_id'

TRANSFER_TYPE class-attribute instance-attribute

TRANSFER_TYPE = 'transfer_type'

SETTLEMENT_ID class-attribute instance-attribute

SETTLEMENT_ID = 'settlement_id'

PAYMENT_ID class-attribute instance-attribute

PAYMENT_ID = 'payment_id'

EXTERNAL_TXN_ID class-attribute instance-attribute

EXTERNAL_TXN_ID = 'external_txn_id'

L2_DECLARED_NAME class-attribute instance-attribute

L2_DECLARED_NAME = 'l2_declared_name'

can_assign_to

can_assign_to(other: 'ColumnShape') -> bool

True iff a value of self is acceptable into a other param.

Identical shapes are always assignable. SUBLEDGER_ACCOUNT_ID and LEDGER_ACCOUNT_ID widen to ACCOUNT_ID (the destination daily_balances.account_id column holds both ledger and sub-ledger ids). Date encodings do NOT widen — DATETIME and YYYY-MM-DD text are different wire types and cross-wiring them is the K.2 bug class.

ColumnSpec dataclass

Declared column on a dataset's contract.

display_name (v8.5.0): plain-English header label QuickSight table visuals use as the column header. When omitted, defaults to a title-cased rewrite of the snake_case name — e.g. account_id → "Account ID" (with smart-uppercasing of common initialisms via _smart_title). Override when the auto-derived form is awkward — e.g. amount_money defaults to "Amount Money", but Investigation tables read better with the explicit override "Amount" since the surrounding context already implies money.

name instance-attribute

name: str

type instance-attribute

type: str

shape class-attribute instance-attribute

shape: ColumnShape | None = None

display_name class-attribute instance-attribute

display_name: str | None = None

human_name property

human_name: str

Plain-English header label for this column.

display_name if set, else snake_case → "Title Case" with common initialisms preserved (id → ID, eod → EOD, etc.).

__init__

__init__(name: str, type: str, shape: ColumnShape | None = None, display_name: str | None = None) -> None

to_input_column

to_input_column() -> InputColumn

DatasetContract dataclass

columns instance-attribute

columns: list[ColumnSpec]

column_names property

column_names: list[str]

__init__

__init__(columns: list[ColumnSpec]) -> None

to_input_columns

to_input_columns() -> list[InputColumn]

column

column(name: str) -> ColumnSpec

register_contract

register_contract(visual_identifier: str, contract: DatasetContract) -> None

Register a visual_identifier -> contract mapping for shape lookup.

The key is the visual identifier (e.g. "ar-ledger-balance-drift-ds"), the same string the visuals use as DataSetIdentifier= and that the analysis maps to a real DataSet ARN via DataSetIdentifierDeclaration.

Idempotent for the same (visual_identifier, contract) pair; raises if a different contract is already registered under the same identifier (catches accidental identifier collisions).

get_contract

get_contract(visual_identifier: str) -> DatasetContract

Look up the contract registered under visual_identifier.

Raises KeyError if not registered — usually means the dataset hasn't been built yet in the current process. Tests / generators should call build_dataset() before reaching code that resolves drill source fields.

dataset_permissions

dataset_permissions(cfg: Config) -> list[ResourcePermission] | None

build_dataset

build_dataset(cfg: Config, dataset_id: str, name: str, table_key: str, sql: str, contract: DatasetContract, visual_identifier: str, dataset_parameters: list[DatasetParameter] | None = None) -> DataSet

Build an AWS-shape DataSet.

dataset_parameters: optional list of dataset-level parameters that get substituted into sql via the <<$paramName>> syntax at QuickSight query time. Bridge to analysis params via MappedDataSetParameters on the analysis ParameterDeclaration.

URL builder for the CustomActionURLOperation — used when a drill needs to jump to another app's deployed dashboard with parameter values pre-set in the URL. (Note: per the L.6.7 / K.4.7 finding, the QuickSight URL parameter sync defect means controls don't update — data filters but the on-screen widget label stays "All".)

drill

Typed cross-sheet drill helpers.

K.2 spike caught a sneaky bug class: a drill action bound a DATETIME source column (exception_date) to a SINGLE_VALUED string parameter (pArActivityDate), and QuickSight silently coerced it to a full timestamp text "2026-04-07 00:00:00.000" that never matched the destination's TO_CHAR-formatted posted_date column. Both ends were "STRING" at the AWS coarse-type level, but the textual encodings differed and the destination filter quietly produced zero rows. Bugs like this look like missing data, not broken wiring — corrosive to user trust.

Per the user's "encode invariants in the type system" preference, the fix isn't a validation test that walks the generated output; it's a typed constructor that refuses to wire incompatible shapes at all. The typed wrappers here let any wrong wiring fail at the call site with a TypeError that names both sides of the mismatch.

Usage::

from quicksight_gen.common.drill import (
    DrillParam, DrillResetSentinel, cross_sheet_drill, field_source,
)

P_AR_ACCOUNT = DrillParam("pArAccountId", ColumnShape.ACCOUNT_ID)

cross_sheet_drill(
    action_id="...",
    name="View Transactions for Account-Day",
    target_sheet=SHEET_AR_TRANSACTIONS,
    writes=[
        (P_AR_ACCOUNT, field_source("ar-todays-exc-account",
                                    DS_AR_UNIFIED_EXCEPTIONS, "account_id")),
        (P_AR_ACTIVITY_DATE, field_source(...)),
        (P_AR_TRANSFER, DrillResetSentinel()),
    ],
    trigger="DATA_POINT_MENU",
)

DRILL_RESET_SENTINEL_VALUE module-attribute

DRILL_RESET_SENTINEL_VALUE = '__ALL__'

DrillWriteValue module-attribute

DrillWrite module-attribute

DrillWrite = tuple[DrillParam, DrillWriteValue]

DrillParam dataclass

Destination parameter on a drill action — name + expected shape.

The shape captures the parameter's value semantics; set_drill_parameters refuses to write a source field whose shape differs.

name instance-attribute

shape instance-attribute

shape: ColumnShape

__init__

__init__(name: ParameterName, shape: ColumnShape) -> None

DrillSourceField dataclass

Source field on a drill action — visual field id + resolved shape.

Build via field_source(field_id, dataset_id, column_name) so the shape is read from the dataset contract, not duplicated by hand.

field_id instance-attribute

field_id: str

shape instance-attribute

shape: ColumnShape

__init__

__init__(field_id: str, shape: ColumnShape) -> None

DrillResetSentinel dataclass

Marker that a drill should reset a parameter to the sentinel value.

The destination calc-field filter recognizes the sentinel as PASS, so writing this clears the filter without needing an empty-string or null-value path that QuickSight's drill-action code path won't deliver to calc fields cleanly.

value class-attribute instance-attribute

__init__

__init__(value: str = DRILL_RESET_SENTINEL_VALUE) -> None

DrillStaticDateTime dataclass

Marker that a drill should write a fixed ISO-8601 datetime literal to a DateTimeParam destination.

Use case: cross-sheet drills where the destination sheet has a universal date-range filter the source sheet doesn't share — e.g. L1's Pending Aging → Transactions. The aging sheet is a current-state view (rows can be arbitrarily old); the Transactions sheet's universal-filter window defaults to last 7 days. Without a date write the drill-target leg falls outside the destination's window and the table renders empty. Writing DrillStaticDateTime("1990-01-01T00:00:00.000Z") to the destination's date-start param widens the window so the drill- target row is always visible.

QuickSight has no "now" or "rolling" expression you can write via SetParametersOperation — the only options are SourceField (column ref) or static CustomValues. Pick the static value carefully so the picker-shown date isn't misleading; the L1 app uses "1990-01-01T..." for start and "2099-12-31T..." for end, framing the explicit "all time" intent.

Format: ISO-8601 with millisecond precision and the trailing Z, matching what the L2FT app already uses for its static StaticValues defaults.

value instance-attribute

value: str

__init__

__init__(value: str) -> None

field_source

field_source(field_id: str, dataset_id: str, column_name: str) -> DrillSourceField

Resolve column_name's shape from its registered dataset contract.

Raises TypeError if the column has no shape tag (it isn't drill- eligible), pointing at the call site so the developer can either tag the column in the contract or pick a different source column. Raises KeyError if the dataset_id isn't registered (usually means the dataset hasn't been built in this process yet — ensure build_all_datasets runs before visuals).

set_drill_parameters

set_drill_parameters(*writes: DrillWrite) -> CustomActionSetParametersOperation

Construct a CustomActionSetParametersOperation from typed writes.

Validates shape compatibility at construction time: writing a DrillSourceField whose shape doesn't match the DrillParam raises TypeError at the call site. DrillResetSentinel is always shape-compatible (it writes a literal sentinel string that the destination calc-field interprets, regardless of param shape).

Refuses an empty writes list — a no-op SetParametersOperation is almost certainly a wiring bug.

cross_sheet_drill

cross_sheet_drill(action_id: str, name: str, target_sheet: SheetId, writes: list[DrillWrite], trigger: Literal['DATA_POINT_CLICK', 'DATA_POINT_MENU'] = DATA_POINT_CLICK) -> VisualCustomAction

Build a NavigationOperation + SetParametersOperation drill.

QuickSight requires a NavigationOperation before a SetParametersOperation, even when the target is the current sheet (used for same-sheet ledger→subledger filtering). This helper wraps both operations in the canonical order so callers don't re-derive the shape.

Per K.2 cleanup: the typed writes list passes through set_drill_parameters so any shape mismatch fails here, at the wiring site, with both sides named.

Demo persona

DemoPersona is the typed skeleton for the per-institution flavor strings the handbook templates substitute (institution name + acronym, upstream stakeholders, GL account labels, merchant names, free-form flavor literals). Per-institution content lives in the L2 YAML's persona: block and is loaded into L2Instance.persona by common/l2/loader.py. Empty-default fields are the "no flavor" shape — handbook templates render neutral prose derived from L2 primitives in that case.

persona

Demo persona — typed skeleton for L2-instance flavor strings.

DemoPersona collects per-institution flavor (institution name + acronym, upstream stakeholders, GL account labels, merchant names, free-form flavor strings) into one dataclass loaded from the L2 YAML's persona: block. Every field defaults to the empty tuple so an L2 without a persona: block loads cleanly — the handbook templates treat that as "no persona content" and render neutral prose derived from the L2 primitives instead (account descriptions, role names).

Phase Q.5.e moved the bundled fixture's flavor into its YAML's persona: block; this module no longer carries institution-specific strings. See tests/test_persona.py for the round-trip from YAML through L2Instance.persona to the handbook vocabulary.

GLAccount dataclass

One GL account that appears in both the demo seed and the handbook.

code is the bare prefix (e.g. gl-1010) that joins to the seed account roster; name is the canonical display name; note is a one-line hint surfaced in handbook prose.

code instance-attribute

code: str

name instance-attribute

name: str

note class-attribute instance-attribute

note: str = ''

__init__

__init__(code: str, name: str, note: str = '') -> None

DemoPersona dataclass

Per-institution flavor strings loaded from an L2 persona: block.

Each field defaults to an empty tuple — handbook templates check for non-empty before rendering persona-rich prose, falling back to neutral L2-primitive-derived prose otherwise.

  • institution(name, acronym) tuple, optional region and legacy_entity follow-ons.
  • stakeholders — flat list of upstream-counterparty display strings ("Federal Reserve Bank", "the Fed" etc.).
  • gl_accounts — typed GL display labels for the chart-of-accounts narrative.
  • merchants — display names of merchant DDAs the seed plants.
  • flavor — free-form persona strings (sample customer name, region descriptor, legacy-entity callout).

institution class-attribute instance-attribute

institution: tuple[str, ...] = field(default_factory=tuple)

stakeholders class-attribute instance-attribute

stakeholders: tuple[str, ...] = field(default_factory=tuple)

gl_accounts class-attribute instance-attribute

gl_accounts: tuple[GLAccount, ...] = field(default_factory=tuple)

merchants class-attribute instance-attribute

merchants: tuple[str, ...] = field(default_factory=tuple)

flavor class-attribute instance-attribute

flavor: tuple[str, ...] = field(default_factory=tuple)

__init__

__init__(institution: tuple[str, ...] = tuple(), stakeholders: tuple[str, ...] = tuple(), gl_accounts: tuple[GLAccount, ...] = tuple(), merchants: tuple[str, ...] = tuple(), flavor: tuple[str, ...] = tuple()) -> None