{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://modele-donnees-filiere-enquete.insee.fr/specs/3.0.0-rc.5/CommunicationRequest.json",
  "title": "CommunicationRequest",
  "description": "The communication request sent by Protools to the communication service",
  "type": "object",
  "properties": {
    "id": {
      "description": "Identifiant technique de la demande de communication / Technical identifer of the communication request",
      "type": "string",
      "format": "uuid"
    },
    "interrogationId": {
      "description": "Identifiant de l'interrogation au format UUID généré par REM // Technical identifier for the interrogation",
      "type": "string",
      "format": "uuid"
    },
    "partitionId": {
      "description": "Identifiant du lot au format UUID généré par le CPIE. Correspond à partitionId du fichier de contexte. // Partition identifier to which the interrogation belongs",
      "type": "string",
      "format": "uuid"
    },
    "communicationId": {
      "description": "Identifiant de la communication // Identifier of communication",
      "type": "string",
      "format": "uuid"
    },
    "extCommunicationData": {
      "$schema": "https://json-schema.org/draft/2020-12/schema",
      "title": "FlexibleKeyValueMap",
      "description": "Un tableau contenant plusieurs FlexibleKeyValueMapEntry",
      "type": "array",
      "items": {
        "oneOf": [
          {
            "type": "object",
            "title": "EntryStringVal",
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "const": "string"
              }
            },
            "required": [
              "key",
              "value",
              "type"
            ],
            "additionalProperties": false
          },
          {
            "type": "object",
            "title": "EntryBooleanVal",
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "boolean"
              },
              "type": {
                "type": "string",
                "const": "boolean"
              }
            },
            "required": [
              "key",
              "value",
              "type"
            ],
            "additionalProperties": false
          }
        ],
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "string": "#/$defs/EntryStringVal",
            "boolean": "#/$defs/EntryBooleanVal"
          }
        }
      },
      "$defs": {
        "FlexibleKeyValueMapEntry": {
          "oneOf": [
            {
              "type": "object",
              "title": "EntryStringVal",
              "properties": {
                "key": {
                  "type": "string"
                },
                "value": {
                  "type": "string"
                },
                "type": {
                  "type": "string",
                  "const": "string"
                }
              },
              "required": [
                "key",
                "value",
                "type"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "title": "EntryBooleanVal",
              "properties": {
                "key": {
                  "type": "string"
                },
                "value": {
                  "type": "boolean"
                },
                "type": {
                  "type": "string",
                  "const": "boolean"
                }
              },
              "required": [
                "key",
                "value",
                "type"
              ],
              "additionalProperties": false
            }
          ],
          "discriminator": {
            "propertyName": "type",
            "mapping": {
              "string": "#/$defs/EntryStringVal",
              "boolean": "#/$defs/EntryBooleanVal"
            }
          }
        },
        "EntryStringVal": {
          "type": "object",
          "title": "EntryStringVal",
          "properties": {
            "key": {
              "type": "string"
            },
            "value": {
              "type": "string"
            },
            "type": {
              "type": "string",
              "const": "string"
            }
          },
          "required": [
            "key",
            "value",
            "type"
          ],
          "additionalProperties": false
        },
        "EntryBooleanVal": {
          "type": "object",
          "title": "EntryBooleanVal",
          "properties": {
            "key": {
              "type": "string"
            },
            "value": {
              "type": "boolean"
            },
            "type": {
              "type": "string",
              "const": "boolean"
            }
          },
          "required": [
            "key",
            "value",
            "type"
          ],
          "additionalProperties": false
        }
      }
    },
    "recipients": {
      "description": "Une liste de destinataires // A list of recipients",
      "type": "array",
      "items": {
        "title": "Recipient",
        "description": "Destinataire de la communication // recipent of the communication",
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "addressL1": {
            "description": "ligne1 de l'adresse // address line 1",
            "type": "string"
          },
          "addressL2": {
            "description": "ligne2 de l'adresse // address line 2",
            "type": "string"
          },
          "addressL3": {
            "description": "ligne3 de l'adresse // address line 3",
            "type": "string"
          },
          "addressL4": {
            "description": "ligne4 de l'adresse // address line 4",
            "type": "string"
          },
          "addressL5": {
            "description": "ligne5 de l'adresse // address line 5",
            "type": "string"
          },
          "addressL6": {
            "description": "ligne6 de l'adresse // address line 6",
            "type": "string"
          },
          "addressL7": {
            "description": "ligne7 de l'adresse // address line 7",
            "type": "string"
          },
          "webConnectionId": {
            "description": "Identifiant de connexion au portail de collecte web. A remplir si connu, sinon, il est créé durant le processus d'intégration. // Web connection identifier.",
            "type": "string"
          },
          "generatePassword": {
            "description": "envoi avec génération du mot de passe / send with password generation",
            "type": "boolean"
          },
          "email": {
            "description": "Email du destinataire // Recipient email",
            "type": "string"
          }
        },
        "required": [
          "addressL1",
          "addressL2",
          "addressL3",
          "addressL4",
          "addressL5",
          "addressL6",
          "addressL6",
          "webConnectionId",
          "generatePassword",
          "email"
        ]
      }
    }
  },
  "$defs": {
    "Recipient": {
      "title": "Recipient",
      "description": "Destinataire de la communication // recipent of the communication",
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "addressL1": {
          "description": "ligne1 de l'adresse // address line 1",
          "type": "string"
        },
        "addressL2": {
          "description": "ligne2 de l'adresse // address line 2",
          "type": "string"
        },
        "addressL3": {
          "description": "ligne3 de l'adresse // address line 3",
          "type": "string"
        },
        "addressL4": {
          "description": "ligne4 de l'adresse // address line 4",
          "type": "string"
        },
        "addressL5": {
          "description": "ligne5 de l'adresse // address line 5",
          "type": "string"
        },
        "addressL6": {
          "description": "ligne6 de l'adresse // address line 6",
          "type": "string"
        },
        "addressL7": {
          "description": "ligne7 de l'adresse // address line 7",
          "type": "string"
        },
        "webConnectionId": {
          "description": "Identifiant de connexion au portail de collecte web. A remplir si connu, sinon, il est créé durant le processus d'intégration. // Web connection identifier.",
          "type": "string"
        },
        "generatePassword": {
          "description": "envoi avec génération du mot de passe / send with password generation",
          "type": "boolean"
        },
        "email": {
          "description": "Email du destinataire // Recipient email",
          "type": "string"
        }
      },
      "required": [
        "addressL1",
        "addressL2",
        "addressL3",
        "addressL4",
        "addressL5",
        "addressL6",
        "addressL6",
        "webConnectionId",
        "generatePassword",
        "email"
      ]
    }
  }
}