From 4f849f21a0109a4576c34593957282efcd6d748e Mon Sep 17 00:00:00 2001 From: Robin Trietsch Date: Wed, 20 Dec 2023 11:56:09 +0100 Subject: [PATCH] feat(pace-89): add optional divisor to NumericRounding.Round --- .../ProcessingPlatformTransformer.kt | 15 ++++++++++--- .../GetBlueprintPolicyResponse.json | 2 +- .../ApplyDataPolicyResponse.json | 2 +- .../GetDataPolicyResponse.json | 2 +- .../ListDataPoliciesResponse.json | 2 +- .../UpsertDataPolicyRequest.json | 2 +- .../UpsertDataPolicyResponse.json | 2 +- .../DataPolicy.json | 2 +- .../GlobalTransform.json | 2 +- .../GetGlobalTransformResponse.json | 2 +- .../ListGlobalTransformsResponse.json | 2 +- .../UpsertGlobalTransformRequest.json | 2 +- .../UpsertGlobalTransformResponse.json | 2 +- .../InvokePluginResponse.json | 2 +- .../GetBlueprintPolicyResponse.json | 2 +- .../OpenAIDataPolicyGeneratorPayload.json | 2 +- ...efaultProcessingPlatformTransformerTest.kt | 22 ++++++++++++++++--- gradle.properties | 2 +- .../pace/api/entities/v1alpha/entities.proto | 4 +++- 19 files changed, 50 insertions(+), 23 deletions(-) diff --git a/app/src/main/kotlin/com/getstrm/pace/processing_platforms/ProcessingPlatformTransformer.kt b/app/src/main/kotlin/com/getstrm/pace/processing_platforms/ProcessingPlatformTransformer.kt index 90f0b5e8..5e6fd9c9 100644 --- a/app/src/main/kotlin/com/getstrm/pace/processing_platforms/ProcessingPlatformTransformer.kt +++ b/app/src/main/kotlin/com/getstrm/pace/processing_platforms/ProcessingPlatformTransformer.kt @@ -119,9 +119,18 @@ interface ProcessingPlatformTransformer : ProcessingPlatformRenderer { DSL.field(field.fullName(), Float::class.java).div(numericRounding.floor.divisor) ).multiply(numericRounding.floor.divisor) - NumericRounding.RoundingCase.ROUND -> DSL.round( - DSL.field(field.fullName(), Float::class.java), numericRounding.round.precision - ) + NumericRounding.RoundingCase.ROUND -> { + if (numericRounding.round.hasDivisor()) { + DSL.round( + DSL.field(field.fullName(), Float::class.java).div(numericRounding.round.divisor), + numericRounding.round.precision + ).multiply(numericRounding.round.divisor) + } else { + DSL.round( + DSL.field(field.fullName(), Float::class.java), numericRounding.round.precision + ) + } + } NumericRounding.RoundingCase.ROUNDING_NOT_SET, null -> throw InternalException( InternalException.Code.INTERNAL, diff --git a/app/src/main/resources/jsonschema/getstrm.pace.api.data_catalogs.v1alpha/GetBlueprintPolicyResponse.json b/app/src/main/resources/jsonschema/getstrm.pace.api.data_catalogs.v1alpha/GetBlueprintPolicyResponse.json index a5aeebde..8aa55eb8 100644 --- a/app/src/main/resources/jsonschema/getstrm.pace.api.data_catalogs.v1alpha/GetBlueprintPolicyResponse.json +++ b/app/src/main/resources/jsonschema/getstrm.pace.api.data_catalogs.v1alpha/GetBlueprintPolicyResponse.json @@ -1 +1 @@ -{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/GetBlueprintPolicyResponse","definitions":{"GetBlueprintPolicyResponse":{"properties":{"data_policy":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy","additionalProperties":false},"violation":{"$ref":"#/definitions/google.rpc.BadRequest.FieldViolation","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Get Blueprint Policy Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"},"google.rpc.BadRequest.FieldViolation":{"properties":{"field":{"type":"string","description":"A path that leads to a field in the request body. The value will be a sequence of dot-separated identifiers that identify a protocol buffer field. Consider the following: message CreateContactRequest { message EmailAddress { enum Type { TYPE_UNSPECIFIED = 0; HOME = 1; WORK = 2; } optional string email = 1; repeated EmailType type = 2; } string full_name = 1; repeated EmailAddress email_addresses = 2; } In this example, in proto `field` could take one of the following values: * `full_name` for a violation in the `full_name` value * `email_addresses[1].email` for a violation in the `email` field of the first `email_addresses` message * `email_addresses[3].type[2]` for a violation in the second `type` value in the third `email_addresses` message. In JSON, the same values are represented as: * `fullName` for a violation in the `fullName` value * `emailAddresses[1].email` for a violation in the `email` field of the first `emailAddresses` message * `emailAddresses[3].type[2]` for a violation in the second `type` value in the third `emailAddresses` message."},"description":{"type":"string","description":"A description of why the request element is bad."}},"additionalProperties":false,"type":"object","title":"Field Violation","description":"A message type used to describe a single bad request field."}}} +{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/GetBlueprintPolicyResponse","definitions":{"GetBlueprintPolicyResponse":{"properties":{"data_policy":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy","additionalProperties":false},"violation":{"$ref":"#/definitions/google.rpc.BadRequest.FieldViolation","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Get Blueprint Policy Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."},"divisor":{"type":"number","description":"The divisor to use when applying integer division. Advise is to use divisors only when rounding to a multiple of that divisor, with a precision of 0."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"},"google.rpc.BadRequest.FieldViolation":{"properties":{"field":{"type":"string","description":"A path that leads to a field in the request body. The value will be a sequence of dot-separated identifiers that identify a protocol buffer field. Consider the following: message CreateContactRequest { message EmailAddress { enum Type { TYPE_UNSPECIFIED = 0; HOME = 1; WORK = 2; } optional string email = 1; repeated EmailType type = 2; } string full_name = 1; repeated EmailAddress email_addresses = 2; } In this example, in proto `field` could take one of the following values: * `full_name` for a violation in the `full_name` value * `email_addresses[1].email` for a violation in the `email` field of the first `email_addresses` message * `email_addresses[3].type[2]` for a violation in the second `type` value in the third `email_addresses` message. In JSON, the same values are represented as: * `fullName` for a violation in the `fullName` value * `emailAddresses[1].email` for a violation in the `email` field of the first `emailAddresses` message * `emailAddresses[3].type[2]` for a violation in the second `type` value in the third `emailAddresses` message."},"description":{"type":"string","description":"A description of why the request element is bad."}},"additionalProperties":false,"type":"object","title":"Field Violation","description":"A message type used to describe a single bad request field."}}} diff --git a/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/ApplyDataPolicyResponse.json b/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/ApplyDataPolicyResponse.json index 33da560f..fee36223 100644 --- a/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/ApplyDataPolicyResponse.json +++ b/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/ApplyDataPolicyResponse.json @@ -1 +1 @@ -{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/ApplyDataPolicyResponse","definitions":{"ApplyDataPolicyResponse":{"properties":{"data_policy":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Apply Data Policy Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"}}} +{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/ApplyDataPolicyResponse","definitions":{"ApplyDataPolicyResponse":{"properties":{"data_policy":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Apply Data Policy Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."},"divisor":{"type":"number","description":"The divisor to use when applying integer division. Advise is to use divisors only when rounding to a multiple of that divisor, with a precision of 0."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"}}} diff --git a/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/GetDataPolicyResponse.json b/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/GetDataPolicyResponse.json index 63324d12..6608e356 100644 --- a/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/GetDataPolicyResponse.json +++ b/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/GetDataPolicyResponse.json @@ -1 +1 @@ -{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/GetDataPolicyResponse","definitions":{"GetDataPolicyResponse":{"properties":{"data_policy":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Get Data Policy Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"}}} +{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/GetDataPolicyResponse","definitions":{"GetDataPolicyResponse":{"properties":{"data_policy":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Get Data Policy Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."},"divisor":{"type":"number","description":"The divisor to use when applying integer division. Advise is to use divisors only when rounding to a multiple of that divisor, with a precision of 0."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"}}} diff --git a/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/ListDataPoliciesResponse.json b/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/ListDataPoliciesResponse.json index 3a84c25a..bc402f7d 100644 --- a/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/ListDataPoliciesResponse.json +++ b/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/ListDataPoliciesResponse.json @@ -1 +1 @@ -{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/ListDataPoliciesResponse","definitions":{"ListDataPoliciesResponse":{"properties":{"data_policies":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy"},"additionalProperties":false,"type":"array"},"page_info":{"$ref":"#/definitions/getstrm.pace.api.paging.v1alpha.PageInfo","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"List Data Policies Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"},"getstrm.pace.api.paging.v1alpha.PageInfo":{"properties":{"total":{"type":"integer","description":"The (estimated) total number of records. If the total is unknown, this value is -1."}},"additionalProperties":false,"type":"object","title":"Page Info"}}} +{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/ListDataPoliciesResponse","definitions":{"ListDataPoliciesResponse":{"properties":{"data_policies":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy"},"additionalProperties":false,"type":"array"},"page_info":{"$ref":"#/definitions/getstrm.pace.api.paging.v1alpha.PageInfo","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"List Data Policies Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."},"divisor":{"type":"number","description":"The divisor to use when applying integer division. Advise is to use divisors only when rounding to a multiple of that divisor, with a precision of 0."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"},"getstrm.pace.api.paging.v1alpha.PageInfo":{"properties":{"total":{"type":"integer","description":"The (estimated) total number of records. If the total is unknown, this value is -1."}},"additionalProperties":false,"type":"object","title":"Page Info"}}} diff --git a/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/UpsertDataPolicyRequest.json b/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/UpsertDataPolicyRequest.json index 4d23b996..496aa900 100644 --- a/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/UpsertDataPolicyRequest.json +++ b/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/UpsertDataPolicyRequest.json @@ -1 +1 @@ -{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/UpsertDataPolicyRequest","definitions":{"UpsertDataPolicyRequest":{"properties":{"data_policy":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy","additionalProperties":false},"apply":{"type":"boolean","description":"whether to apply the policy directly on the processing platform if omitted, defaults to false"}},"additionalProperties":false,"type":"object","title":"Upsert Data Policy Request"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"}}} +{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/UpsertDataPolicyRequest","definitions":{"UpsertDataPolicyRequest":{"properties":{"data_policy":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy","additionalProperties":false},"apply":{"type":"boolean","description":"whether to apply the policy directly on the processing platform if omitted, defaults to false"}},"additionalProperties":false,"type":"object","title":"Upsert Data Policy Request"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."},"divisor":{"type":"number","description":"The divisor to use when applying integer division. Advise is to use divisors only when rounding to a multiple of that divisor, with a precision of 0."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"}}} diff --git a/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/UpsertDataPolicyResponse.json b/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/UpsertDataPolicyResponse.json index 01692c4c..13ddd670 100644 --- a/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/UpsertDataPolicyResponse.json +++ b/app/src/main/resources/jsonschema/getstrm.pace.api.data_policies.v1alpha/UpsertDataPolicyResponse.json @@ -1 +1 @@ -{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/UpsertDataPolicyResponse","definitions":{"UpsertDataPolicyResponse":{"properties":{"data_policy":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Upsert Data Policy Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"}}} +{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/UpsertDataPolicyResponse","definitions":{"UpsertDataPolicyResponse":{"properties":{"data_policy":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Upsert Data Policy Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."},"divisor":{"type":"number","description":"The divisor to use when applying integer division. Advise is to use divisors only when rounding to a multiple of that divisor, with a precision of 0."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"}}} diff --git a/app/src/main/resources/jsonschema/getstrm.pace.api.entities.v1alpha/DataPolicy.json b/app/src/main/resources/jsonschema/getstrm.pace.api.entities.v1alpha/DataPolicy.json index edf04495..43e7cbd1 100644 --- a/app/src/main/resources/jsonschema/getstrm.pace.api.entities.v1alpha/DataPolicy.json +++ b/app/src/main/resources/jsonschema/getstrm.pace.api.entities.v1alpha/DataPolicy.json @@ -1 +1 @@ -{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/DataPolicy","definitions":{"DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"}}} +{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/DataPolicy","definitions":{"DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."},"divisor":{"type":"number","description":"The divisor to use when applying integer division. Advise is to use divisors only when rounding to a multiple of that divisor, with a precision of 0."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"}}} diff --git a/app/src/main/resources/jsonschema/getstrm.pace.api.entities.v1alpha/GlobalTransform.json b/app/src/main/resources/jsonschema/getstrm.pace.api.entities.v1alpha/GlobalTransform.json index 910e5795..a0857fb0 100644 --- a/app/src/main/resources/jsonschema/getstrm.pace.api.entities.v1alpha/GlobalTransform.json +++ b/app/src/main/resources/jsonschema/getstrm.pace.api.entities.v1alpha/GlobalTransform.json @@ -1 +1 @@ -{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/GlobalTransform","definitions":{"GlobalTransform":{"properties":{"description":{"type":"string"},"tag_transform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Global Transform","description":"If the specified transform is incompatible with the field data type to which this global transform is connected with,then the end user will get an invalid argument, and the blueprint policy with the global transforms applied won't be returned.Global transforms are identified by an identifier of their [transform]. These are by default loose matching, so that'Email-PII' is matched when 'email pii' is used."},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform":{"properties":{"tag_content":{"type":"string","description":"'tag_content' is the primary key of TagTransforms."},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Tag Transform"}}} +{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/GlobalTransform","definitions":{"GlobalTransform":{"properties":{"description":{"type":"string"},"tag_transform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Global Transform","description":"If the specified transform is incompatible with the field data type to which this global transform is connected with,then the end user will get an invalid argument, and the blueprint policy with the global transforms applied won't be returned.Global transforms are identified by an identifier of their [transform]. These are by default loose matching, so that'Email-PII' is matched when 'email pii' is used."},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."},"divisor":{"type":"number","description":"The divisor to use when applying integer division. Advise is to use divisors only when rounding to a multiple of that divisor, with a precision of 0."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform":{"properties":{"tag_content":{"type":"string","description":"'tag_content' is the primary key of TagTransforms."},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Tag Transform"}}} diff --git a/app/src/main/resources/jsonschema/getstrm.pace.api.global_transforms.v1alpha/GetGlobalTransformResponse.json b/app/src/main/resources/jsonschema/getstrm.pace.api.global_transforms.v1alpha/GetGlobalTransformResponse.json index 273ea86c..25922e86 100644 --- a/app/src/main/resources/jsonschema/getstrm.pace.api.global_transforms.v1alpha/GetGlobalTransformResponse.json +++ b/app/src/main/resources/jsonschema/getstrm.pace.api.global_transforms.v1alpha/GetGlobalTransformResponse.json @@ -1 +1 @@ -{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/GetGlobalTransformResponse","definitions":{"GetGlobalTransformResponse":{"properties":{"transform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Get Global Transform Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.GlobalTransform":{"properties":{"description":{"type":"string"},"tag_transform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Global Transform","description":"If the specified transform is incompatible with the field data type to which this global transform is connected with,then the end user will get an invalid argument, and the blueprint policy with the global transforms applied won't be returned.Global transforms are identified by an identifier of their [transform]. These are by default loose matching, so that'Email-PII' is matched when 'email pii' is used."},"getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform":{"properties":{"tag_content":{"type":"string","description":"'tag_content' is the primary key of TagTransforms."},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Tag Transform"}}} +{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/GetGlobalTransformResponse","definitions":{"GetGlobalTransformResponse":{"properties":{"transform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Get Global Transform Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."},"divisor":{"type":"number","description":"The divisor to use when applying integer division. Advise is to use divisors only when rounding to a multiple of that divisor, with a precision of 0."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.GlobalTransform":{"properties":{"description":{"type":"string"},"tag_transform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Global Transform","description":"If the specified transform is incompatible with the field data type to which this global transform is connected with,then the end user will get an invalid argument, and the blueprint policy with the global transforms applied won't be returned.Global transforms are identified by an identifier of their [transform]. These are by default loose matching, so that'Email-PII' is matched when 'email pii' is used."},"getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform":{"properties":{"tag_content":{"type":"string","description":"'tag_content' is the primary key of TagTransforms."},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Tag Transform"}}} diff --git a/app/src/main/resources/jsonschema/getstrm.pace.api.global_transforms.v1alpha/ListGlobalTransformsResponse.json b/app/src/main/resources/jsonschema/getstrm.pace.api.global_transforms.v1alpha/ListGlobalTransformsResponse.json index 26906ce4..d99b86c5 100644 --- a/app/src/main/resources/jsonschema/getstrm.pace.api.global_transforms.v1alpha/ListGlobalTransformsResponse.json +++ b/app/src/main/resources/jsonschema/getstrm.pace.api.global_transforms.v1alpha/ListGlobalTransformsResponse.json @@ -1 +1 @@ -{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/ListGlobalTransformsResponse","definitions":{"ListGlobalTransformsResponse":{"properties":{"global_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"List Global Transforms Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.GlobalTransform":{"properties":{"description":{"type":"string"},"tag_transform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Global Transform","description":"If the specified transform is incompatible with the field data type to which this global transform is connected with,then the end user will get an invalid argument, and the blueprint policy with the global transforms applied won't be returned.Global transforms are identified by an identifier of their [transform]. These are by default loose matching, so that'Email-PII' is matched when 'email pii' is used."},"getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform":{"properties":{"tag_content":{"type":"string","description":"'tag_content' is the primary key of TagTransforms."},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Tag Transform"}}} +{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/ListGlobalTransformsResponse","definitions":{"ListGlobalTransformsResponse":{"properties":{"global_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"List Global Transforms Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."},"divisor":{"type":"number","description":"The divisor to use when applying integer division. Advise is to use divisors only when rounding to a multiple of that divisor, with a precision of 0."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.GlobalTransform":{"properties":{"description":{"type":"string"},"tag_transform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Global Transform","description":"If the specified transform is incompatible with the field data type to which this global transform is connected with,then the end user will get an invalid argument, and the blueprint policy with the global transforms applied won't be returned.Global transforms are identified by an identifier of their [transform]. These are by default loose matching, so that'Email-PII' is matched when 'email pii' is used."},"getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform":{"properties":{"tag_content":{"type":"string","description":"'tag_content' is the primary key of TagTransforms."},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Tag Transform"}}} diff --git a/app/src/main/resources/jsonschema/getstrm.pace.api.global_transforms.v1alpha/UpsertGlobalTransformRequest.json b/app/src/main/resources/jsonschema/getstrm.pace.api.global_transforms.v1alpha/UpsertGlobalTransformRequest.json index fad37951..b477309c 100644 --- a/app/src/main/resources/jsonschema/getstrm.pace.api.global_transforms.v1alpha/UpsertGlobalTransformRequest.json +++ b/app/src/main/resources/jsonschema/getstrm.pace.api.global_transforms.v1alpha/UpsertGlobalTransformRequest.json @@ -1 +1 @@ -{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/UpsertGlobalTransformRequest","definitions":{"UpsertGlobalTransformRequest":{"properties":{"transform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Upsert Global Transform Request"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.GlobalTransform":{"properties":{"description":{"type":"string"},"tag_transform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Global Transform","description":"If the specified transform is incompatible with the field data type to which this global transform is connected with,then the end user will get an invalid argument, and the blueprint policy with the global transforms applied won't be returned.Global transforms are identified by an identifier of their [transform]. These are by default loose matching, so that'Email-PII' is matched when 'email pii' is used."},"getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform":{"properties":{"tag_content":{"type":"string","description":"'tag_content' is the primary key of TagTransforms."},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Tag Transform"}}} +{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/UpsertGlobalTransformRequest","definitions":{"UpsertGlobalTransformRequest":{"properties":{"transform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Upsert Global Transform Request"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."},"divisor":{"type":"number","description":"The divisor to use when applying integer division. Advise is to use divisors only when rounding to a multiple of that divisor, with a precision of 0."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.GlobalTransform":{"properties":{"description":{"type":"string"},"tag_transform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Global Transform","description":"If the specified transform is incompatible with the field data type to which this global transform is connected with,then the end user will get an invalid argument, and the blueprint policy with the global transforms applied won't be returned.Global transforms are identified by an identifier of their [transform]. These are by default loose matching, so that'Email-PII' is matched when 'email pii' is used."},"getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform":{"properties":{"tag_content":{"type":"string","description":"'tag_content' is the primary key of TagTransforms."},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Tag Transform"}}} diff --git a/app/src/main/resources/jsonschema/getstrm.pace.api.global_transforms.v1alpha/UpsertGlobalTransformResponse.json b/app/src/main/resources/jsonschema/getstrm.pace.api.global_transforms.v1alpha/UpsertGlobalTransformResponse.json index f0f15626..9c31e0a6 100644 --- a/app/src/main/resources/jsonschema/getstrm.pace.api.global_transforms.v1alpha/UpsertGlobalTransformResponse.json +++ b/app/src/main/resources/jsonschema/getstrm.pace.api.global_transforms.v1alpha/UpsertGlobalTransformResponse.json @@ -1 +1 @@ -{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/UpsertGlobalTransformResponse","definitions":{"UpsertGlobalTransformResponse":{"properties":{"transform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Upsert Global Transform Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.GlobalTransform":{"properties":{"description":{"type":"string"},"tag_transform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Global Transform","description":"If the specified transform is incompatible with the field data type to which this global transform is connected with,then the end user will get an invalid argument, and the blueprint policy with the global transforms applied won't be returned.Global transforms are identified by an identifier of their [transform]. These are by default loose matching, so that'Email-PII' is matched when 'email pii' is used."},"getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform":{"properties":{"tag_content":{"type":"string","description":"'tag_content' is the primary key of TagTransforms."},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Tag Transform"}}} +{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/UpsertGlobalTransformResponse","definitions":{"UpsertGlobalTransformResponse":{"properties":{"transform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Upsert Global Transform Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."},"divisor":{"type":"number","description":"The divisor to use when applying integer division. Advise is to use divisors only when rounding to a multiple of that divisor, with a precision of 0."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.GlobalTransform":{"properties":{"description":{"type":"string"},"tag_transform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Global Transform","description":"If the specified transform is incompatible with the field data type to which this global transform is connected with,then the end user will get an invalid argument, and the blueprint policy with the global transforms applied won't be returned.Global transforms are identified by an identifier of their [transform]. These are by default loose matching, so that'Email-PII' is matched when 'email pii' is used."},"getstrm.pace.api.entities.v1alpha.GlobalTransform.TagTransform":{"properties":{"tag_content":{"type":"string","description":"'tag_content' is the primary key of TagTransforms."},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Tag Transform"}}} diff --git a/app/src/main/resources/jsonschema/getstrm.pace.api.plugins.v1alpha/InvokePluginResponse.json b/app/src/main/resources/jsonschema/getstrm.pace.api.plugins.v1alpha/InvokePluginResponse.json index f371a962..ad9ba78b 100644 --- a/app/src/main/resources/jsonschema/getstrm.pace.api.plugins.v1alpha/InvokePluginResponse.json +++ b/app/src/main/resources/jsonschema/getstrm.pace.api.plugins.v1alpha/InvokePluginResponse.json @@ -1 +1 @@ -{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/InvokePluginResponse","definitions":{"InvokePluginResponse":{"properties":{"data_policy_generator_result":{"$ref":"#/definitions/getstrm.pace.api.plugins.v1alpha.DataPolicyGenerator.Result","additionalProperties":false},"sample_data_generator_result":{"$ref":"#/definitions/getstrm.pace.api.plugins.v1alpha.SampleDataGenerator.Result","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Invoke Plugin Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"},"getstrm.pace.api.plugins.v1alpha.DataPolicyGenerator.Result":{"properties":{"data_policy":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Result"},"getstrm.pace.api.plugins.v1alpha.SampleDataGenerator.Result":{"properties":{"data":{"type":"string"},"format":{"enum":["FORMAT_UNSPECIFIED",0,"CSV",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Format"}},"additionalProperties":false,"type":"object","title":"Result"}}} +{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/InvokePluginResponse","definitions":{"InvokePluginResponse":{"properties":{"data_policy_generator_result":{"$ref":"#/definitions/getstrm.pace.api.plugins.v1alpha.DataPolicyGenerator.Result","additionalProperties":false},"sample_data_generator_result":{"$ref":"#/definitions/getstrm.pace.api.plugins.v1alpha.SampleDataGenerator.Result","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Invoke Plugin Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."},"divisor":{"type":"number","description":"The divisor to use when applying integer division. Advise is to use divisors only when rounding to a multiple of that divisor, with a precision of 0."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"},"getstrm.pace.api.plugins.v1alpha.DataPolicyGenerator.Result":{"properties":{"data_policy":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Result"},"getstrm.pace.api.plugins.v1alpha.SampleDataGenerator.Result":{"properties":{"data":{"type":"string"},"format":{"enum":["FORMAT_UNSPECIFIED",0,"CSV",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Format"}},"additionalProperties":false,"type":"object","title":"Result"}}} diff --git a/app/src/main/resources/jsonschema/getstrm.pace.api.processing_platforms.v1alpha/GetBlueprintPolicyResponse.json b/app/src/main/resources/jsonschema/getstrm.pace.api.processing_platforms.v1alpha/GetBlueprintPolicyResponse.json index a5aeebde..8aa55eb8 100644 --- a/app/src/main/resources/jsonschema/getstrm.pace.api.processing_platforms.v1alpha/GetBlueprintPolicyResponse.json +++ b/app/src/main/resources/jsonschema/getstrm.pace.api.processing_platforms.v1alpha/GetBlueprintPolicyResponse.json @@ -1 +1 @@ -{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/GetBlueprintPolicyResponse","definitions":{"GetBlueprintPolicyResponse":{"properties":{"data_policy":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy","additionalProperties":false},"violation":{"$ref":"#/definitions/google.rpc.BadRequest.FieldViolation","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Get Blueprint Policy Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"},"google.rpc.BadRequest.FieldViolation":{"properties":{"field":{"type":"string","description":"A path that leads to a field in the request body. The value will be a sequence of dot-separated identifiers that identify a protocol buffer field. Consider the following: message CreateContactRequest { message EmailAddress { enum Type { TYPE_UNSPECIFIED = 0; HOME = 1; WORK = 2; } optional string email = 1; repeated EmailType type = 2; } string full_name = 1; repeated EmailAddress email_addresses = 2; } In this example, in proto `field` could take one of the following values: * `full_name` for a violation in the `full_name` value * `email_addresses[1].email` for a violation in the `email` field of the first `email_addresses` message * `email_addresses[3].type[2]` for a violation in the second `type` value in the third `email_addresses` message. In JSON, the same values are represented as: * `fullName` for a violation in the `fullName` value * `emailAddresses[1].email` for a violation in the `email` field of the first `emailAddresses` message * `emailAddresses[3].type[2]` for a violation in the second `type` value in the third `emailAddresses` message."},"description":{"type":"string","description":"A description of why the request element is bad."}},"additionalProperties":false,"type":"object","title":"Field Violation","description":"A message type used to describe a single bad request field."}}} +{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/GetBlueprintPolicyResponse","definitions":{"GetBlueprintPolicyResponse":{"properties":{"data_policy":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy","additionalProperties":false},"violation":{"$ref":"#/definitions/google.rpc.BadRequest.FieldViolation","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Get Blueprint Policy Response"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."},"divisor":{"type":"number","description":"The divisor to use when applying integer division. Advise is to use divisors only when rounding to a multiple of that divisor, with a precision of 0."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"},"google.rpc.BadRequest.FieldViolation":{"properties":{"field":{"type":"string","description":"A path that leads to a field in the request body. The value will be a sequence of dot-separated identifiers that identify a protocol buffer field. Consider the following: message CreateContactRequest { message EmailAddress { enum Type { TYPE_UNSPECIFIED = 0; HOME = 1; WORK = 2; } optional string email = 1; repeated EmailType type = 2; } string full_name = 1; repeated EmailAddress email_addresses = 2; } In this example, in proto `field` could take one of the following values: * `full_name` for a violation in the `full_name` value * `email_addresses[1].email` for a violation in the `email` field of the first `email_addresses` message * `email_addresses[3].type[2]` for a violation in the second `type` value in the third `email_addresses` message. In JSON, the same values are represented as: * `fullName` for a violation in the `fullName` value * `emailAddresses[1].email` for a violation in the `email` field of the first `emailAddresses` message * `emailAddresses[3].type[2]` for a violation in the second `type` value in the third `emailAddresses` message."},"description":{"type":"string","description":"A description of why the request element is bad."}},"additionalProperties":false,"type":"object","title":"Field Violation","description":"A message type used to describe a single bad request field."}}} diff --git a/app/src/main/resources/jsonschema/getstrm.pace.plugins.data_policy_generators.v1alpha/OpenAIDataPolicyGeneratorPayload.json b/app/src/main/resources/jsonschema/getstrm.pace.plugins.data_policy_generators.v1alpha/OpenAIDataPolicyGeneratorPayload.json index 637a6b35..3063bd37 100644 --- a/app/src/main/resources/jsonschema/getstrm.pace.plugins.data_policy_generators.v1alpha/OpenAIDataPolicyGeneratorPayload.json +++ b/app/src/main/resources/jsonschema/getstrm.pace.plugins.data_policy_generators.v1alpha/OpenAIDataPolicyGeneratorPayload.json @@ -1 +1 @@ -{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/OpenAIDataPolicyGeneratorPayload","definitions":{"OpenAIDataPolicyGeneratorPayload":{"properties":{"instructions":{"type":"string"},"initial_data_policy":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Open AI Data Policy Generator Payload"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"}}} +{"$schema":"http://json-schema.org/draft-04/schema#","$ref":"#/definitions/OpenAIDataPolicyGeneratorPayload","definitions":{"OpenAIDataPolicyGeneratorPayload":{"properties":{"instructions":{"type":"string"},"initial_data_policy":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Open AI Data Policy Generator Payload"},"getstrm.pace.api.entities.v1alpha.DataPolicy":{"properties":{"id":{"type":"string"},"metadata":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata","additionalProperties":false},"source":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Source","additionalProperties":false},"platform":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform","additionalProperties":false},"rule_sets":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet"},"additionalProperties":false,"type":"array"}},"additionalProperties":false,"type":"object","title":"Data Policy"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Field":{"properties":{"name_parts":{"items":{"type":"string"},"type":"array","description":"Instead of using \"nodes\", nesting can be expressed by specifying multiple name parts. A flat table (e.g. csv file) will only contain a single name part for all fields."},"type":{"type":"string","description":"The data type of the field."},"required":{"type":"boolean","description":"Whether the field is required. If not, the field may be null."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Field"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Metadata":{"properties":{"title":{"type":"string"},"description":{"type":"string"},"version":{"type":"integer","description":"For new policies, the version does not need to be set. When updating a policy, the version must match the current version. The version is then automatically incremented."},"create_time":{"type":"string","format":"date-time"},"update_time":{"type":"string","format":"date-time"},"tags":{"items":{"type":"string"},"type":"array"},"last_apply_time":{"type":"string","description":"The last time the policy was applied to the target(s).","format":"date-time"}},"additionalProperties":false,"type":"object","title":"Metadata"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Principal":{"properties":{"group":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Principal"},"getstrm.pace.api.entities.v1alpha.DataPolicy.ProcessingPlatform":{"properties":{"platform_type":{"enum":["PLATFORM_TYPE_UNSPECIFIED",0,"DATABRICKS",1,"SNOWFLAKE",2,"BIGQUERY",3,"POSTGRES",4,"SYNAPSE",5],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Platform Type"},"id":{"type":"string","description":"An arbitrary but unique identifier for the platform. This matches the id from the PACE app configuration."}},"additionalProperties":false,"type":"object","title":"Processing Platform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet":{"properties":{"target":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Target","additionalProperties":false},"field_transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform"},"additionalProperties":false,"type":"array","description":"Zero or more field transforms. Any field for which no field transform is specified will be included as-is."},"filters":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter"},"additionalProperties":false,"type":"array","description":"Zero or more filters. Records that match the conditions are included in the result. When no filters are defined, all records are always included."}},"additionalProperties":false,"type":"object","title":"Rule Set"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false},"transforms":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition. Transforms should have mutually exclusive sets of principals."}},"additionalProperties":false,"type":"object","title":"Field Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) for which this transform will be applied."},"regexp":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp","additionalProperties":false,"description":"Extract and optionally replace a value in a field using a regular expression."},"identity":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity","additionalProperties":false,"description":"Use the identity transform to copy a field value as-is."},"fixed":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed","additionalProperties":false,"description":"Provide a fixed value for the field."},"hash":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash","additionalProperties":false,"description":"Hash the field value, optionally with a seed. The exact algorithm is platform-specific."},"sql_statement":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement","additionalProperties":false,"description":"Execute a SQL statement to transform the field value. The exact syntax is platform-specific."},"nullify":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify","additionalProperties":false,"description":"Make the field value null."},"detokenize":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize","additionalProperties":false,"description":"Replaces a tokenized field value with its original value, looked up in a token source. If no value is found, the tokenized value is left as-is."},"numeric_rounding":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding","additionalProperties":false,"description":"Round a numeric value with the specified rounding."},"aggregation":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation","additionalProperties":false,"description":"Aggregate the field value for specified grouping by other fields."}},"additionalProperties":false,"type":"object","title":"Transform"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation":{"properties":{"sum":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum","additionalProperties":false},"avg":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg","additionalProperties":false},"min":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min","additionalProperties":false},"max":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max","additionalProperties":false},"partition_by":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"The fields to partition by."}},"additionalProperties":false,"type":"object","title":"Aggregation"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Avg":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When empty, the value is not rounded"},"cast_to":{"type":"string","description":"Type to cast the original field to before applying the aggregation. By default any field will be cast to decimal."}},"additionalProperties":false,"type":"object","title":"Avg"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Max":{"additionalProperties":false,"type":"object","title":"Max"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Min":{"additionalProperties":false,"type":"object","title":"Min"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Aggregation.Sum":{"additionalProperties":false,"type":"object","title":"Sum"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Detokenize":{"properties":{"token_source_ref":{"type":"string","description":"Full reference to the token source, e.g. a fully qualified table name."},"token_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the token. Only the name parts are required."},"value_field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field in the token source that contains the value. Only the name parts are required."}},"additionalProperties":false,"type":"object","title":"Detokenize"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Fixed":{"properties":{"value":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Fixed"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Hash":{"properties":{"seed":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Hash"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Identity":{"additionalProperties":false,"type":"object","title":"Identity"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Nullify":{"additionalProperties":false,"type":"object","title":"Nullify"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding":{"properties":{"ceil":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil","additionalProperties":false,"description":"Round the value to the nearest integer (e.g. 1.5 becomes 2), respecting the divisor."},"floor":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor","additionalProperties":false,"description":"Round the value down to the nearest integer (e.g. 1.5 becomes 1), respecting the divisor."},"round":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round","additionalProperties":false,"description":"Use regular natural rounding (e.g. 1.5 becomes 2, 1.4 becomes 1), respecting the precision."}},"additionalProperties":false,"type":"object","title":"Numeric Rounding"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Ceil":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Ceil"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Floor":{"properties":{"divisor":{"type":"number","description":"The divisor to use when applying integer division. Values < 1 allow for rounding to decimal places."}},"additionalProperties":false,"type":"object","title":"Floor"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round":{"properties":{"precision":{"type":"integer","description":"The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10."},"divisor":{"type":"number","description":"The divisor to use when applying integer division. Advise is to use divisors only when rounding to a multiple of that divisor, with a precision of 0."}},"additionalProperties":false,"type":"object","title":"Round"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.Regexp":{"properties":{"regexp":{"type":"string"},"replacement":{"type":"string","description":"Use dollar signs to reference capturing groups in the replacement, e.g. \"my-replacement-$1-$2\". If the replacement is left empty, the regexp match result (full match or first capturing group) is used."}},"additionalProperties":false,"type":"object","title":"Regexp"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.FieldTransform.Transform.SqlStatement":{"properties":{"statement":{"type":"string"}},"additionalProperties":false,"type":"object","title":"Sql Statement"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter":{"properties":{"retention_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter","additionalProperties":false},"generic_filter":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter","additionalProperties":false}},"additionalProperties":false,"type":"object","title":"Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter":{"properties":{"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Generic Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.GenericFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"condition":{"type":"string","description":"A (platform-specific) SQL expression. If it evaluates to true, the principals are allowed to access the data."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter":{"properties":{"field":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field","additionalProperties":false,"description":"The field of type SQL date with timestamp."},"conditions":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition"},"additionalProperties":false,"type":"array","description":"The last condition in the list must have 0 principals, as this acts as the default / else condition."}},"additionalProperties":false,"type":"object","title":"Retention Filter"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Condition":{"properties":{"principals":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Principal"},"additionalProperties":false,"type":"array","description":"The principals (e.g. groups) that apply to this condition."},"period":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period","additionalProperties":false,"description":"The retention period for the data measured in days after creation. If empty or null, defaults to infinite retention period."}},"additionalProperties":false,"type":"object","title":"Condition"},"getstrm.pace.api.entities.v1alpha.DataPolicy.RuleSet.Filter.RetentionFilter.Period":{"properties":{"days":{"type":"string","description":"Number of days since the creation date."}},"additionalProperties":false,"type":"object","title":"Period"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Source":{"properties":{"ref":{"type":"string","description":"The ref is an identifier for the source, unique at the source platform level."},"fields":{"items":{"$ref":"#/definitions/getstrm.pace.api.entities.v1alpha.DataPolicy.Field"},"additionalProperties":false,"type":"array","description":"A representation of the source data schema. Nested fields are supported."},"tags":{"items":{"type":"string"},"type":"array"}},"additionalProperties":false,"type":"object","title":"Source"},"getstrm.pace.api.entities.v1alpha.DataPolicy.Target":{"properties":{"type":{"enum":["TARGET_TYPE_UNSPECIFIED",0,"SQL_VIEW",1],"oneOf":[{"type":"string"},{"type":"integer"}],"title":"Target Type"},"fullname":{"type":"string","description":"The full and unique name to be used in the target platform. E.g. the view name."}},"additionalProperties":false,"type":"object","title":"Target"}}} diff --git a/app/src/test/kotlin/com/getstrm/pace/processing_platforms/DefaultProcessingPlatformTransformerTest.kt b/app/src/test/kotlin/com/getstrm/pace/processing_platforms/DefaultProcessingPlatformTransformerTest.kt index 67de9349..75671ed8 100644 --- a/app/src/test/kotlin/com/getstrm/pace/processing_platforms/DefaultProcessingPlatformTransformerTest.kt +++ b/app/src/test/kotlin/com/getstrm/pace/processing_platforms/DefaultProcessingPlatformTransformerTest.kt @@ -255,21 +255,37 @@ class DefaultProcessingPlatformTransformerTest { } @Test - fun `numeric rounding - round`() { + fun `numeric rounding - round without divisor`() { // Given val field = namedField("transactionamount", "integer") - val ceil = DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.newBuilder() + val round = DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.newBuilder() .setRound( DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round.newBuilder().setPrecision(-1) ).build() // When - val result = DefaultProcessingPlatformTransformer.numericRounding(field, ceil) + val result = DefaultProcessingPlatformTransformer.numericRounding(field, round) // Then result.toSql() shouldBe "round(transactionamount, -1)" } + @Test + fun `numeric rounding - round with divisor`() { + // Given + val field = namedField("transactionamount", "integer") + val round = DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.newBuilder() + .setRound( + DataPolicy.RuleSet.FieldTransform.Transform.NumericRounding.Round.newBuilder().setPrecision(0).setDivisor(5f) + ).build() + + // When + val result = DefaultProcessingPlatformTransformer.numericRounding(field, round) + + // Then + result.toSql() shouldBe "(round((transactionamount / 5E0), 0) * 5E0)" + } + @Test fun `aggregation - sum no partition by`() { // Given diff --git a/gradle.properties b/gradle.properties index ab90b2a3..ab42cbf3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,4 +9,4 @@ springCloudKubernetesVersion=3.1.0 dockertag = pace-local -generatedBufDependencyVersion=00000000000000.934197b6cd79 +generatedBufDependencyVersion=00000000000000.385fc313a85f diff --git a/protos/getstrm/pace/api/entities/v1alpha/entities.proto b/protos/getstrm/pace/api/entities/v1alpha/entities.proto index 745d205a..fbd5cc62 100644 --- a/protos/getstrm/pace/api/entities/v1alpha/entities.proto +++ b/protos/getstrm/pace/api/entities/v1alpha/entities.proto @@ -148,6 +148,8 @@ message DataPolicy { message Round { // The precision to use for rounding. When positive, the value is rounded to the nearest decimal place. When negative, the value is rounded to the nearest power of 10. int32 precision = 1; + // The divisor to use when applying integer division. Advise is to use divisors only when rounding to a multiple of that divisor, with a precision of 0. + optional float divisor = 2; } } @@ -317,4 +319,4 @@ message DataCatalog { Schema schema = 3; repeated string tags = 4; } -} \ No newline at end of file +}