mobility-accounts/schemas/CMS/fr-mesri-information.schema...

285 lines
6.9 KiB
JSON
Executable File

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "fr-mesri-information.schema.json",
"title": "Personal French MESRI information",
"description": "A person's French MESRI information",
"type": "object",
"properties": {
"student": {
"description": "If the person has student status",
"$ref": "#/$defs/boolean_field"
},
"studentStartDate": {
"description": "The person's student status start date",
"$ref": "#/$defs/date_field"
},
"studentEndDate": {
"description": "The person's student status end date",
"$ref": "#/$defs/date_field"
},
"scholarship": {
"description": "If the person has scholarship",
"$ref": "#/$defs/boolean_field"
},
"scholarshipStartDate": {
"description": "The person's scholarship start date",
"$ref": "#/$defs/date_field"
},
"scholarshipEndDate": {
"description": "The person's scholarship end date",
"$ref": "#/$defs/date_field"
}
},
"required": [],
"additionalProperties": false,
"$defs": {
"boolean_field": {
"type": "object",
"properties": {
"value": {
"type": "boolean"
},
"source": {
"type": "string"
},
"certificationDate": {
"type": "string",
"format": "date-time"
}
},
"required": [
"value"
],
"additionalProperties": false
},
"string_field": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"source": {
"type": "string"
},
"certificationDate": {
"type": "string",
"format": "date-time"
}
},
"required": [
"value"
],
"additionalProperties": false
},
"date_field": {
"type": "object",
"properties": {
"value": {
"type": "string",
"format": "date"
},
"source": {
"type": "string"
},
"certificationDate": {
"type": "string",
"format": "date-time"
}
},
"required": [
"value"
],
"additionalProperties": false
},
"email_field": {
"type": "object",
"properties": {
"value": {
"type": "string",
"format": "email"
},
"source": {
"type": "string"
},
"certificationDate": {
"type": "string",
"format": "date-time"
}
},
"required": [
"value"
],
"additionalProperties": false
},
"postal_address_field": {
"$comment": "Rough implementation of the AFNOR NF Z 10-011 standard",
"type": "object",
"properties": {
"value": {
"type": "object",
"properties": {
"line1": {
"type": "string",
"maxLength": 38
},
"line2": {
"type": "string",
"maxLength": 38
},
"line3": {
"type": "string",
"maxLength": 38
},
"line4": {
"type": "string",
"maxLength": 38
},
"line5": {
"type": "string",
"maxLength": 38
},
"line6": {
"type": "string",
"maxLength": 38
},
"line7": {
"type": "string",
"maxLength": 38
}
},
"$comment": "At least first line is expected to be filled",
"required": [
"line1"
],
"additionalProperties": false
},
"source": {
"type": "string"
},
"certificationDate": {
"type": "string",
"format": "date-time"
}
},
"required": [
"value"
],
"additionalProperties": false
},
"phone_number_field": {
"type": "object",
"properties": {
"value": {
"type": "string",
"$comment": "E.164 standard",
"pattern": "^\\+?[1-9]\\d{1,14}$"
},
"mobile": {
"type": "boolean",
"$comment": "if the telephone is mobile, meaning it can receive SMS"
},
"source": {
"type": "string"
},
"certificationDate": {
"type": "string",
"format": "date-time"
}
},
"required": [
"value",
"mobile"
],
"additionalProperties": false
},
"gender_field": {
"type": "object",
"properties": {
"value": {
"type": "integer",
"$comment": "ISO/IEC 5218",
"enum": [0, 1, 2, 9]
},
"source": {
"type": "string"
},
"certificationDate": {
"type": "string",
"format": "date-time"
}
},
"required": [
"value"
],
"additionalProperties": false
},
"city_field": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"inseeValue": {
"type": "string",
"$comment": "French INSEE code for cities",
"minLength": 5,
"maxLength": 5
},
"source": {
"type": "string"
},
"certificationDate": {
"type": "string",
"format": "date-time"
}
},
"oneOf": [
{
"required": [
"name"
]
},
{
"required": [
"inseeValue"
]
}
],
"additionalProperties": false
},
"country_field": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"isoValue": {
"type": "string",
"$comment": "ISO 3166-1 alpha-3",
"minLength": 3,
"maxLength": 3
},
"source": {
"type": "string"
},
"certificationDate": {
"type": "string",
"format": "date-time"
}
},
"oneOf": [
{
"required": [
"name"
]
},
{
"required": [
"isoValue"
]
}
],
"additionalProperties": false
}
}
}