datamasque.client.models package¶
Submodules¶
datamasque.client.models.connection module¶
Connection configuration models for the DataMasque API.
- class datamasque.client.models.connection.AzureConnectionConfig(*, name: str, id: ConnectionId | None = None, base_directory: str = '', is_file_mask_source: bool = False, is_file_mask_destination: bool = False, mask_type: Literal['file'] = 'file', type: Literal['azure_blob_connection'] = 'azure_blob_connection', container: str = '', connection_string: str | None = None, **extra_data: Any)[source]¶
Bases:
FileConnectionConfigConnection configuration for an Azure Blob Storage container.
connection_stringcomes back encrypted fromlist_connectionsand is write-only in practice.- connection_string: str | None¶
- container: str¶
- type: Literal['azure_blob_connection']¶
- class datamasque.client.models.connection.ConnectionConfig(*, name: str, id: ConnectionId | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelBase class for all connection configurations.
Use
validate_connection(payload)to deserialize an API response into the appropriate concrete subclass.- id: ConnectionId | None¶
- name: str¶
- class datamasque.client.models.connection.DatabaseConnectionConfig(*, name: str, id: ConnectionId | None = None, host: str, port: int, database: str, user: str, password: str | None = None, database_type: DatabaseType, engine_options: dict | None = None, schema: str | None = None, data_encoding: str | None = None, is_read_only: bool = False, s3_bucket_name: str | None = None, s3_redshift_iam_role: str | None = None, mask_type: Literal['database'] = 'database', **extra_data: Any)[source]¶
Bases:
ConnectionConfigConnection configuration for a SQL database.
Use
DynamoConnectionConfigfor DynamoDB,SnowflakeConnectionConfigfor Snowflake, andMongoConnectionConfigfor MongoDB.- data_encoding: str | None¶
- database: str¶
- database_type: DatabaseType¶
- db_schema: str | None¶
- property db_type: str¶
- engine_options: dict | None¶
- host: str¶
- is_read_only: bool¶
- mask_type: Literal['database']¶
- password: str | None¶
- port: int¶
- s3_bucket_name: str | None¶
- s3_redshift_iam_role: str | None¶
- user: str¶
- class datamasque.client.models.connection.DatabaseType(*values)[source]¶
Bases:
EnumSupported database engines for
DatabaseConnectionConfig.- databricks = 'databricks'¶
- databricks_lakebase = 'databricks_lakebase'¶
- db2_luw = 'db2_luw'¶
- db2i = 'db2i'¶
- dynamodb = 'dynamo_db'¶
- mariadb = 'mariadb'¶
- mongodb = 'mongodb'¶
- mssql_linked = 'mssql_linked'¶
- mysql = 'mysql'¶
- oracle = 'oracle'¶
- postgres = 'postgres'¶
- redshift = 'redshift'¶
- snowflake = 'snowflake'¶
- sql_server = 'mssql'¶
- class datamasque.client.models.connection.DatabricksConnectionConfig(*, name: str, id: ConnectionId | None = None, server_hostname: str, http_path: str, access_token: str | None = None, catalog: str, schema: str | None = None, is_read_only: bool = False, version: str = '1.0', mask_type: Literal['database'] = 'database', db_type: Literal['databricks'] = 'databricks', **extra_data: Any)[source]¶
Bases:
ConnectionConfigConnection configuration for a Databricks SQL Warehouse.
- access_token: str | None¶
- catalog: str¶
- property database_type: DatabaseType¶
- db_schema: str | None¶
- db_type: Literal['databricks']¶
- http_path: str¶
- is_read_only: bool¶
- mask_type: Literal['database']¶
- server_hostname: str¶
- version: str¶
- class datamasque.client.models.connection.DynamoConnectionConfig(*, name: str, id: ConnectionId | None = None, s3_bucket_name: str | None = None, dynamo_append_datetime: bool = False, dynamo_append_suffix: str = '-MASKED', dynamo_replace_tables: bool = True, dynamo_default_region: str | None = None, dynamo_default_sse: SseConfig = SseConfig(selection=<SseSelection.dynamodb_owned: 'dynamodb_owned'>, kms_key_id=None), iam_role_arn: str | None = None, export_s3_prefix: str | None = None, mask_type: Literal['database'] = 'database', db_type: Literal['dynamo_db'] = 'dynamo_db', **extra_data: Any)[source]¶
Bases:
ConnectionConfigConnection configuration for a DynamoDB table.
- property database_type: DatabaseType¶
- db_type: Literal['dynamo_db']¶
- dynamo_append_datetime: bool¶
- dynamo_append_suffix: str¶
- dynamo_default_region: str | None¶
- dynamo_replace_tables: bool¶
- export_s3_prefix: str | None¶
- iam_role_arn: str | None¶
- mask_type: Literal['database']¶
- s3_bucket_name: str | None¶
- class datamasque.client.models.connection.FileConnectionConfig(*, name: str, id: ConnectionId | None = None, base_directory: str = '', is_file_mask_source: bool = False, is_file_mask_destination: bool = False, mask_type: Literal['file'] = 'file', **extra_data: Any)[source]¶
Bases:
ConnectionConfigAbstract base for file-based connections.
is_file_mask_sourceandis_file_mask_destinationcontrol whether the connection can be used as the source, destination, or both of a masking run.- base_directory: str¶
- is_file_mask_destination: bool¶
- is_file_mask_source: bool¶
- mask_type: Literal['file']¶
- class datamasque.client.models.connection.MongoConnectionConfig(*, name: str, id: ConnectionId | None = None, host: str = '', port: int = 27017, database: str = '', user: str = '', password: str | None = None, auth_source: str = 'admin', tls: bool = False, direct_connection: bool = False, replica_set: str = '', is_read_only: bool = False, mask_type: Literal['database'] = 'database', db_type: Literal['mongodb'] = 'mongodb', **extra_data: Any)[source]¶
Bases:
ConnectionConfigConnection configuration for a MongoDB instance.
- auth_source: str¶
- database: str¶
- property database_type: DatabaseType¶
- db_type: Literal['mongodb']¶
- direct_connection: bool¶
- host: str¶
- is_read_only: bool¶
- mask_type: Literal['database']¶
- password: str | None¶
- port: int¶
- replica_set: str¶
- tls: bool¶
- user: str¶
Bases:
FileConnectionConfigConnection configuration for a mounted file share.
- class datamasque.client.models.connection.MssqlLinkedServerConnectionConfig(*, name: str, id: ConnectionId | None = None, host: str, port: int, database: str, user: str, password: str | None = None, database_type: DatabaseType, engine_options: dict | None = None, schema: str | None = None, data_encoding: str | None = None, is_read_only: bool = False, s3_bucket_name: str | None = None, s3_redshift_iam_role: str | None = None, mask_type: Literal['database'] = 'database', linked_server: str = '', **extra_data: Any)[source]¶
Bases:
DatabaseConnectionConfigConnection configuration for a Microsoft SQL Server linked-server setup.
- linked_server: str¶
- class datamasque.client.models.connection.S3ConnectionConfig(*, name: str, id: ConnectionId | None = None, base_directory: str = '', is_file_mask_source: bool = False, is_file_mask_destination: bool = False, mask_type: Literal['file'] = 'file', type: Literal['s3_connection'] = 's3_connection', bucket: str = '', iam_role_arn: str | None = None, **extra_data: Any)[source]¶
Bases:
FileConnectionConfigConnection configuration for an S3 bucket.
- bucket: str¶
- iam_role_arn: str | None¶
- type: Literal['s3_connection']¶
- class datamasque.client.models.connection.SnowflakeConnectionConfig(*, name: str, id: ConnectionId | None = None, database: str, user: str, snowflake_account_id: str, snowflake_warehouse: str, snowflake_storage_integration_name: str, host: str = '', port: int | None = None, schema: str | None = None, snowflake_role: str = '', is_read_only: bool = False, password: str | None = None, snowflake_private_key: FileId | None = None, snowflake_private_key_passphrase: str | None = None, snowflake_stage_location: SnowflakeStageLocation | None = None, s3_bucket_name: str | None = None, iam_role_arn: str | None = None, snowflake_azure_container_name: str | None = None, snowflake_azure_connection_string: str | None = None, snowflake_azure_connection_string_encrypted: str | None = None, mask_type: Literal['database'] = 'database', db_type: Literal['snowflake'] = 'snowflake', **extra_data: Any)[source]¶
Bases:
ConnectionConfigConnection configuration for a Snowflake database.
Supports password authentication (
password) and key-pair authentication (snowflake_private_key+ optionalsnowflake_private_key_passphrase).- database: str¶
- property database_type: DatabaseType¶
- db_schema: str | None¶
- db_type: Literal['snowflake']¶
- host: str¶
- iam_role_arn: str | None¶
- is_read_only: bool¶
- mask_type: Literal['database']¶
- password: str | None¶
- port: int | None¶
- s3_bucket_name: str | None¶
- snowflake_account_id: str¶
- snowflake_azure_connection_string: str | None¶
- snowflake_azure_connection_string_encrypted: str | None¶
- snowflake_azure_container_name: str | None¶
- snowflake_private_key: FileId | None¶
- snowflake_private_key_passphrase: str | None¶
- snowflake_role: str¶
- snowflake_stage_location: SnowflakeStageLocation | None¶
- snowflake_storage_integration_name: str¶
- snowflake_warehouse: str¶
- user: str¶
- class datamasque.client.models.connection.SnowflakeStageLocation(*values)[source]¶
Bases:
str,EnumStorage backend for a Snowflake connection’s external stage.
- aws_s3 = 'aws_s3'¶
- azure_blob_storage = 'azure_blob_storage'¶
- local = 'local'¶
- class datamasque.client.models.connection.SseConfig(*, selection: SseSelection, kms_key_id: str | None = None)[source]¶
Bases:
BaseModelServer-side encryption configuration for a DynamoDB connection.
kms_key_idis required whenselectionisSseSelection.account_managedand must beNonefor every other selection.- kms_key_id: str | None¶
- selection: SseSelection¶
- class datamasque.client.models.connection.SseSelection(*values)[source]¶
Bases:
EnumMirrors the available options in the AWS console for DynamoDB Server-Side Encryption.
- account_managed = 'account_managed'¶
- aws_managed = 'aws_managed'¶
- dynamodb_owned = 'dynamodb_owned'¶
- use_source = 'use_source'¶
- datamasque.client.models.connection.unwrap_connection_id(value: Any) Any[source]¶
Coerce a
ConnectionConfigto itsid; pass other values through unchanged.Used by request-model validators that accept either a
ConnectionIdor a fullConnectionConfigfor user convenience. RaisesValueErrorif the config has noid(i.e. the caller hasn’t yet created it on the server).
- datamasque.client.models.connection.validate_connection(payload: dict) ConnectionConfig[source]¶
Validate an API response payload into the appropriate concrete
ConnectionConfigsubclass.Dispatches on
mask_type, then ontype(file) ordb_type(database).
datamasque.client.models.data_selection module¶
Models related to data selection in endpoints such as /api/async-generate-ruleset.
- class datamasque.client.models.data_selection.HashColumnsTableConfig(*, table: list[str] | None = None, columns: dict[str, list[str] | None] | None = None)[source]¶
Bases:
BaseModelConfiguration for
hash_columnsat the table level.tablecontains table-level hash column defaults applied to all selected columns.columnscontains per-column overrides (Noneor[]disables hashing for that column).- columns: dict[str, list[str] | None] | None¶
- table: list[str] | None¶
- datamasque.client.models.data_selection.JsonPath¶
A path into a JSON/structured document, e.g.
["employees", 0, "firstName"]or["users", "*", "email"]. String elements are object keys (or the*wildcard), and integer elements are list indices.alias of
list[str|int]
- datamasque.client.models.data_selection.Locator¶
A locator identifying a masked value within a file. - Tabular files (CSV, parquet, fixed-width) use a bare string column name, e.g.
"email". - Structured files (JSON) use aJsonPath, e.g.["employees", "*", "email"].alias of
str|list[str|int]
- class datamasque.client.models.data_selection.SelectedColumns(*, columns: dict[str, dict[str, list[str]]], hash_columns: dict[str, dict[str, HashColumnsTableConfig]] | None = None)[source]¶
Bases:
BaseModelSelected columns and hash columns for database masking ruleset generation.
- columns: dict[str, dict[str, list[str]]]¶
- hash_columns: dict[str, dict[str, HashColumnsTableConfig]] | None¶
- class datamasque.client.models.data_selection.SelectedFileData(*, user_selections: list[UserSelection])[source]¶
Bases:
BaseModelSelected files and locators for file masking ruleset generation.
- user_selections: list[UserSelection]¶
datamasque.client.models.discovery module¶
Typed request and response shapes for schema-discovery and ruleset-generation endpoints.
- class datamasque.client.models.discovery.ConstraintColumns(*, columns: list[str], **extra_data: Any)[source]¶
Bases:
BaseModelA constraint’s column list in table metadata.
- columns: list[str]¶
- class datamasque.client.models.discovery.DiscoveryMatch(*, label: str, categories: list[str], flagged_by: str, description: str, hit_ratio: int | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelA single match found by schema or file discovery.
- categories: list[str]¶
- description: str¶
- flagged_by: str¶
- hit_ratio: int | None¶
- label: str¶
- class datamasque.client.models.discovery.FileDiscoveryFile(*, path: str | None = None, file_type: str | None = None, delimiter: str | None = None, encoding: str | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelA file entry in a file discovery result.
- delimiter: str | None¶
- encoding: str | None¶
- file_type: str | None¶
- path: str | None¶
- class datamasque.client.models.discovery.FileDiscoveryLocatorResult(*, locator: str | list[str | int] | None = None, matches: list[FileDiscoveryMatch] | None = None, data_types: list[str] | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelA locator (column/path) within a discovered file.
- data_types: list[str] | None¶
- locator: str | list[str | int] | None¶
- matches: list[FileDiscoveryMatch] | None¶
- class datamasque.client.models.discovery.FileDiscoveryMatch(*, categories: list[str] | None = None, flagged_by: str | None = None, description: str | None = None, label: str | None = None, hit_ratio: int | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelA single match in a file discovery locator.
- categories: list[str] | None¶
- description: str | None¶
- flagged_by: str | None¶
- hit_ratio: int | None¶
- label: str | None¶
- class datamasque.client.models.discovery.FileDiscoveryResult(*, id: int | None = None, connection: Any | None = None, file_type: str | None = None, files: list[FileDiscoveryFile] | None = None, results: list[FileDiscoveryLocatorResult] | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelA single record from
GET /api/runs/{run_id}/file-discovery-results/.- connection: Any | None¶
- file_type: str | None¶
- files: list[FileDiscoveryFile] | None¶
- id: int | None¶
- results: list[FileDiscoveryLocatorResult] | None¶
- class datamasque.client.models.discovery.FileRulesetGenerationRequest(*, connection: ConnectionId | ConnectionConfig, selected_data: list[UserSelection])[source]¶
Bases:
BaseModelRequest body for
POST /api/generate-file-ruleset/.connectionaccepts either aConnectionIdor a fullConnectionConfigreturned by an earlier client call.- connection: ConnectionId | ConnectionConfig¶
- selected_data: list[UserSelection]¶
- class datamasque.client.models.discovery.ForeignKeyRef(*, name: str, referenced_column: str, **extra_data: Any)[source]¶
Bases:
BaseModelA foreign key declared on a column, pointing to another column it references.
- name: str¶
- referenced_column: str¶
- class datamasque.client.models.discovery.InDataDiscoveryConfig(*, enabled: bool | None = None, row_sample_size: int | None = None, custom_rules: list[InDataDiscoveryRule] | None = None, non_sensitive_rules: list[InDataDiscoveryRule] | None = None, force: bool | None = None)[source]¶
Bases:
BaseModelIn-data discovery configuration nested under
SchemaDiscoveryRequest.in_data_discovery.- custom_rules: list[InDataDiscoveryRule] | None¶
- enabled: bool | None¶
- force: bool | None¶
- non_sensitive_rules: list[InDataDiscoveryRule] | None¶
- row_sample_size: int | None¶
- class datamasque.client.models.discovery.InDataDiscoveryRule(*, name: str | None = None, pattern: str)[source]¶
Bases:
BaseModelA single rule for in-data discovery.
- name: str | None¶
- pattern: str¶
- class datamasque.client.models.discovery.ReferencingForeignKey(*, name: str, referencing_column: str, **extra_data: Any)[source]¶
Bases:
BaseModelA foreign key declared on another column that points at this column.
- name: str¶
- referencing_column: str¶
- class datamasque.client.models.discovery.RulesetGenerationRequest(*, connection: ConnectionId | ConnectionConfig, selected_columns: dict[str, dict[str, list[str]]], hash_columns: dict[str, dict[str, HashColumnsTableConfig]] | None = None)[source]¶
Bases:
BaseModelRequest body for
POST /api/generate-ruleset/v2/.connectionaccepts either aConnectionIdor a fullConnectionConfigreturned by an earlier client call.selected_columnsis the same nestedschema -> table -> [column, ...]mapping used bySelectedColumns.columns, andhash_columnsfollows theHashColumnsTableConfigshape.- connection: ConnectionId | ConnectionConfig¶
- hash_columns: dict[str, dict[str, HashColumnsTableConfig]] | None¶
- selected_columns: dict[str, dict[str, list[str]]]¶
- class datamasque.client.models.discovery.SchemaDiscoveryColumn(*, data_type: str | None = None, max_length: int | None = None, foreign_keys: list[ForeignKeyRef], discovery_matches: list[DiscoveryMatch], numeric_precision: int | None = None, numeric_scale: int | None = None, constraint_columns: list[str], pk_constraint_name: str | None = None, uk_constraint_name: str | None = None, unique_index_names: list[str], referencing_foreign_keys: list[ReferencingForeignKey], constraint: str, **extra_data: Any)[source]¶
Bases:
BaseModelColumn-level data in a schema discovery result.
- constraint: str¶
- constraint_columns: list[str]¶
- data_type: str | None¶
- discovery_matches: list[DiscoveryMatch]¶
- foreign_keys: list[ForeignKeyRef]¶
- max_length: int | None¶
- numeric_precision: int | None¶
- numeric_scale: int | None¶
- pk_constraint_name: str | None¶
- referencing_foreign_keys: list[ReferencingForeignKey]¶
- uk_constraint_name: str | None¶
- unique_index_names: list[str]¶
- class datamasque.client.models.discovery.SchemaDiscoveryPage(*, count: int, next: str | None = None, previous: str | None = None, results: list[SchemaDiscoveryResult], table_metadata: dict[str, dict[str, TableConstraints]] | None = None, **extra_data: Any)[source]¶
Bases:
Page[SchemaDiscoveryResult]Admin-server envelope for
GET /api/schema-discovery/v2/{run_id}/.Extends the standard
Pagewithtable_metadata.- table_metadata: dict[str, dict[str, TableConstraints]] | None¶
- class datamasque.client.models.discovery.SchemaDiscoveryRequest(*, connection: ConnectionId | ConnectionConfig, custom_keywords: list[str] = <factory>, ignored_keywords: list[str] = <factory>, schemas: list[str] = <factory>, in_data_discovery: InDataDiscoveryConfig | None = None, disable_built_in_keywords: bool = False, disable_global_custom_keywords: bool = False, disable_global_ignored_keywords: bool = False)[source]¶
Bases:
BaseModelRequest body for
POST /api/schema-discovery/.connectionaccepts either aConnectionIdor a fullConnectionConfigreturned by an earlier client call. Every other field uses the server’s default value when omitted.- connection: ConnectionId | ConnectionConfig¶
- custom_keywords: list[str]¶
- disable_built_in_keywords: bool¶
- disable_global_custom_keywords: bool¶
- disable_global_ignored_keywords: bool¶
- ignored_keywords: list[str]¶
- in_data_discovery: InDataDiscoveryConfig | None¶
- schemas: list[str]¶
- class datamasque.client.models.discovery.SchemaDiscoveryResult(*, id: int, column: str, table: str, schema: str | None = None, data: SchemaDiscoveryColumn, **extra_data: Any)[source]¶
Bases:
BaseModelA single row in the v2 schema discovery results.
- column: str¶
- data: SchemaDiscoveryColumn¶
- id: int¶
- schema_name: str | None¶
- table: str¶
- class datamasque.client.models.discovery.TableConstraints(*, primary_keys: list[ConstraintColumns] | None = None, unique_keys: list[ConstraintColumns] | None = None, foreign_keys: list[ConstraintColumns] | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelConstraint metadata for a single table.
- foreign_keys: list[ConstraintColumns] | None¶
- primary_keys: list[ConstraintColumns] | None¶
- unique_keys: list[ConstraintColumns] | None¶
datamasque.client.models.dm_instance module¶
- class datamasque.client.models.dm_instance.DataMasqueInstanceConfig(*, base_url: str, username: str, password: str | None = None, verify_ssl: bool = True, token_source: Callable[[], str] | None = None)[source]¶
Bases:
BaseModelConnection configuration for
DataMasqueClient.base_urlis the root URL of the DataMasque admin server (e.g.https://datamasque.example.com/). Setverify_ssl=Falseto skip TLS certificate verification (only use this with a self-signed certificate; do not disable it otherwise). Exactly one ofpasswordortoken_sourcemust be set.token_sourceis a user-supplied callable that returns the bare API token string — the hex value returned byPOST /api/auth/token/login/; the client prepends it withToken ` when sending the `Authorizationheader. The client callstoken_sourceon each authentication attempt, so the callable is free to fetch and refresh tokens out-of-band (e.g. from a secrets manager).- base_url: str¶
- password: str | None¶
- token_source: Callable[[], str] | None¶
- username: str¶
- verify_ssl: bool¶
datamasque.client.models.files module¶
- class datamasque.client.models.files.DataMasqueFile(*, name: str, created_date: datetime, modified_date: datetime | None = None, id: FileId | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelBase class for the concrete file types (
SeedFile,OracleWalletFile,SslZipFile,SnowflakeKeyFile).- created_date: datetime¶
- abstractmethod classmethod get_content_param_name() str[source]¶
Returns the multipart form field name used when uploading files of this type.
- id: FileId | None¶
- modified_date: datetime | None¶
- name: str¶
- class datamasque.client.models.files.OracleWalletFile(*, name: str, created_date: datetime, modified_date: datetime | None = None, id: FileId | None = None, **extra_data: Any)[source]¶
Bases:
DataMasqueFileRepresents an Oracle wallet file (ZIP file).
- class datamasque.client.models.files.SeedFile(*, name: str, created_date: datetime, modified_date: datetime | None = None, id: FileId | None = None, **extra_data: Any)[source]¶
Bases:
DataMasqueFileRepresents a seed file (CSV file).
- class datamasque.client.models.files.SnowflakeKeyFile(*, name: str, created_date: datetime, modified_date: datetime | None = None, id: FileId | None = None, **extra_data: Any)[source]¶
Bases:
DataMasqueFileRepresents a private SSH key file for Snowflake connections.
- class datamasque.client.models.files.SslZipFile(*, name: str, created_date: datetime, modified_date: datetime | None = None, id: FileId | None = None, **extra_data: Any)[source]¶
Bases:
DataMasqueFileRepresents a ZIP file of SSL certificates used to establish secure database connections.
datamasque.client.models.ifm module¶
Typed request and response shapes for the IFM (in-flight masking) HTTP API.
- class datamasque.client.models.ifm.DataMasqueIfmInstanceConfig(*, admin_server_base_url: str, ifm_base_url: str, username: str, password: str | None = None, verify_ssl: bool = True, token_source: Callable[[], str] | None = None)[source]¶
Bases:
BaseModelConnection configuration for
DataMasqueIfmClient.admin_server_base_urlis where JWTs are obtained and refreshed;ifm_base_urlis where the IFM API itself lives (typically a separate hostname or the admin server with/ifmprefix). Exactly one ofpasswordortoken_sourcemust be set.token_sourceis a user-supplied callable that returns the bare JWT access token string — the value issued by the admin server’s/api/auth/jwt/login/endpoint; the client prepends it withBearer ` when sending the `Authorizationheader. The client callstoken_sourceon each authentication and refresh, so the callable is free to fetch and refresh tokens out-of-band (e.g. from a secrets manager).- admin_server_base_url: str¶
- ifm_base_url: str¶
- password: str | None¶
- token_source: Callable[[], str] | None¶
- username: str¶
- verify_ssl: bool¶
- class datamasque.client.models.ifm.IfmLog(*, log_level: str, timestamp: str, message: str, **extra_data: Any)[source]¶
Bases:
BaseModelA single log entry produced by IFM during a mask call or a ruleset-plan validation.
- log_level: str¶
- message: str¶
- timestamp: str¶
- class datamasque.client.models.ifm.IfmMaskRequest(*, data: list[Any], disable_instance_secret: bool | None = None, run_secret: str | None = None, hash_values: Any | None = None, log_level: str | None = None, request_id: str | None = None, ai_engine_url: str | None = None)[source]¶
Bases:
BaseModelRequest body for
POST /ruleset-plans/{name}/mask/.datais the list of records to be masked; every other field overrides server defaults configured on the plan.- ai_engine_url: str | None¶
- data: list[Any]¶
- disable_instance_secret: bool | None¶
- hash_values: Any | None¶
- log_level: str | None¶
- request_id: str | None¶
- run_secret: str | None¶
- class datamasque.client.models.ifm.IfmMaskResult(*, success: bool, request_id: str | None = None, ruleset_plan: IfmRulesetPlanRef | None = None, logs: list[IfmLog] | None = None, data: list[Any] | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelResponse shape for
POST /ruleset-plans/{name}/mask/.successis populated by the client based on the HTTP status the server returned:True— masking completed;datacarries the masked records (possibly an empty list if the request had no input).False— the server rejected the request with a soft failure (e.g. a masking function received an unsupported value type);datais omitted and details surface inlogs.
Hard failures (plan not found, auth, transport) still raise rather than producing an
IfmMaskResult.- data: list[Any] | None¶
- request_id: str | None¶
- ruleset_plan: IfmRulesetPlanRef | None¶
- success: bool¶
- class datamasque.client.models.ifm.IfmRulesetPlanRef(*, name: str, serial: int, **extra_data: Any)[source]¶
Bases:
BaseModelReference to a ruleset plan embedded in a mask response.
- name: str¶
- serial: int¶
- class datamasque.client.models.ifm.IfmTokenInfo(*, scopes: list[str], **extra_data: Any)[source]¶
Bases:
BaseModelResponse body for
GET /verify-token/— the list of scopes granted to the current JWT.- scopes: list[str]¶
- class datamasque.client.models.ifm.RulesetPlan(*, name: str, serial: int, created_time: datetime, modified_time: datetime, options: RulesetPlanOptions, ruleset_yaml: str | None = None, logs: list[IfmLog] | None = None, url: str | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelUnified model for IFM ruleset plans.
Collapses the list/detail/create/update response shapes into one model with optional fields for parts that differ by endpoint.
- created_time: datetime¶
- modified_time: datetime¶
- name: str¶
- options: RulesetPlanOptions¶
- ruleset_yaml: str | None¶
- serial: int¶
- url: str | None¶
- class datamasque.client.models.ifm.RulesetPlanCreateRequest(*, name: str, ruleset_yaml: str, options: RulesetPlanOptions | None = None)[source]¶
Bases:
BaseModelRequest body for
POST /ifm/ruleset-plans/.- name: str¶
- options: RulesetPlanOptions | None¶
- ruleset_yaml: str¶
- class datamasque.client.models.ifm.RulesetPlanOptions(*, enabled: bool | None = None, default_encoding: str | None = None, default_charset: str | None = None, default_log_level: str | None = None)[source]¶
Bases:
BaseModelServer-defined defaults applied when a mask request omits the corresponding fields.
All keys are optional; callers can supply any subset (or none) and the IFM server fills in remaining defaults.
- default_charset: str | None¶
- default_encoding: str | None¶
- default_log_level: str | None¶
- enabled: bool | None¶
- class datamasque.client.models.ifm.RulesetPlanPartialUpdateRequest(*, ruleset_yaml: str | None = None, options: RulesetPlanOptions | None = None)[source]¶
Bases:
BaseModelRequest body for
PATCH /ifm/ruleset-plans/{name}/— every field is optional.- options: RulesetPlanOptions | None¶
- ruleset_yaml: str | None¶
- class datamasque.client.models.ifm.RulesetPlanUpdateRequest(*, ruleset_yaml: str, options: RulesetPlanOptions | None = None)[source]¶
Bases:
BaseModelRequest body for
PUT /ifm/ruleset-plans/{name}/.- options: RulesetPlanOptions | None¶
- ruleset_yaml: str¶
datamasque.client.models.license module¶
Typed response shape for the license endpoint.
- class datamasque.client.models.license.LicenseInfo(*, uuid: str, name: str, type: str, is_expired: bool, uploadable: bool, version: str | None = None, raw_type: str | None = None, expiry_date: datetime | None = None, quota_tb: float | None = None, maximum_node_count: int | None = None, row_limit: int | None = None, platform_name: str | None = None, platform_code: str | None = None, days_until_expiry: int | None = None, is_contract_product: bool | None = None, contract_license_type: str | None = None, switchable_license_metadata: SwitchableLicenseMetadata | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelLicense information returned by
GET /api/license/.Core fields (
uuid,name,type,is_expired,uploadable) are always present in the server response. Other fields vary by license type and server version.- contract_license_type: str | None¶
- days_until_expiry: int | None¶
- expiry_date: datetime | None¶
- is_contract_product: bool | None¶
- is_expired: bool¶
- maximum_node_count: int | None¶
- name: str¶
- platform_code: str | None¶
- platform_name: str | None¶
- quota_tb: float | None¶
- raw_type: str | None¶
- row_limit: int | None¶
- switchable_license_metadata: SwitchableLicenseMetadata | None¶
- type: str¶
- uploadable: bool¶
- uuid: str¶
- version: str | None¶
- class datamasque.client.models.license.SwitchableLicenseMetadata(*, can_switch_license_source: bool | None = None, license_source: str | None = None, license_select_time: datetime | None = None, aws_account_number: str | None = None, last_checkout_success_time: datetime | None = None, last_checkout_success_type: str | None = None, last_checkout_error: str | None = None, last_checkout_license_arn: str | None = None, last_checkout_product_name: str | None = None, last_checkout_contract_expiry: datetime | None = None, last_checkout_agreement_id: str | None = None, last_checkout_agreement_url: str | None = None, checkout_mode: str | None = None, selected_product_sku: str | None = None, allow_fallback: bool | None = None, last_checkout_success_license_count: int | None = None, iam_role_arn: str | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelMetadata for switchable license management (AWS Marketplace, etc.).
- allow_fallback: bool | None¶
- aws_account_number: str | None¶
- can_switch_license_source: bool | None¶
- checkout_mode: str | None¶
- iam_role_arn: str | None¶
- last_checkout_agreement_id: str | None¶
- last_checkout_agreement_url: str | None¶
- last_checkout_contract_expiry: datetime | None¶
- last_checkout_error: str | None¶
- last_checkout_license_arn: str | None¶
- last_checkout_product_name: str | None¶
- last_checkout_success_license_count: int | None¶
- last_checkout_success_time: datetime | None¶
- last_checkout_success_type: str | None¶
- license_select_time: datetime | None¶
- license_source: str | None¶
- selected_product_sku: str | None¶
datamasque.client.models.ruleset module¶
- class datamasque.client.models.ruleset.Ruleset(*, name: str, config_yaml: str = '', mask_type: RulesetType = RulesetType.database, id: RulesetId | None = None, is_valid: ValidationStatus | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelRepresents a ruleset.
- id: RulesetId | None¶
- is_valid: ValidationStatus | None¶
- name: str¶
- ruleset_type: RulesetType¶
- yaml: str¶
- class datamasque.client.models.ruleset.RulesetType(*values)[source]¶
Bases:
EnumRuleset type (database masking or file masking).
- database = 'database'¶
- file = 'file'¶
- datamasque.client.models.ruleset.unwrap_ruleset_id(value: Any) Any[source]¶
Coerce a
Rulesetto itsid; pass other values through unchanged.Used by request-model validators that accept either a
RulesetIdor a fullRulesetfor user convenience. RaisesValueErrorif the ruleset has noid(i.e. the caller hasn’t yet created it on the server).
datamasque.client.models.ruleset_library module¶
- class datamasque.client.models.ruleset_library.RulesetLibrary(*, name: str, namespace: str = '', config_yaml: str | None = None, id: RulesetLibraryId | None = None, is_valid: ValidationStatus | None = None, created: datetime | None = None, modified: datetime | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelRepresents a ruleset library.
- created: datetime | None¶
- id: RulesetLibraryId | None¶
- is_valid: ValidationStatus | None¶
- modified: datetime | None¶
- name: str¶
- namespace: str¶
- yaml: str | None¶
datamasque.client.models.runs module¶
Typed request and response shapes for run-related API endpoints.
- class datamasque.client.models.runs.MaskType(*values)[source]¶
Bases:
EnumType of a masking run.
- database = 'database'¶
- file = 'file'¶
- file_data_discovery = 'file_data_discovery'¶
- class datamasque.client.models.runs.MaskingRunOptions(*, batch_size: int | None = None, dry_run: bool | None = None, continue_on_failure: bool | None = None, max_rows: int | None = None, diagnostic_logging: bool | None = None, run_secret: Annotated[str | None, MinLen(min_length=16), MaxLen(max_length=256)] = None, disable_instance_secret: bool | None = None)[source]¶
Bases:
BaseModelOptional run-time overrides for
MaskingRunRequest.options.All fields optional; server applies defaults when omitted.
run_secret, if supplied, must be 16–256 characters and is used as the per-run encryption key; the server auto-generates one when omitted.- batch_size: int | None¶
- continue_on_failure: bool | None¶
- diagnostic_logging: bool | None¶
- disable_instance_secret: bool | None¶
- dry_run: bool | None¶
- max_rows: int | None¶
- run_secret: str | None¶
- class datamasque.client.models.runs.MaskingRunRequest(*, connection: ConnectionId | ConnectionConfig, ruleset: RulesetId | Ruleset, mask_type: MaskType = MaskType.database, destination_connection: ConnectionId | ConnectionConfig | None = None, options: MaskingRunOptions = <factory>, name: str | None = None)[source]¶
Bases:
BaseModelRequest body for
POST /api/runs/.connection,destination_connection, andrulesetaccept either the server-assigned ID or the corresponding object returned by an earlier client call (e.g. aConnectionConfigorRuleset); the object’sidis extracted at construction time.- connection: ConnectionId | ConnectionConfig¶
- destination_connection: ConnectionId | ConnectionConfig | None¶
- name: str | None¶
- options: MaskingRunOptions¶
- class datamasque.client.models.runs.RunConnectionRef(*, id: ConnectionId | None = None, name: str, **extra_data: Any)[source]¶
Bases:
BaseModelA reference to a connection used in a run — just the ID and display name.
- id: ConnectionId | None¶
- name: str¶
- class datamasque.client.models.runs.RunInfo(*, id: int, status: MaskingRunStatus, mask_type: MaskType, source_connection: RunConnectionRef, ruleset_name: str, name: str | None = None, destination_connection: RunConnectionRef | None = None, ruleset: RulesetId | None = None, start_time: datetime | None = None, end_time: datetime | None = None, options: dict[str, Any] | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelFull record for a masking run.
- destination_connection: RunConnectionRef | None¶
- end_time: datetime | None¶
- id: int¶
- name: str | None¶
- options: dict[str, Any] | None¶
- ruleset: RulesetId | None¶
- ruleset_name: str¶
- source_connection: RunConnectionRef¶
- start_time: datetime | None¶
- status: MaskingRunStatus¶
- class datamasque.client.models.runs.UnfinishedRun(*, id: int, source_connection: RunConnectionRef, ruleset_name: str, status: MaskingRunStatus, destination_connection: RunConnectionRef | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelRepresents a masking run that is queued, running, validating, or cancelling.
- destination_connection: RunConnectionRef | None¶
- id: int¶
- ruleset_name: str¶
- source_connection: RunConnectionRef¶
- status: MaskingRunStatus¶
datamasque.client.models.status module¶
- class datamasque.client.models.status.AsyncRulesetGenerationTaskStatus(*values)[source]¶
Bases:
EnumList of statuses of async ruleset generation tasks.
- failed = 'failed'¶
- finished = 'finished'¶
- classmethod get_final_states() set[AsyncRulesetGenerationTaskStatus][source]¶
Returns the list of final statuses, i.e. the ruleset generation has completed, successfully or otherwise.
- property is_in_final_state: bool¶
Returns True if this status is a final status.
- queued = 'queued'¶
- running = 'running'¶
- class datamasque.client.models.status.MaskingRunStatus(*values)[source]¶
Bases:
EnumList of valid masking run statuses.
- cancelled = 'cancelled'¶
- cancelling = 'cancelling'¶
- failed = 'failed'¶
- finished = 'finished'¶
- finished_with_warnings = 'finished_with_warnings'¶
- classmethod get_final_states() set[MaskingRunStatus][source]¶
Returns the list of final statuses, i.e. the run is completed, successfully or otherwise.
- classmethod get_finished_states() set[MaskingRunStatus][source]¶
Returns the list of statuses that indicate the run completed successfully.
- property is_finished: bool¶
Returns True if this status is a finished status.
- property is_in_final_state: bool¶
Returns True if this status is a final status.
- queued = 'queued'¶
- running = 'running'¶
- validating = 'validating'¶
datamasque.client.models.user module¶
- class datamasque.client.models.user.User(*, username: str, email: str, user_roles: list[UserRole], id: UserId | None = None, password: str | None = None, **extra_data: Any)[source]¶
Bases:
BaseModelRepresents a DataMasque user account.
- email: str¶
- static generate_password() str[source]¶
Generates a password suitable for DataMasque authentication.
The password consists of 16 characters without the same character occurring three times in a row and without any three consecutive characters forming an increasing or decreasing sequence.
- id: UserId | None¶
- password: str | None¶
- username: str¶
- class datamasque.client.models.user.UserRole(*values)[source]¶
Bases:
EnumList of supported user roles.
ruleset_library_managercan be optionally included alongsidemask_builder. It is not valid as a standalone role.- mask_builder = 'mask_builder'¶
- mask_runner = 'mask_runner'¶
- ruleset_library_manager = 'ruleset_library_managers'¶
- superuser = 'admin'¶