{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract",
  "definitions": {
    "strmprivacy.api.entities.v1.SchemaType": {
      "enum": [
        "SCHEMA_TYPE_UNSPECIFIED",
        0,
        "AVRO",
        1,
        "JSONSCHEMA",
        2
      ],
      "markdownEnumDescriptions": [
        "(or 0) ",
        "(or \"SCHEMA_TYPE_UNSPECIFIED\") ",
        "(or 1) ",
        "(or \"AVRO\") ",
        "(or 2) ",
        "(or \"JSONSCHEMA\") "
      ]
    },
    "strmprivacy.api.entities.v1.Schema.State": {
      "enum": [
        "STATE_UNSPECIFIED",
        0,
        "DRAFT",
        1,
        "ACTIVE",
        2,
        "ARCHIVED",
        3,
        "IN_REVIEW",
        4,
        "INCOMPLETE",
        5,
        "APPROVED",
        6
      ],
      "markdownEnumDescriptions": [
        "(or 0) ",
        "(or \"STATE_UNSPECIFIED\") ",
        "(or 1) This schema is valid and complete, but has not been accepted yet, can still be modified and also deleted.",
        "(or \"DRAFT\") This schema is valid and complete, but has not been accepted yet, can still be modified and also deleted.",
        "(or 2) This schema is valid and complete can be used for events and batch jobs. It cannot be modified or deleted.",
        "(or \"ACTIVE\") This schema is valid and complete can be used for events and batch jobs. It cannot be modified or deleted.",
        "(or 3) This schema is valid and complete has been active, but no more events can be sent using this schema. In-flight events are still processed.",
        "(or \"ARCHIVED\") This schema is valid and complete has been active, but no more events can be sent using this schema. In-flight events are still processed.",
        "(or 4) This schema is in review. It can be used once it has been approved.",
        "(or \"IN_REVIEW\") This schema is in review. It can be used once it has been approved.",
        "(or 5) This schema is still under construction.",
        "(or \"INCOMPLETE\") This schema is still under construction.",
        "(or 6) This schema is approved and when activated can be used used for events and batch jobs. It cannot be modified or deleted.",
        "(or \"APPROVED\") This schema is approved and when activated can be used used for events and batch jobs. It cannot be modified or deleted."
      ]
    },
    "strmprivacy.api.entities.v1.DataContract.State": {
      "enum": [
        "STATE_UNSPECIFIED",
        0,
        "DRAFT",
        1,
        "IN_REVIEW",
        2,
        "ACTIVE",
        3,
        "ARCHIVED",
        4,
        "INCOMPLETE",
        5,
        "APPROVED",
        6
      ],
      "markdownEnumDescriptions": [
        "(or 0) ",
        "(or \"STATE_UNSPECIFIED\") ",
        "(or 1) This data contract is valid and complete, but has not been accepted yet, can still be modified and also deleted.",
        "(or \"DRAFT\") This data contract is valid and complete, but has not been accepted yet, can still be modified and also deleted.",
        "(or 2) This data contract is in review. It can be used once it has been approved.",
        "(or \"IN_REVIEW\") This data contract is in review. It can be used once it has been approved.",
        "(or 3) This data contract is valid and complete can be used for events and batch jobs. It cannot be modified or deleted.",
        "(or \"ACTIVE\") This data contract is valid and complete can be used for events and batch jobs. It cannot be modified or deleted.",
        "(or 4) This data contract is valid and complete has been active, but no more events can be sent using this data contract. In-flight events are still processed.",
        "(or \"ARCHIVED\") This data contract is valid and complete has been active, but no more events can be sent using this data contract. In-flight events are still processed.",
        "(or 5) This data contract is still under construction.",
        "(or \"INCOMPLETE\") This data contract is still under construction.",
        "(or 6) This data contract is approved and when activated can be used used for events and batch jobs. It cannot be modified or deleted.",
        "(or \"APPROVED\") This data contract is approved and when activated can be used used for events and batch jobs. It cannot be modified or deleted."
      ]
    },
    "strmprivacy.api.entities.v1.Validation": {
      "type": "object",
      "properties": {
        "field": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Validation/definitions/field"
        },
        "type": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Validation/definitions/type"
        },
        "value": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Validation/definitions/value"
        }
      },
      "additionalProperties": {
        "title": "Unknown field"
      },
      "definitions": {
        "field": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string field = 1;",
          "description": "constraint: valid field path, follows avro constraints + slashes",
          "default": ""
        },
        "type": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string type = 2;",
          "description": "constraint: one of the validator types. handled by code\nThis should become an enum",
          "default": ""
        },
        "value": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string value = 3;",
          "description": "constraint: a type specific definition",
          "default": ""
        }
      }
    },
    "strmprivacy.api.entities.v1.FieldMetadata.NullHandlingConfig.NullHandlingType": {
      "enum": [
        "NULL_HANDLING_TYPE_UNSPECIFIED",
        0,
        "DROP_RECORD",
        1,
        "DEFAULT_VALUE",
        2
      ],
      "markdownEnumDescriptions": [
        "(or 0) ",
        "(or \"NULL_HANDLING_TYPE_UNSPECIFIED\") ",
        "(or 1) ",
        "(or \"DROP_RECORD\") ",
        "(or 2) ",
        "(or \"DEFAULT_VALUE\") "
      ]
    },
    "google.protobuf.Timestamp": {
      "type": "string",
      "format": "date-time",
      "default": ""
    },
    "strmprivacy.api.entities.v1.SchemaMetadata": {
      "type": "object",
      "properties": {
        "createTime": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaMetadata/definitions/create_time"
        },
        "description": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaMetadata/definitions/description"
        },
        "domains": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaMetadata/definitions/domains"
        },
        "iconUri": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaMetadata/definitions/icon_uri"
        },
        "industries": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaMetadata/definitions/industries"
        },
        "labels": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaMetadata/definitions/labels"
        },
        "title": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaMetadata/definitions/title"
        }
      },
      "patternProperties": {
        "^create_time$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaMetadata/definitions/create_time"
        },
        "^icon_uri$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaMetadata/definitions/icon_uri"
        }
      },
      "additionalProperties": {
        "title": "Unknown field"
      },
      "definitions": {
        "create_time": {
          "oneOf": [
            {
              "$ref": "#/definitions/google.protobuf.Timestamp"
            },
            {
              "type": "null"
            }
          ],
          "title": "google.protobuf.Timestamp create_time = 3;",
          "description": "The timestamp when this Schema was created."
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string description = 2;",
          "description": "The description of this Schema. Used in the Portal. Markdown syntax is supported. This field can be modified.",
          "default": ""
        },
        "domains": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string",
                "title": "string"
              }
            },
            {
              "type": "null"
            }
          ],
          "title": "repeated string domains = 6;",
          "default": null
        },
        "icon_uri": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string icon_uri = 4;",
          "description": "The URI to the icon used with this Schema. This always an absolute URI, with the https scheme. Used in the Portal.",
          "default": ""
        },
        "industries": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string",
                "title": "string"
              }
            },
            {
              "type": "null"
            }
          ],
          "title": "repeated string industries = 7;",
          "default": null
        },
        "labels": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/strmprivacy.api.entities.v1.Label",
                "title": "strmprivacy.api.entities.v1.Label",
                "default": {
                  
                }
              }
            },
            {
              "type": "null"
            }
          ],
          "title": "repeated strmprivacy.api.entities.v1.Label labels = 5;",
          "description": "Generic (key/value) labels for this Schema.",
          "default": [
            {
              
            }
          ]
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string title = 1;",
          "description": "The human readable title of this Schema. Used in the Portal. Defaults to the Schema name. This field can be modified.",
          "default": ""
        }
      }
    },
    "strmprivacy.api.entities.v1.DataContractMetadata": {
      "type": "object",
      "properties": {
        "createTime": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContractMetadata/definitions/create_time"
        },
        "description": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContractMetadata/definitions/description"
        },
        "domains": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContractMetadata/definitions/domains"
        },
        "industries": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContractMetadata/definitions/industries"
        },
        "labels": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContractMetadata/definitions/labels"
        },
        "title": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContractMetadata/definitions/title"
        }
      },
      "patternProperties": {
        "^create_time$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContractMetadata/definitions/create_time"
        }
      },
      "additionalProperties": {
        "title": "Unknown field"
      },
      "definitions": {
        "create_time": {
          "oneOf": [
            {
              "$ref": "#/definitions/google.protobuf.Timestamp"
            },
            {
              "type": "null"
            }
          ],
          "title": "google.protobuf.Timestamp create_time = 3;",
          "description": "The timestamp when this Data Contract was created."
        },
        "description": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string description = 2;",
          "description": "The description of this Data Contract. Used in the Portal. Markdown syntax is supported. This field can be modified.",
          "default": ""
        },
        "domains": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string",
                "title": "string"
              }
            },
            {
              "type": "null"
            }
          ],
          "title": "repeated string domains = 6;",
          "default": null
        },
        "industries": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string",
                "title": "string"
              }
            },
            {
              "type": "null"
            }
          ],
          "title": "repeated string industries = 7;",
          "default": null
        },
        "labels": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/strmprivacy.api.entities.v1.Label",
                "title": "strmprivacy.api.entities.v1.Label",
                "default": {
                  
                }
              }
            },
            {
              "type": "null"
            }
          ],
          "title": "repeated strmprivacy.api.entities.v1.Label labels = 5;",
          "description": "Generic (key/value) labels for this Data Contract.",
          "default": [
            {
              
            }
          ]
        },
        "title": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string title = 1;",
          "description": "The human readable title of this Data Contract. Used in the Portal. Defaults to the Data Contract name if left unspecified. This field can be modified.",
          "default": ""
        }
      }
    },
    "strmprivacy.api.entities.v1.FieldMetadata": {
      "type": "object",
      "properties": {
        "fieldName": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata/definitions/field_name"
        },
        "nullHandlingConfig": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata/definitions/null_handling_config"
        },
        "ordinalValues": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata/definitions/ordinal_values"
        },
        "personalDataConfig": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata/definitions/personal_data_config"
        },
        "statisticalDataType": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata/definitions/statistical_data_type"
        }
      },
      "patternProperties": {
        "^field_name$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata/definitions/field_name"
        },
        "^null_handling_config$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata/definitions/null_handling_config"
        },
        "^ordinal_values$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata/definitions/ordinal_values"
        },
        "^personal_data_config$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata/definitions/personal_data_config"
        },
        "^statistical_data_type$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata/definitions/statistical_data_type"
        }
      },
      "additionalProperties": {
        "title": "Unknown field"
      },
      "definitions": {
        "field_name": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string field_name = 1;",
          "description": "Full reference to a (nested) field. For non-top-level fields (i.e. nested fields), each level should be separated by a forward slash. E.g. customer/id.",
          "default": ""
        },
        "null_handling_config": {
          "oneOf": [
            {
              "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata.NullHandlingConfig"
            },
            {
              "type": "null"
            }
          ],
          "title": "strmprivacy.api.entities.v1.FieldMetadata.NullHandlingConfig null_handling_config = 5;",
          "description": "How null values should generally be dealt with for a field.",
          "default": {
            
          }
        },
        "ordinal_values": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string",
                "title": "string"
              }
            },
            {
              "type": "null"
            }
          ],
          "title": "repeated string ordinal_values = 4;",
          "description": "If a field is of ordinal values, defines the possible values and their order.",
          "default": null
        },
        "personal_data_config": {
          "oneOf": [
            {
              "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata.PersonalDataConfig"
            },
            {
              "type": "null"
            }
          ],
          "title": "strmprivacy.api.entities.v1.FieldMetadata.PersonalDataConfig personal_data_config = 2;",
          "description": "Metadata on the type of personal data this field may contain.",
          "default": {
            
          }
        },
        "statistical_data_type": {
          "oneOf": [
            {
              "$ref": "#/definitions/strmprivacy.api.entities.v1.StatisticalDataType"
            },
            {
              "type": "null"
            }
          ],
          "title": "strmprivacy.api.entities.v1.StatisticalDataType statistical_data_type = 3;",
          "description": "The statistical data type of the field, e.g. nominal, ordinal, numerical.",
          "default": "STATISTICAL_DATA_TYPE_UNSPECIFIED"
        }
      }
    },
    "strmprivacy.api.entities.v1.FieldMetadata.NullHandlingConfig": {
      "type": "object",
      "properties": {
        "defaultValue": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata.NullHandlingConfig/definitions/default_value"
        },
        "type": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata.NullHandlingConfig/definitions/type"
        }
      },
      "patternProperties": {
        "^default_value$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata.NullHandlingConfig/definitions/default_value"
        }
      },
      "additionalProperties": {
        "title": "Unknown field"
      },
      "definitions": {
        "default_value": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string default_value = 2;",
          "description": "If the type is DEFAULT_VALUE, the desired default value must be specified.",
          "default": ""
        },
        "type": {
          "oneOf": [
            {
              "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata.NullHandlingConfig.NullHandlingType"
            },
            {
              "type": "null"
            }
          ],
          "title": "strmprivacy.api.entities.v1.FieldMetadata.NullHandlingConfig.NullHandlingType type = 1;",
          "default": "NULL_HANDLING_TYPE_UNSPECIFIED"
        }
      }
    },
    "strmprivacy.api.entities.v1.SimpleSchemaNode": {
      "type": "object",
      "properties": {
        "avroName": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SimpleSchemaNode/definitions/avro_name"
        },
        "doc": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SimpleSchemaNode/definitions/doc"
        },
        "name": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SimpleSchemaNode/definitions/name"
        },
        "nodes": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SimpleSchemaNode/definitions/nodes"
        },
        "repeated": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SimpleSchemaNode/definitions/repeated"
        },
        "required": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SimpleSchemaNode/definitions/required"
        },
        "type": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SimpleSchemaNode/definitions/type"
        }
      },
      "patternProperties": {
        "^avro_name$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SimpleSchemaNode/definitions/avro_name"
        }
      },
      "additionalProperties": {
        "title": "Unknown field"
      },
      "definitions": {
        "avro_name": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string avro_name = 7;",
          "description": "avro compatible name set by creator OR derived from name",
          "default": ""
        },
        "doc": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string doc = 6;",
          "description": "constraints:\nsize < 5000",
          "default": ""
        },
        "name": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string name = 2;",
          "description": "constraints: same as SimpleSchemaDefinition",
          "default": ""
        },
        "nodes": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/strmprivacy.api.entities.v1.SimpleSchemaNode",
                "title": "strmprivacy.api.entities.v1.SimpleSchemaNode",
                "default": {
                  
                }
              }
            },
            {
              "type": "null"
            }
          ],
          "title": "repeated strmprivacy.api.entities.v1.SimpleSchemaNode nodes = 5;",
          "default": [
            {
              
            }
          ]
        },
        "repeated": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "bool repeated = 3;",
          "default": false
        },
        "required": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "bool required = 4;",
          "default": false
        },
        "type": {
          "oneOf": [
            {
              "$ref": "#/definitions/strmprivacy.api.entities.v1.SimpleSchemaNodeType"
            },
            {
              "type": "null"
            }
          ],
          "title": "strmprivacy.api.entities.v1.SimpleSchemaNodeType type = 1;",
          "default": "SIMPLE_SCHEMA_NODE_TYPE_UNSPECIFIED"
        }
      }
    },
    "strmprivacy.api.entities.v1.Schema": {
      "type": "object",
      "properties": {
        "definition": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema/definitions/definition"
        },
        "fingerprint": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema/definitions/fingerprint"
        },
        "id": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema/definitions/id"
        },
        "isPublic": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema/definitions/is_public"
        },
        "metadata": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema/definitions/metadata"
        },
        "ref": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema/definitions/ref"
        },
        "simpleSchema": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema/definitions/simple_schema"
        },
        "state": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema/definitions/state"
        }
      },
      "patternProperties": {
        "^is_public$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema/definitions/is_public"
        },
        "^simple_schema$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema/definitions/simple_schema"
        }
      },
      "additionalProperties": {
        "title": "Unknown field"
      },
      "definitions": {
        "definition": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string definition = 4;",
          "description": "constraints: is no longer required provided simple_schema is not empty.",
          "default": ""
        },
        "fingerprint": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string fingerprint = 5;",
          "default": ""
        },
        "id": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string id = 8;",
          "description": "The UUID of this schema",
          "default": ""
        },
        "is_public": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "bool is_public = 3;",
          "description": "(-- 'is' is intentional here (see https://google.aip.dev/140#booleans) --)",
          "default": false
        },
        "metadata": {
          "oneOf": [
            {
              "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaMetadata"
            },
            {
              "type": "null"
            }
          ],
          "title": "strmprivacy.api.entities.v1.SchemaMetadata metadata = 6;",
          "default": {
            
          }
        },
        "ref": {
          "oneOf": [
            {
              "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaRef"
            },
            {
              "type": "null"
            }
          ],
          "title": "strmprivacy.api.entities.v1.SchemaRef ref = 1;",
          "default": {
            
          }
        },
        "simple_schema": {
          "oneOf": [
            {
              "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema.SimpleSchemaDefinition"
            },
            {
              "type": "null"
            }
          ],
          "title": "strmprivacy.api.entities.v1.Schema.SimpleSchemaDefinition simple_schema = 7;",
          "default": {
            
          }
        },
        "state": {
          "oneOf": [
            {
              "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema.State"
            },
            {
              "type": "null"
            }
          ],
          "title": "strmprivacy.api.entities.v1.Schema.State state = 2;",
          "default": "STATE_UNSPECIFIED"
        }
      }
    },
    "strmprivacy.api.entities.v1.SchemaRef": {
      "type": "object",
      "properties": {
        "handle": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaRef/definitions/handle"
        },
        "name": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaRef/definitions/name"
        },
        "schemaType": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaRef/definitions/schema_type"
        },
        "version": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaRef/definitions/version"
        }
      },
      "patternProperties": {
        "^schema_type$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaRef/definitions/schema_type"
        }
      },
      "additionalProperties": {
        "title": "Unknown field"
      },
      "definitions": {
        "handle": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string handle = 1;",
          "description": "constraints: generic name constraint",
          "default": ""
        },
        "name": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string name = 2;",
          "description": "constraints: generic name constraint",
          "default": ""
        },
        "schema_type": {
          "oneOf": [
            {
              "$ref": "#/definitions/strmprivacy.api.entities.v1.SchemaType"
            },
            {
              "type": "null"
            }
          ],
          "title": "strmprivacy.api.entities.v1.SchemaType schema_type = 4;",
          "default": "SCHEMA_TYPE_UNSPECIFIED"
        },
        "version": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string version = 3;",
          "description": "constraints: `\\d+\\.\\d+\\.\\d+",
          "default": ""
        }
      }
    },
    "strmprivacy.api.entities.v1.DataContractRef": {
      "type": "object",
      "properties": {
        "handle": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContractRef/definitions/handle"
        },
        "name": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContractRef/definitions/name"
        },
        "version": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContractRef/definitions/version"
        }
      },
      "additionalProperties": {
        "title": "Unknown field"
      },
      "definitions": {
        "handle": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string handle = 1;",
          "description": "constraint: handle should already exist",
          "default": ""
        },
        "name": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string name = 2;",
          "description": "constraints: generic name constraint, unique within handle",
          "default": ""
        },
        "version": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string version = 3;",
          "description": "constraints: semantic version, e.g. 1.12.3",
          "default": ""
        }
      }
    },
    "strmprivacy.api.entities.v1.FieldMetadata.PersonalDataConfig": {
      "type": "object",
      "properties": {
        "gdprSpecialPersonalDataType": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata.PersonalDataConfig/definitions/gdpr_special_personal_data_type"
        },
        "isPii": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata.PersonalDataConfig/definitions/is_pii"
        },
        "isQuasiId": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata.PersonalDataConfig/definitions/is_quasi_id"
        },
        "purposeLevel": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata.PersonalDataConfig/definitions/purpose_level"
        }
      },
      "patternProperties": {
        "^gdpr_special_personal_data_type$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata.PersonalDataConfig/definitions/gdpr_special_personal_data_type"
        },
        "^is_pii$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata.PersonalDataConfig/definitions/is_pii"
        },
        "^is_quasi_id$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata.PersonalDataConfig/definitions/is_quasi_id"
        },
        "^purpose_level$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata.PersonalDataConfig/definitions/purpose_level"
        }
      },
      "additionalProperties": {
        "title": "Unknown field"
      },
      "definitions": {
        "gdpr_special_personal_data_type": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string gdpr_special_personal_data_type = 4;",
          "description": "The special sensitive data type as defined by the GDPR https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679#d1e2051-1-1",
          "default": ""
        },
        "is_pii": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "bool is_pii = 1;",
          "description": "Currently, only string fields or repeated string fields can be marked as PII, since other data types cannot store an encrypted string.",
          "default": false
        },
        "is_quasi_id": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "bool is_quasi_id = 2;",
          "description": "A quasi identifier doesn't identify an individual directly, but combined with other QIs can result in a unique (direct) identifier.",
          "default": false
        },
        "purpose_level": {
          "oneOf": [
            {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "integer"
                }
              ]
            },
            {
              "type": "null"
            }
          ],
          "title": "int32 purpose_level = 3;",
          "description": "The purpose level as defined in the purpose level mapping of an organization.",
          "default": 0
        }
      }
    },
    "strmprivacy.api.entities.v1.StatisticalDataType": {
      "enum": [
        "STATISTICAL_DATA_TYPE_UNSPECIFIED",
        0,
        "NOMINAL",
        1,
        "ORDINAL",
        2,
        "NUMERICAL",
        3
      ],
      "markdownEnumDescriptions": [
        "(or 0) ",
        "(or \"STATISTICAL_DATA_TYPE_UNSPECIFIED\") ",
        "(or 1) ",
        "(or \"NOMINAL\") ",
        "(or 2) ",
        "(or \"ORDINAL\") ",
        "(or 3) ",
        "(or \"NUMERICAL\") "
      ]
    },
    "strmprivacy.api.entities.v1.DataContract": {
      "type": "object",
      "properties": {
        "keyField": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/key_field"
        },
        "state": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/state"
        },
        "piiFields": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/pii_fields"
        },
        "ref": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/ref"
        },
        "schema": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/schema"
        },
        "creatorExternalUserId": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/creator_external_user_id"
        },
        "id": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/id"
        },
        "metadata": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/metadata"
        },
        "fieldMetadata": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/field_metadata"
        },
        "dataSubjectField": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/data_subject_field"
        },
        "projectId": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/project_id"
        },
        "validations": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/validations"
        },
        "isPublic": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/is_public"
        }
      },
      "patternProperties": {
        "^creator_external_user_id$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/creator_external_user_id"
        },
        "^data_subject_field$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/data_subject_field"
        },
        "^field_metadata$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/field_metadata"
        },
        "^is_public$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/is_public"
        },
        "^key_field$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/key_field"
        },
        "^pii_fields$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/pii_fields"
        },
        "^project_id$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract/definitions/project_id"
        }
      },
      "additionalProperties": {
        "title": "Unknown field"
      },
      "definitions": {
        "is_public": {
          "oneOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "title": "bool is_public = 4;",
          "description": "(-- 'is' is intentional here (see https://google.aip.dev/140#booleans) --)",
          "default": false
        },
        "project_id": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string project_id = 11;",
          "default": ""
        },
        "state": {
          "oneOf": [
            {
              "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContract.State"
            },
            {
              "type": "null"
            }
          ],
          "title": "strmprivacy.api.entities.v1.DataContract.State state = 3;",
          "default": "STATE_UNSPECIFIED"
        },
        "ref": {
          "oneOf": [
            {
              "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContractRef"
            },
            {
              "type": "null"
            }
          ],
          "title": "strmprivacy.api.entities.v1.DataContractRef ref = 2;",
          "default": {
            
          }
        },
        "schema": {
          "oneOf": [
            {
              "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema"
            },
            {
              "type": "null"
            }
          ],
          "title": "strmprivacy.api.entities.v1.Schema schema = 9;",
          "default": {
            
          }
        },
        "field_metadata": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/strmprivacy.api.entities.v1.FieldMetadata",
                "title": "strmprivacy.api.entities.v1.FieldMetadata",
                "default": {
                  
                }
              }
            },
            {
              "type": "null"
            }
          ],
          "title": "repeated strmprivacy.api.entities.v1.FieldMetadata field_metadata = 12;",
          "default": [
            {
              
            }
          ]
        },
        "creator_external_user_id": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string creator_external_user_id = 13;",
          "default": ""
        },
        "id": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string id = 1;",
          "default": ""
        },
        "metadata": {
          "oneOf": [
            {
              "$ref": "#/definitions/strmprivacy.api.entities.v1.DataContractMetadata"
            },
            {
              "type": "null"
            }
          ],
          "title": "strmprivacy.api.entities.v1.DataContractMetadata metadata = 8;",
          "default": {
            
          }
        },
        "data_subject_field": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string data_subject_field = 10;",
          "default": ""
        },
        "pii_fields": {
          "oneOf": [
            {
              "type": "object",
              "additionalProperties": {
                "oneOf": [
                  {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "integer"
                      }
                    ]
                  },
                  {
                    "type": "null"
                  }
                ],
                "title": "int32",
                "default": 0
              }
            },
            {
              "type": "null"
            }
          ],
          "title": "map<string, int32> pii_fields = 6;",
          "description": "PII Fields as a map, where the key is the field path (i.e. producerSessionId or customer/id) and the\n value is the purpose level, provided as an integer",
          "default": {
            
          },
          "deprecationMessage": "Field \"pii_fields\" is marked as deprecated"
        },
        "validations": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/strmprivacy.api.entities.v1.Validation",
                "title": "strmprivacy.api.entities.v1.Validation",
                "default": {
                  
                }
              }
            },
            {
              "type": "null"
            }
          ],
          "title": "repeated strmprivacy.api.entities.v1.Validation validations = 7;",
          "default": [
            {
              
            }
          ]
        },
        "key_field": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string key_field = 5;",
          "default": ""
        }
      }
    },
    "strmprivacy.api.entities.v1.Schema.SimpleSchemaDefinition": {
      "type": "object",
      "properties": {
        "avroName": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema.SimpleSchemaDefinition/definitions/avro_name"
        },
        "doc": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema.SimpleSchemaDefinition/definitions/doc"
        },
        "name": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema.SimpleSchemaDefinition/definitions/name"
        },
        "namespace": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema.SimpleSchemaDefinition/definitions/namespace"
        },
        "nodes": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema.SimpleSchemaDefinition/definitions/nodes"
        }
      },
      "patternProperties": {
        "^avro_name$": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Schema.SimpleSchemaDefinition/definitions/avro_name"
        }
      },
      "additionalProperties": {
        "title": "Unknown field"
      },
      "definitions": {
        "avro_name": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string avro_name = 5;",
          "description": "avro compatible name set by creator OR derived from name (thus ignore_empty = true)",
          "default": ""
        },
        "doc": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string doc = 3;",
          "default": ""
        },
        "name": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string name = 1;",
          "description": "constraints: printable characters",
          "default": ""
        },
        "namespace": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string namespace = 2;",
          "description": "constraints:\ndot separated sequence of name constraints\nmust be Avro compatible. When absent becomes <handle>.<name>.v<version>",
          "default": ""
        },
        "nodes": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "$ref": "#/definitions/strmprivacy.api.entities.v1.SimpleSchemaNode",
                "title": "strmprivacy.api.entities.v1.SimpleSchemaNode",
                "default": {
                  
                }
              }
            },
            {
              "type": "null"
            }
          ],
          "title": "repeated strmprivacy.api.entities.v1.SimpleSchemaNode nodes = 4;",
          "default": [
            {
              
            }
          ]
        }
      },
      "description": "constraints: overall size < 100000 TBD"
    },
    "strmprivacy.api.entities.v1.SimpleSchemaNodeType": {
      "enum": [
        "SIMPLE_SCHEMA_NODE_TYPE_UNSPECIFIED",
        0,
        "STRING",
        1,
        "BOOLEAN",
        2,
        "FLOAT",
        3,
        "INTEGER",
        4,
        "LONG",
        5,
        "NODE",
        10
      ],
      "markdownEnumDescriptions": [
        "(or 0) ",
        "(or \"SIMPLE_SCHEMA_NODE_TYPE_UNSPECIFIED\") ",
        "(or 1) ",
        "(or \"STRING\") ",
        "(or 2) ",
        "(or \"BOOLEAN\") ",
        "(or 3) ",
        "(or \"FLOAT\") ",
        "(or 4) ",
        "(or \"INTEGER\") ",
        "(or 5) ",
        "(or \"LONG\") ",
        "(or 10) ",
        "(or \"NODE\") "
      ]
    },
    "strmprivacy.api.entities.v1.Label": {
      "type": "object",
      "properties": {
        "key": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Label/definitions/key"
        },
        "value": {
          "$ref": "#/definitions/strmprivacy.api.entities.v1.Label/definitions/value"
        }
      },
      "additionalProperties": {
        "title": "Unknown field"
      },
      "definitions": {
        "key": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string key = 1;",
          "description": "The key of the label.",
          "default": ""
        },
        "value": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "string value = 2;",
          "description": "The value of the label. An empty string means there is no value.",
          "default": ""
        }
      }
    }
  },
  "title": "strmprivacy.api.entities.v1.DataContract"
}