{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "#/components/schemas/schema",
"title": "Schema",
"type": "object",
"description": "Schema information.",
"required": [
"title",
"type",
"description",
"required",
"properties"
],
"properties": {
"title": {
"type": "string",
"description": "Schema title.",
"example": "Client profile schema."
},
"type": {
"type": "string",
"description": "Schema type.",
"example": "object"
},
"description": {
"type": "string",
"description": "Schema's human readable description.",
"example": "This schema describes a b2c customer profile."
},
"required": {
"type": "array",
"description": "Schema required fields.",
"items": {
"type": "string",
"description": "Key of a field that is required in the schema."
},
"example": [
"firstName",
"lastName",
"email",
"document",
"documentType"
]
},
"properties": {
"type": "object",
"description": "Object describing each field in your desired schema. In this object, each property is a new object, describing the field according to: `type` (string); `sensitive` (boolean); `pii` (boolean) and `items.type` (if field is array).",
"properties": {
"additionalProperties": {
"type": "object",
"description": "Schema of any given field described in the `properties` field.",
"required": [
"type",
"sensitive",
"pii"
],
"properties": {
"type": {
"type": "string",
"description": "Schema property type.",
"example": "string"
},
"sensitive": {
"type": "boolean",
"description": "Indicates whether the property is sensitive data. Set to `true` if `pii` is `true` and set to `false` if `pii` is `false`.",
"example": true
},
"pii": {
"type": "boolean",
"description": "Indicates whether the property is Personal Identifiable Information (PII).",
"example": true
},
"items": {
"type": "object",
"description": "Object containing the type of the items if the field is an array. Typically, arrays will contain strings and will be used for fields such as `email`.",
"properties": {
"type": {
"type": "string",
"description": "Field type.",
"example": "string"
}
},
"example": {
"type": "string"
}
}
}
}
}
},
"documentTTL": {
"type": "integer",
"description": "Document time to live, in days. After this many days from its creation or update, any document cerated from this schema will be deleted.",
"example": 1825
},
"version": {
"type": "integer",
"description": "Schema version.",
"example": 1
},
"v-indexed": {
"type": "array",
"description": "List of fields to be indexed.",
"example": [
"email",
"document"
],
"items": {
"type": "string",
"description": "Field to be indexed."
}
},
"v-unique": {
"type": "array",
"description": "List of fields that must be unique.",
"example": [
"email",
"document"
],
"items": {
"type": "string",
"description": "Field that must be unique."
}
}
}
}