{
  "openapi": "3.0.4",
  "info": {
    "title": "Notifications API",
    "description": "**Welcome to the Notifications API documentation.**\r\n\r\nYou can test the API using **[Swagger](/notifying/demo/v10-0/docs/swagger)**.\r\n\r\nYou can find a detailed documentation by following **[this link](https://docs.egov4.ch/docs/9.1/category/notifications-api)**.\r\n\r\n",
    "contact": {
      "name": "Artionet",
      "url": "https://www.artionet.ch/",
      "email": "support@artionet.com"
    },
    "version": "v10.0",
    "x-logo": {
      "url": "/notifying/demo/v10-0/Documentation/Images/logo_artionet.png",
      "backgroundColor": "#fafafa",
      "altText": "Artionet Logo"
    }
  },
  "servers": [
    {
      "url": "/notifying/demo/v10-0"
    }
  ],
  "paths": {
    "/Channels/{channelName}": {
      "get": {
        "tags": [
          "Channels"
        ],
        "summary": "Get a single global channel",
        "description": "Allows to retrieve a specific channel identified by its `Name`.",
        "operationId": "ChannelByName",
        "parameters": [
          {
            "name": "channelName",
            "in": "path",
            "description": "`Name` of the channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChannelDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Channels"
        ],
        "summary": "Update a global channel",
        "description": "Allows to update an existing global channel.",
        "parameters": [
          {
            "name": "channelName",
            "in": "path",
            "description": "`Name` of the channel to update",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Updated channel",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ChannelForUpdateDto"
                  }
                ],
                "description": "Channel for update Data Transfer Object\r\n\r\nThis object represents a global channel to be updated in DB"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChannelDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Channels"
        ],
        "summary": "Delete an existing channel",
        "description": "Allows to delete an existing channel identified by its `Name`, and all its relations.",
        "parameters": [
          {
            "name": "channelName",
            "in": "path",
            "description": "`Name` of the channel to delete",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/Channels": {
      "get": {
        "tags": [
          "Channels"
        ],
        "summary": "Get a list of global channels",
        "description": "Allows to retrieve a list of global channels according to certain criteria.",
        "parameters": [
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Page number to retrieve",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Number of notifications per page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "OrderBy",
            "in": "query",
            "description": "Sorting option.\r\nUsage (no square brackets !) : `orderBy=[property] [asc,desc],[property] [asc,desc],...`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Pagination-Total-Count": {
                "description": "Total number of elements",
                "schema": {
                  "type": "integer",
                  "description": "Total number of elements",
                  "format": ""
                }
              },
              "X-Pagination-Page-Size": {
                "description": "Size of a page of element",
                "schema": {
                  "type": "integer",
                  "description": "Size of a page of element",
                  "format": ""
                }
              },
              "X-Pagination-Current-Page": {
                "description": "Index of the current page",
                "schema": {
                  "type": "integer",
                  "description": "Index of the current page",
                  "format": ""
                }
              },
              "X-Pagination-Total-Pages": {
                "description": "Total number of pages",
                "schema": {
                  "type": "integer",
                  "description": "Total number of pages",
                  "format": ""
                }
              },
              "X-Pagination-Next-Page-Link": {
                "description": "Link to the next page",
                "schema": {
                  "type": "string",
                  "description": "Link to the next page",
                  "format": ""
                }
              },
              "X-Pagination-Previous-Page-Link": {
                "description": "Link to the previous page",
                "schema": {
                  "type": "string",
                  "description": "Link to the previous page",
                  "format": ""
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChannelDto"
                  }
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Channels"
        ],
        "summary": "Create a new global channel",
        "description": "Allows to create a global channel.",
        "requestBody": {
          "description": "Global channel to create",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ChannelForCreationDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChannelDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/Notifications/{notificationId}": {
      "get": {
        "tags": [
          "Notifications"
        ],
        "summary": "Get a single notification",
        "description": "Allows to retrieve a specific notifiation identified by its `Id`.",
        "operationId": "NotificationById",
        "parameters": [
          {
            "name": "notificationId",
            "in": "path",
            "description": "`ID` of the notification",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/NotificationDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Notifications"
        ],
        "summary": "Delete an existing notification",
        "description": "Allows to delete an existing notifiation identified by its `Id`.",
        "parameters": [
          {
            "name": "notificationId",
            "in": "path",
            "description": "`ID` of the notification to delete",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/Notifications": {
      "get": {
        "tags": [
          "Notifications"
        ],
        "summary": "Get list of notifications",
        "description": "Allows to retrieve a list of notifications (GET only) according to certain criteria.",
        "parameters": [
          {
            "name": "RecipientId",
            "in": "query",
            "description": "Filter notification by `RecipientId` property",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "BusinessCaseId",
            "in": "query",
            "description": "Filter notifiation by `BusinessCaseId` property",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "SearchTerm",
            "in": "query",
            "description": "Term searched in notification `MsgLong`, `MsgShort` and `Subject`",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ProcessingStatus",
            "in": "query",
            "description": "Filter notification by `ProcessingStatus` property",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/NotificationProcessingStatus"
                }
              ]
            }
          },
          {
            "name": "MinReceiptStamp",
            "in": "query",
            "description": "Filter notification with a later or equal `ReceiptStamp`",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "MaxReceiptStamp",
            "in": "query",
            "description": "Filter notification with a earlier or equal `ReceiptStamp`",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "MinCompletionStamp",
            "in": "query",
            "description": "Filter notification with a later or equal `CompletionStamp`",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "MaxCompletionStamp",
            "in": "query",
            "description": "Filter notification with a earlier or equal `CompletionStamp`",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Page number to retrieve",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Number of notifications per page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "OrderBy",
            "in": "query",
            "description": "Sorting option.\r\nUsage (no square brackets !) : `orderBy=[property] [asc,desc],[property] [asc,desc],...`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Pagination-Total-Count": {
                "description": "Total number of elements",
                "schema": {
                  "type": "integer",
                  "description": "Total number of elements",
                  "format": ""
                }
              },
              "X-Pagination-Page-Size": {
                "description": "Size of a page of element",
                "schema": {
                  "type": "integer",
                  "description": "Size of a page of element",
                  "format": ""
                }
              },
              "X-Pagination-Current-Page": {
                "description": "Index of the current page",
                "schema": {
                  "type": "integer",
                  "description": "Index of the current page",
                  "format": ""
                }
              },
              "X-Pagination-Total-Pages": {
                "description": "Total number of pages",
                "schema": {
                  "type": "integer",
                  "description": "Total number of pages",
                  "format": ""
                }
              },
              "X-Pagination-Next-Page-Link": {
                "description": "Link to the next page",
                "schema": {
                  "type": "string",
                  "description": "Link to the next page",
                  "format": ""
                }
              },
              "X-Pagination-Previous-Page-Link": {
                "description": "Link to the previous page",
                "schema": {
                  "type": "string",
                  "description": "Link to the previous page",
                  "format": ""
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NotificationDto"
                  }
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "head": {
        "tags": [
          "Notifications"
        ],
        "summary": "Get list of notifications",
        "description": "Allows to retrieve a list of notifications (GET only) according to certain criteria.",
        "parameters": [
          {
            "name": "RecipientId",
            "in": "query",
            "description": "Filter notification by `RecipientId` property",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "BusinessCaseId",
            "in": "query",
            "description": "Filter notifiation by `BusinessCaseId` property",
            "schema": {
              "type": "string",
              "format": "uuid"
            }
          },
          {
            "name": "SearchTerm",
            "in": "query",
            "description": "Term searched in notification `MsgLong`, `MsgShort` and `Subject`",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ProcessingStatus",
            "in": "query",
            "description": "Filter notification by `ProcessingStatus` property",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/NotificationProcessingStatus"
                }
              ]
            }
          },
          {
            "name": "MinReceiptStamp",
            "in": "query",
            "description": "Filter notification with a later or equal `ReceiptStamp`",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "MaxReceiptStamp",
            "in": "query",
            "description": "Filter notification with a earlier or equal `ReceiptStamp`",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "MinCompletionStamp",
            "in": "query",
            "description": "Filter notification with a later or equal `CompletionStamp`",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "MaxCompletionStamp",
            "in": "query",
            "description": "Filter notification with a earlier or equal `CompletionStamp`",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Page number to retrieve",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Number of notifications per page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "OrderBy",
            "in": "query",
            "description": "Sorting option.\r\nUsage (no square brackets !) : `orderBy=[property] [asc,desc],[property] [asc,desc],...`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Pagination-Total-Count": {
                "description": "Total number of elements",
                "schema": {
                  "type": "integer",
                  "description": "Total number of elements",
                  "format": ""
                }
              },
              "X-Pagination-Page-Size": {
                "description": "Size of a page of element",
                "schema": {
                  "type": "integer",
                  "description": "Size of a page of element",
                  "format": ""
                }
              },
              "X-Pagination-Current-Page": {
                "description": "Index of the current page",
                "schema": {
                  "type": "integer",
                  "description": "Index of the current page",
                  "format": ""
                }
              },
              "X-Pagination-Total-Pages": {
                "description": "Total number of pages",
                "schema": {
                  "type": "integer",
                  "description": "Total number of pages",
                  "format": ""
                }
              },
              "X-Pagination-Next-Page-Link": {
                "description": "Link to the next page",
                "schema": {
                  "type": "string",
                  "description": "Link to the next page",
                  "format": ""
                }
              },
              "X-Pagination-Previous-Page-Link": {
                "description": "Link to the previous page",
                "schema": {
                  "type": "string",
                  "description": "Link to the previous page",
                  "format": ""
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/NotificationDto"
                  }
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "options": {
        "tags": [
          "Notifications"
        ],
        "summary": "Gets the allowed HTTP Methods for URI",
        "description": "Allows to know which methods are allowed for this URI.",
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "Allow": {
                "description": "HTTP Methods allowed for this URI",
                "schema": {
                  "type": "string",
                  "description": "HTTP Methods allowed for this URI",
                  "format": ""
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Notifications"
        ],
        "summary": "Create a new notification",
        "description": "Allows to create a new notification.",
        "requestBody": {
          "description": "Notification to create",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/NotificationForCreationDto"
                  }
                ],
                "description": "Notification for creation Data Transfer Object\r\n\r\nThis object represents a notification to be stored in DB"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Notifications"
        ],
        "summary": "Delete notification by criteria",
        "description": "Allows to delete existing notifiations by criteria.",
        "parameters": [
          {
            "name": "RecipientId",
            "in": "query",
            "description": "`ID` of the notification recipient",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "headers": {
              "X-Deletion-Total-Count": {
                "description": "Number of notifications deleted",
                "schema": {
                  "type": "integer",
                  "description": "Number of notifications deleted",
                  "format": ""
                }
              },
              "X-Deletion-Ids-List": {
                "description": "Ids of the deleted notifications",
                "schema": {
                  "type": "array",
                  "description": "Ids of the deleted notifications",
                  "format": ""
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/Profiles/{profileId}/pushs/{pushId}": {
      "get": {
        "tags": [
          "Profiles"
        ],
        "summary": "Get a single push subscription for a specific profile",
        "description": "Allows to retrieve a specific push subscription identified by its `id` for the provided profile.",
        "operationId": "PushSubscriptionByProfileAndId",
        "parameters": [
          {
            "name": "profileId",
            "in": "path",
            "description": "`Id` of the profile",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pushId",
            "in": "path",
            "description": "`Id` of the push subscription",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PushSubscriptionDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "patch": {
        "tags": [
          "Profiles"
        ],
        "summary": "Update a push subscription for a specific profile",
        "description": "Allows to update an existing push subscription for the specified profile.",
        "parameters": [
          {
            "name": "profileId",
            "in": "path",
            "description": "`Id` of the profile",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pushId",
            "in": "path",
            "description": "`Id` of the push subscription",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Updated push subscription",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PushSubscriptionForUpdateDto"
                  }
                ],
                "description": "Push for update Data Transfer Object\r\n\r\nThis object represents a push subscription to be stored in DB"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PushSubscriptionDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Profiles"
        ],
        "summary": "Delete an existing push subscription for a specific profile",
        "description": "Allows to delete an existing push subscription identified by its `Id` for the provided profile.",
        "parameters": [
          {
            "name": "profileId",
            "in": "path",
            "description": "`Id` of the profile",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "pushId",
            "in": "path",
            "description": "`Id` of the push subscription",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/Profiles/{profileId}/pushs": {
      "get": {
        "tags": [
          "Profiles"
        ],
        "summary": "Get list of push subscriptions for a specific profile",
        "description": "Allows to retrieve a list of push subscriptions for the specified profile according to certain criteria.",
        "parameters": [
          {
            "name": "profileId",
            "in": "path",
            "description": "`Id` of the profile",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Page number to retrieve",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Number of notifications per page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "OrderBy",
            "in": "query",
            "description": "Sorting option.\r\nUsage (no square brackets !) : `orderBy=[property] [asc,desc],[property] [asc,desc],...`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Pagination-Total-Count": {
                "description": "Total number of elements",
                "schema": {
                  "type": "integer",
                  "description": "Total number of elements",
                  "format": ""
                }
              },
              "X-Pagination-Page-Size": {
                "description": "Size of a page of element",
                "schema": {
                  "type": "integer",
                  "description": "Size of a page of element",
                  "format": ""
                }
              },
              "X-Pagination-Current-Page": {
                "description": "Index of the current page",
                "schema": {
                  "type": "integer",
                  "description": "Index of the current page",
                  "format": ""
                }
              },
              "X-Pagination-Total-Pages": {
                "description": "Total number of pages",
                "schema": {
                  "type": "integer",
                  "description": "Total number of pages",
                  "format": ""
                }
              },
              "X-Pagination-Next-Page-Link": {
                "description": "Link to the next page",
                "schema": {
                  "type": "string",
                  "description": "Link to the next page",
                  "format": ""
                }
              },
              "X-Pagination-Previous-Page-Link": {
                "description": "Link to the previous page",
                "schema": {
                  "type": "string",
                  "description": "Link to the previous page",
                  "format": ""
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/PushSubscriptionDto"
                  }
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Profiles"
        ],
        "summary": "Create a new push subscription for a specific profile",
        "description": "Allows to create a push subscription for the specified profile.",
        "parameters": [
          {
            "name": "profileId",
            "in": "path",
            "description": "`Id` of the profile",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Push subscription to create",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/PushSubscriptionForCreationDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PushSubscriptionDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Profiles"
        ],
        "summary": "Delete all push subscriptions for a specific profile",
        "description": "Allows to delete all push subscriptions of the specified profile.",
        "parameters": [
          {
            "name": "profileId",
            "in": "path",
            "description": "`Id` of the profile",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/Profiles/{profileId}/channels/{channelName}": {
      "get": {
        "tags": [
          "Profiles"
        ],
        "summary": "Get a specific channel within a specific profile",
        "description": "Allows to retrieve a specific channel and its relation with a specific profile.",
        "operationId": "GetChannelByProfile",
        "parameters": [
          {
            "name": "profileId",
            "in": "path",
            "description": "`Id` of the profile",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "channelName",
            "in": "path",
            "description": "`Name` of the channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ChannelByProfileDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Profiles"
        ],
        "summary": "Add/update the relation between the specified Channel and Profile",
        "description": "Allows to create a profile channel.",
        "parameters": [
          {
            "name": "profileId",
            "in": "path",
            "description": "`Id` of the profile",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "channelName",
            "in": "path",
            "description": "`Name` of the channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "Profile channel to create",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProfileChannelForUpsertDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProfileChannelDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/Profiles/{profileId}/channels": {
      "get": {
        "tags": [
          "Profiles"
        ],
        "summary": "Get the list of channels within a specific profile",
        "description": "Allows to retrieve a list of profile channels according to certain criteria.",
        "parameters": [
          {
            "name": "profileId",
            "in": "path",
            "description": "`Id` of the profile",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "IsEnabled",
            "in": "query",
            "description": "Indicates if the global channel is available",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Page number to retrieve",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Number of notifications per page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "OrderBy",
            "in": "query",
            "description": "Sorting option.\r\nUsage (no square brackets !) : `orderBy=[property] [asc,desc],[property] [asc,desc],...`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Pagination-Total-Count": {
                "description": "Total number of elements",
                "schema": {
                  "type": "integer",
                  "description": "Total number of elements",
                  "format": ""
                }
              },
              "X-Pagination-Page-Size": {
                "description": "Size of a page of element",
                "schema": {
                  "type": "integer",
                  "description": "Size of a page of element",
                  "format": ""
                }
              },
              "X-Pagination-Current-Page": {
                "description": "Index of the current page",
                "schema": {
                  "type": "integer",
                  "description": "Index of the current page",
                  "format": ""
                }
              },
              "X-Pagination-Total-Pages": {
                "description": "Total number of pages",
                "schema": {
                  "type": "integer",
                  "description": "Total number of pages",
                  "format": ""
                }
              },
              "X-Pagination-Next-Page-Link": {
                "description": "Link to the next page",
                "schema": {
                  "type": "string",
                  "description": "Link to the next page",
                  "format": ""
                }
              },
              "X-Pagination-Previous-Page-Link": {
                "description": "Link to the previous page",
                "schema": {
                  "type": "string",
                  "description": "Link to the previous page",
                  "format": ""
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/ChannelByProfileDto"
                  }
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Profiles"
        ],
        "summary": "Delete all existing relations between channels and a specific profile",
        "description": "Allows to delete all channels associated to the specified profile.",
        "parameters": [
          {
            "name": "profileId",
            "in": "path",
            "description": "`Id` of the profile",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/Profiles/{profileId}/channels/{channelName}/muted-services/{serviceId}": {
      "get": {
        "tags": [
          "Profiles"
        ],
        "summary": "Get a specific muted service for a specific profile-channel",
        "description": "Allows to retrieve a specific muted service for a specific profile-channel.",
        "operationId": "GetMutedService",
        "parameters": [
          {
            "name": "profileId",
            "in": "path",
            "description": "`Id` of the profile",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "channelName",
            "in": "path",
            "description": "`Name` of the channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "serviceId",
            "in": "path",
            "description": "`Id` of the service",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MutedServiceDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Profiles"
        ],
        "summary": "Add/update a specific service as muted for a specific profile-channel",
        "description": "Allows to add/update a muted service for a specific profile-channel.",
        "parameters": [
          {
            "name": "profileId",
            "in": "path",
            "description": "`Id` of the profile",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "channelName",
            "in": "path",
            "description": "`Name` of the channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "serviceId",
            "in": "path",
            "description": "`Id` of the service",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Profile channel to create",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/MutedServiceForUpsertDto"
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/MutedServiceDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Profiles"
        ],
        "summary": "Delete an muted service for a specific profile-channel",
        "description": "Allows to delete an existing muted service for a specific profile-channel",
        "parameters": [
          {
            "name": "profileId",
            "in": "path",
            "description": "`Id` of the profile",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "channelName",
            "in": "path",
            "description": "`Name` of the channel",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "serviceId",
            "in": "path",
            "description": "`Id` of the service",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/Profiles/{profileId}/muted-services": {
      "get": {
        "tags": [
          "Profiles"
        ],
        "summary": "Get the list of muted services for a specific profile",
        "description": "Allows to retrieve a list of profile channels according to certain criteria.",
        "parameters": [
          {
            "name": "profileId",
            "in": "path",
            "description": "`Id` of the profile",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Page number to retrieve",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Number of notifications per page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "OrderBy",
            "in": "query",
            "description": "Sorting option.\r\nUsage (no square brackets !) : `orderBy=[property] [asc,desc],[property] [asc,desc],...`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Pagination-Total-Count": {
                "description": "Total number of elements",
                "schema": {
                  "type": "integer",
                  "description": "Total number of elements",
                  "format": ""
                }
              },
              "X-Pagination-Page-Size": {
                "description": "Size of a page of element",
                "schema": {
                  "type": "integer",
                  "description": "Size of a page of element",
                  "format": ""
                }
              },
              "X-Pagination-Current-Page": {
                "description": "Index of the current page",
                "schema": {
                  "type": "integer",
                  "description": "Index of the current page",
                  "format": ""
                }
              },
              "X-Pagination-Total-Pages": {
                "description": "Total number of pages",
                "schema": {
                  "type": "integer",
                  "description": "Total number of pages",
                  "format": ""
                }
              },
              "X-Pagination-Next-Page-Link": {
                "description": "Link to the next page",
                "schema": {
                  "type": "string",
                  "description": "Link to the next page",
                  "format": ""
                }
              },
              "X-Pagination-Previous-Page-Link": {
                "description": "Link to the previous page",
                "schema": {
                  "type": "string",
                  "description": "Link to the previous page",
                  "format": ""
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/MutedServiceDto"
                  }
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Profiles"
        ],
        "summary": "Delete all existing muted services for a specific profile",
        "description": "Allows to delete all muted services to the specified profile.",
        "parameters": [
          {
            "name": "profileId",
            "in": "path",
            "description": "`Id` of the profile",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/email-templates/{templateId}": {
      "get": {
        "tags": [
          "Templates"
        ],
        "summary": "Get a single e-mail template",
        "description": "Allows to retrieve a specific template identified by its `Id`.",
        "operationId": "TemplateById",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "description": "`ID` of the template",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateDto"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Templates"
        ],
        "summary": "Update an e-mail template",
        "description": "Allows to update (all properties) an existing template.",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "description": "E-mail template `Id`",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "Updated template",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TemplateForUpdateDto"
                  }
                ],
                "description": "E-mail template for update Data Transfer Object\r\n\r\nThis object represents a e-mail template to be updated in DB"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Templates"
        ],
        "summary": "Delete a existing e-mail template",
        "description": "Allows to delete an existing e-mail template identified by its `Id` and all of its previous versions.",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "description": "`ID` of the template to delete",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content"
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/email-templates": {
      "get": {
        "tags": [
          "Templates"
        ],
        "summary": "Get list of e-mail templates",
        "description": "Allows to retrieve a list of templates according to certain criteria.",
        "parameters": [
          {
            "name": "IsEnabled",
            "in": "query",
            "description": "Filtre templates by `IsEnabled` property.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "Type",
            "in": "query",
            "description": "Filtre templates by `Type` property. Avalaible value : `MASTER`, `COMPONENT`.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/TemplateType"
                }
              ]
            }
          },
          {
            "name": "IsEvaluationEnabled",
            "in": "query",
            "description": "Enable the computation of templates score regarding the provided criteria.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "Name",
            "in": "query",
            "description": "Filter templates by `Name` property.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Language",
            "in": "query",
            "description": "Filtre templates by `Language` property. This filtre is also a criteria for template computation.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SenderId",
            "in": "query",
            "description": "Filtre templates by `SenderId` property. This filtre is also a criteria for template computation.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ServiceId",
            "in": "query",
            "description": "Filtre templates by `ServiceId` property. This filtre is also a criteria for template computation.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Page number to retrieve",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Number of notifications per page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "OrderBy",
            "in": "query",
            "description": "Sorting option.\r\nUsage (no square brackets !) : `orderBy=[property] [asc,desc],[property] [asc,desc],...`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Pagination-Total-Count": {
                "description": "Total number of elements",
                "schema": {
                  "type": "integer",
                  "description": "Total number of elements",
                  "format": ""
                }
              },
              "X-Pagination-Page-Size": {
                "description": "Size of a page of element",
                "schema": {
                  "type": "integer",
                  "description": "Size of a page of element",
                  "format": ""
                }
              },
              "X-Pagination-Current-Page": {
                "description": "Index of the current page",
                "schema": {
                  "type": "integer",
                  "description": "Index of the current page",
                  "format": ""
                }
              },
              "X-Pagination-Total-Pages": {
                "description": "Total number of pages",
                "schema": {
                  "type": "integer",
                  "description": "Total number of pages",
                  "format": ""
                }
              },
              "X-Pagination-Next-Page-Link": {
                "description": "Link to the next page",
                "schema": {
                  "type": "string",
                  "description": "Link to the next page",
                  "format": ""
                }
              },
              "X-Pagination-Previous-Page-Link": {
                "description": "Link to the previous page",
                "schema": {
                  "type": "string",
                  "description": "Link to the previous page",
                  "format": ""
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TemplateDto"
                  }
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "head": {
        "tags": [
          "Templates"
        ],
        "summary": "Get list of e-mail templates",
        "description": "Allows to retrieve a list of templates according to certain criteria.",
        "parameters": [
          {
            "name": "IsEnabled",
            "in": "query",
            "description": "Filtre templates by `IsEnabled` property.",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "Type",
            "in": "query",
            "description": "Filtre templates by `Type` property. Avalaible value : `MASTER`, `COMPONENT`.",
            "schema": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/TemplateType"
                }
              ]
            }
          },
          {
            "name": "IsEvaluationEnabled",
            "in": "query",
            "description": "Enable the computation of templates score regarding the provided criteria.",
            "schema": {
              "type": "boolean",
              "default": false
            }
          },
          {
            "name": "Name",
            "in": "query",
            "description": "Filter templates by `Name` property.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "Language",
            "in": "query",
            "description": "Filtre templates by `Language` property. This filtre is also a criteria for template computation.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "SenderId",
            "in": "query",
            "description": "Filtre templates by `SenderId` property. This filtre is also a criteria for template computation.",
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "ServiceId",
            "in": "query",
            "description": "Filtre templates by `ServiceId` property. This filtre is also a criteria for template computation.",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageNumber",
            "in": "query",
            "description": "Page number to retrieve",
            "schema": {
              "maximum": 2147483647,
              "minimum": 1,
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "PageSize",
            "in": "query",
            "description": "Number of notifications per page",
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          },
          {
            "name": "OrderBy",
            "in": "query",
            "description": "Sorting option.\r\nUsage (no square brackets !) : `orderBy=[property] [asc,desc],[property] [asc,desc],...`",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Pagination-Total-Count": {
                "description": "Total number of elements",
                "schema": {
                  "type": "integer",
                  "description": "Total number of elements",
                  "format": ""
                }
              },
              "X-Pagination-Page-Size": {
                "description": "Size of a page of element",
                "schema": {
                  "type": "integer",
                  "description": "Size of a page of element",
                  "format": ""
                }
              },
              "X-Pagination-Current-Page": {
                "description": "Index of the current page",
                "schema": {
                  "type": "integer",
                  "description": "Index of the current page",
                  "format": ""
                }
              },
              "X-Pagination-Total-Pages": {
                "description": "Total number of pages",
                "schema": {
                  "type": "integer",
                  "description": "Total number of pages",
                  "format": ""
                }
              },
              "X-Pagination-Next-Page-Link": {
                "description": "Link to the next page",
                "schema": {
                  "type": "string",
                  "description": "Link to the next page",
                  "format": ""
                }
              },
              "X-Pagination-Previous-Page-Link": {
                "description": "Link to the previous page",
                "schema": {
                  "type": "string",
                  "description": "Link to the previous page",
                  "format": ""
                }
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/TemplateDto"
                  }
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Templates"
        ],
        "summary": "Create a new e-mail template",
        "description": "Allows to create a new e-mail template.",
        "requestBody": {
          "description": "Template to create",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TemplateForCreationDto"
                  }
                ],
                "description": "E-mail template for creation Data Transfer Object\r\n\r\nThis object represents a e-mail template to be stored in DB"
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/email-templates/{templateId}/restore-previous": {
      "patch": {
        "tags": [
          "Templates"
        ],
        "summary": "Restore the previous version of a specific template",
        "description": "Allows restore previous version of an existing the template.",
        "parameters": [
          {
            "name": "templateId",
            "in": "path",
            "description": "",
            "required": true,
            "schema": {
              "type": "integer",
              "format": "int32"
            }
          }
        ],
        "requestBody": {
          "description": "",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TemplateForRestorePreviousVersionDto"
                  }
                ],
                "description": "E-mail template for restore previous version Data Transfer Object\r\n\r\nThis object contains the author of the restoration (property `UpdateBy`) of the previous e-mail template"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Not Found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    },
    "/templated-emails": {
      "post": {
        "tags": [
          "Templates"
        ],
        "summary": "Create (rendering) a new e-mail content",
        "description": "Allows to create/render a new e-mail template.",
        "requestBody": {
          "description": "Template data for rendering",
          "content": {
            "application/json": {
              "schema": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/TemplateForRenderingDto"
                  }
                ],
                "description": "This object is used to transmit data to generate an e-mail from templates"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TemplateRenderedDto"
                }
              }
            }
          },
          "400": {
            "description": "Bad Request",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          },
          "422": {
            "description": "Unprocessable Content",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationProblemDetails"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "BusinessCaseData": {
        "type": "object",
        "properties": {
          "status": {
            "type": "string",
            "description": "The status of the business case",
            "nullable": true
          },
          "statusDisplayName": {
            "type": "string",
            "description": "The display name of the status of the business case",
            "nullable": true
          },
          "processingTimeInHours": {
            "type": "integer",
            "description": "The processing time (in hours) of the business case",
            "format": "int32",
            "nullable": true
          },
          "lastUpdateStamp": {
            "type": "string",
            "description": "Stamp of the last update of the business case",
            "format": "date-time",
            "nullable": true
          },
          "actionUrl": {
            "type": "string",
            "description": "The URL that leads to the action",
            "nullable": true
          },
          "actionMessage": {
            "type": "string",
            "description": "The message describing the action",
            "nullable": true
          },
          "actionButtonText": {
            "type": "string",
            "description": "The text of the button that leads to the action",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Object containing data of the business case related to the e-mail"
      },
      "ChannelByProfileDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ChannelDto"
          },
          {
            "type": "object",
            "properties": {
              "profileChannel": {
                "allOf": [
                  {
                    "$ref": "#/components/schemas/ProfileChannelDto"
                  }
                ],
                "description": "Relation giving access to the channel within the profile"
              }
            },
            "additionalProperties": false
          }
        ],
        "description": "Global channgel Data Transfert Object\r\n\r\nThis object represents a global channel stored in DB"
      },
      "ChannelDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Identifier of the channel",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Unique name of the channel"
          },
          "description": {
            "type": "string",
            "description": "Short description of the channel"
          },
          "isEnabled": {
            "type": "boolean",
            "description": "Indicates if the channel is available globally"
          },
          "createdBy": {
            "type": "string",
            "description": "Author of the channel"
          },
          "createStamp": {
            "type": "string",
            "description": "Stamp of creation of the channel",
            "format": "date-time"
          },
          "updatedBy": {
            "type": "string",
            "description": "Author of the last update of the channel",
            "nullable": true
          },
          "updateStamp": {
            "type": "string",
            "description": "Stamp of the last update of the channel",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Global channel Data Transfert Object\r\n\r\nThis object represents a global channel stored in DB"
      },
      "ChannelForCreationDto": {
        "required": [
          "createdBy",
          "description",
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Unique name of the channel"
          },
          "description": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string",
            "description": "Short description of the channel"
          },
          "isEnabled": {
            "type": "boolean",
            "description": "Indicates if the channel is available globally",
            "default": true
          },
          "createdBy": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Author of the channel"
          }
        },
        "additionalProperties": false
      },
      "ChannelForUpdateDto": {
        "required": [
          "description",
          "name",
          "updatedBy"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Unique name of the channel"
          },
          "description": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string",
            "description": "Short description of the channel"
          },
          "isEnabled": {
            "type": "boolean",
            "description": "Indicates if the channel is available globally",
            "default": true
          },
          "updatedBy": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Author of the last update of the template"
          }
        },
        "additionalProperties": false,
        "description": "Channel for update Data Transfer Object\r\n\r\nThis object represents a global channel to be updated in DB"
      },
      "DocumentLink": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The document name",
            "nullable": true
          },
          "url": {
            "type": "string",
            "description": "The document access url",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Object containing data of a link to a document"
      },
      "Gender": {
        "enum": [
          "Unknown",
          "Male",
          "Female",
          "NotApplicable"
        ],
        "type": "string"
      },
      "HttpValidationProblemDetails": {
        "allOf": [
          {
            "$ref": "#/components/schemas/ProblemDetails"
          },
          {
            "type": "object",
            "properties": {
              "errors": {
                "type": "object",
                "additionalProperties": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            },
            "additionalProperties": { }
          }
        ]
      },
      "MutedServiceDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Identifier of the muted service",
            "format": "int32"
          },
          "profileChannelId": {
            "type": "integer",
            "description": "ProfileChannel identifier. Reference on Notifications.Api.Entities.Models.ProfileChannel table",
            "format": "int32"
          },
          "serviceId": {
            "type": "integer",
            "description": "Service identifier",
            "format": "int32"
          },
          "channelId": {
            "type": "integer",
            "description": "Channel identifier. Reference on Notifications.Api.Entities.Models.Channel table",
            "format": "int32"
          },
          "channelName": {
            "type": "string",
            "description": "Channel name identifier. Reference on Notifications.Api.Entities.Models.Channel table"
          },
          "createdBy": {
            "type": "string",
            "description": "Author of the muted service"
          },
          "createStamp": {
            "type": "string",
            "description": "Stamp of creation of the muted service",
            "format": "date-time"
          },
          "updatedBy": {
            "type": "string",
            "description": "Author of the last update of the muted service",
            "nullable": true
          },
          "updateStamp": {
            "type": "string",
            "description": "Stamp of the last update of the muted service",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Muted service Data Transfert Object\r\n\r\nThis object represents a muted service for a profile's channel stored in DB"
      },
      "MutedServiceForUpsertDto": {
        "required": [
          "createdBy"
        ],
        "type": "object",
        "properties": {
          "createdBy": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Author of the muted service"
          }
        },
        "additionalProperties": false
      },
      "NotificationDto": {
        "type": "object",
        "properties": {
          "notificationId": {
            "type": "integer",
            "description": "Unique ID of the notification",
            "format": "int32"
          },
          "recipientId": {
            "type": "string",
            "description": "ID of the notification recipient"
          },
          "sendEmail": {
            "type": "boolean",
            "description": "Indicates whether the notification is to be sent by e-mail"
          },
          "sendPush": {
            "type": "boolean",
            "description": "Indicates whether the notification is to be sent by Web Push"
          },
          "sendSms": {
            "type": "boolean",
            "description": "Indicates whether the notification is to be sent by SMS"
          },
          "email": {
            "type": "string",
            "description": "Recipient e-mail"
          },
          "phoneNumber": {
            "type": "string",
            "description": "Recipient phone number",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "description": "Notification subject"
          },
          "msgLong": {
            "type": "string",
            "description": "Notification message (long version)",
            "nullable": true
          },
          "msgShort": {
            "type": "string",
            "description": "Notification message (short version)",
            "nullable": true
          },
          "linkToGv": {
            "type": "string",
            "description": "Link to redirect to eGuichet when clicking on the push notification",
            "nullable": true
          },
          "receiptStamp": {
            "type": "string",
            "description": "Date of receipt/creation of the notification",
            "format": "date-time"
          },
          "completionStamp": {
            "type": "string",
            "description": "Date of completion of the sending of the notification on the various channels.",
            "format": "date-time",
            "nullable": true
          },
          "processingStatus": {
            "allOf": [
              {
                "$ref": "#/components/schemas/NotificationProcessingStatus"
              }
            ],
            "description": "Notification processing status (ToProcess, Processing, Processed, ProcessedFallback, Error)"
          },
          "businessCaseId": {
            "type": "string",
            "description": "Business case's GUID identifier",
            "format": "uuid",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Notification Data Transfer Object\r\n\r\nThis object represents a notification stored in the DB"
      },
      "NotificationForCreationDto": {
        "required": [
          "email",
          "isSkippable",
          "recipientId",
          "subject"
        ],
        "type": "object",
        "properties": {
          "recipientId": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "ID of the notification recipient"
          },
          "sendEmail": {
            "type": "boolean",
            "description": "Indicates whether the notification is to be sent by e-mail",
            "nullable": true
          },
          "sendPush": {
            "type": "boolean",
            "description": "Indicates whether the notification is to be sent by Web Push",
            "nullable": true
          },
          "sendSms": {
            "type": "boolean",
            "description": "Indicates whether the notification is to be sent by SMS",
            "nullable": true
          },
          "email": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string",
            "description": "Recipient e-mail",
            "format": "email"
          },
          "phoneNumber": {
            "maxLength": 50,
            "type": "string",
            "description": "Recipient phone number",
            "nullable": true
          },
          "subject": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string",
            "description": "Notification subject"
          },
          "msgLong": {
            "type": "string",
            "description": "Notification message (long version)",
            "nullable": true
          },
          "msgShort": {
            "maxLength": 255,
            "type": "string",
            "description": "Notification message (short version)",
            "nullable": true
          },
          "linkToGv": {
            "type": "string",
            "description": "Link to redirect to eGuichet when clicking on the push notification",
            "format": "uri",
            "nullable": true
          },
          "businessCaseId": {
            "type": "string",
            "description": "Business case's GUID identifier",
            "format": "uuid",
            "nullable": true
          },
          "isSkippable": {
            "type": "boolean",
            "description": "Flag indicating if the notification has to be sent"
          },
          "serviceId": {
            "type": "integer",
            "description": "Service Id",
            "format": "int32",
            "nullable": true
          },
          "devices": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/PushForCreationDto"
            },
            "description": "List of devices that will receive the notification",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Notification for creation Data Transfer Object\r\n\r\nThis object represents a notification to be stored in DB"
      },
      "NotificationProcessingStatus": {
        "enum": [
          "Error",
          "ToProcess",
          "Processing",
          "Processed",
          "ProcessedFallback"
        ],
        "type": "string",
        "description": "List of available processing statuses"
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "description": "URI that identifies the problem detail type",
            "nullable": true
          },
          "title": {
            "type": "string",
            "description": "A short human-readable summary about the problem",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "description": "HTTP Status Code",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "description": "A human-readable explanation about the problem",
            "nullable": true
          },
          "traceId": {
            "type": "string",
            "description": "Guid to trace the error in the log files",
            "format": "uuid"
          }
        },
        "additionalProperties": { }
      },
      "ProfileChannelDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Identifier of the profile channel",
            "format": "int32"
          },
          "profileId": {
            "type": "integer",
            "description": "Profile identifier",
            "format": "int32"
          },
          "channelId": {
            "type": "integer",
            "description": "Channel identifier. Reference on Notifications.Api.Entities.Models.Channel table",
            "format": "int32"
          },
          "isEnabled": {
            "type": "boolean",
            "description": "Indicates if the channel is available globally"
          },
          "createdBy": {
            "type": "string",
            "description": "Author of the profile channel"
          },
          "createStamp": {
            "type": "string",
            "description": "Stamp of creation of the profile channel",
            "format": "date-time"
          },
          "updatedBy": {
            "type": "string",
            "description": "Author of the last update of the profile channel",
            "nullable": true
          },
          "updateStamp": {
            "type": "string",
            "description": "Stamp of the last update of the profile channel",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Profile channel Data Transfert Object\r\n\r\nThis object represents a profile's channel stored in DB"
      },
      "ProfileChannelForUpsertDto": {
        "required": [
          "createdBy"
        ],
        "type": "object",
        "properties": {
          "isEnabled": {
            "type": "boolean",
            "description": "Indicates if the channel is available globally",
            "default": true
          },
          "createdBy": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Author of the channel"
          }
        },
        "additionalProperties": false
      },
      "PushForCreationDto": {
        "type": "object",
        "properties": {
          "endpoint": {
            "type": "string",
            "description": "Endpoint associated with the push subscription",
            "nullable": true
          },
          "keyP256dh": {
            "type": "string",
            "description": "An Elliptic curve Diffie–Hellman public key on the P-256 curve associated with the push subscription",
            "nullable": true
          },
          "keyAuth": {
            "type": "string",
            "description": "An authentication secret associated with the push subscription",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Push for creation Data Transfer Object\r\n\r\nThis object represents a push subscription to be stored in DB"
      },
      "PushSubscriptionDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Identifier of the push subscription",
            "format": "int32"
          },
          "profileId": {
            "type": "integer",
            "description": "Profile identifier",
            "format": "int32"
          },
          "description": {
            "type": "string",
            "description": "Short description of the push subscription"
          },
          "endpoint": {
            "type": "string",
            "description": "Endpoint associated with the push subscription",
            "nullable": true
          },
          "keyP256dh": {
            "type": "string",
            "description": "An Elliptic curve Diffie–Hellman public key on the P-256 curve associated with the push subscription",
            "nullable": true
          },
          "keyAuth": {
            "type": "string",
            "description": "An authentication secret associated with the push subscription",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "description": "Author of the push subscription"
          },
          "createStamp": {
            "type": "string",
            "description": "Stamp of creation of the push subscription",
            "format": "date-time"
          },
          "updatedBy": {
            "type": "string",
            "description": "Author of the last update of the push subscription",
            "nullable": true
          },
          "updateStamp": {
            "type": "string",
            "description": "Stamp of the last update of the push subscription",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "PushSubscriptionForCreationDto": {
        "required": [
          "createdBy",
          "description"
        ],
        "type": "object",
        "properties": {
          "description": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Short description of the push subscription"
          },
          "endpoint": {
            "maxLength": 1800,
            "type": "string",
            "description": "Endpoint associated with the push subscription",
            "nullable": true
          },
          "keyP256dh": {
            "maxLength": 200,
            "type": "string",
            "description": "An Elliptic curve Diffie–Hellman public key on the P-256 curve associated with the push subscription",
            "nullable": true
          },
          "keyAuth": {
            "maxLength": 50,
            "type": "string",
            "description": "An authentication secret associated with the push subscription",
            "nullable": true
          },
          "createdBy": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Author of the push subscription"
          }
        },
        "additionalProperties": false
      },
      "PushSubscriptionForUpdateDto": {
        "required": [
          "updatedBy"
        ],
        "type": "object",
        "properties": {
          "description": {
            "maxLength": 100,
            "type": "string",
            "description": "Short description of the push subscription",
            "nullable": true
          },
          "endpoint": {
            "maxLength": 1800,
            "type": "string",
            "description": "Endpoint associated with the push subscription",
            "nullable": true
          },
          "keyP256dh": {
            "maxLength": 200,
            "type": "string",
            "description": "An Elliptic curve Diffie–Hellman public key on the P-256 curve associated with the push subscription",
            "nullable": true
          },
          "keyAuth": {
            "maxLength": 50,
            "type": "string",
            "description": "An authentication secret associated with the push subscription",
            "nullable": true
          },
          "updatedBy": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Author of the last update of the push subscription"
          }
        },
        "additionalProperties": false,
        "description": "Push for update Data Transfer Object\r\n\r\nThis object represents a push subscription to be stored in DB"
      },
      "Recipient": {
        "type": "object",
        "properties": {
          "gender": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Gender"
              }
            ],
            "description": "The gender of the recipient",
            "nullable": true
          },
          "firstname": {
            "type": "string",
            "description": "The firstname of the recipient",
            "nullable": true
          },
          "lastname": {
            "type": "string",
            "description": "The lastname of the recipient",
            "nullable": true
          },
          "organizationName": {
            "type": "string",
            "description": "The name of the organization",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Object containing data of the e-mail recipient"
      },
      "ServiceLink": {
        "type": "object",
        "properties": {
          "linkUrl": {
            "type": "string",
            "description": "The url of the link",
            "nullable": true
          },
          "iconUrl": {
            "type": "string",
            "description": "The url of the icon of the link",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Object containing data to generate a link to a service"
      },
      "ServiceStep": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the step",
            "nullable": true
          },
          "description": {
            "type": "string",
            "description": "The description of the step",
            "nullable": true
          },
          "processingTimeInHours": {
            "type": "integer",
            "description": "The processing time (in hours) of the step",
            "format": "int32",
            "nullable": true
          },
          "iconUrl": {
            "type": "string",
            "description": "The url of the icon of the step",
            "nullable": true
          },
          "actionUrl": {
            "type": "string",
            "description": "The URL that leads to the action",
            "nullable": true
          },
          "createStamp": {
            "type": "string",
            "description": "The create stamp of the step",
            "format": "date-time",
            "nullable": true
          },
          "updateStamp": {
            "type": "string",
            "description": "The update stamp of the step",
            "format": "date-time",
            "nullable": true
          },
          "sortOrder": {
            "type": "integer",
            "description": "The sort order of the step",
            "format": "int32",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Object containing data of a service step"
      },
      "ServiceSteps": {
        "type": "object",
        "properties": {
          "previousSteps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceStep"
            },
            "description": "The list of ordered previous service steps",
            "nullable": true
          },
          "currentSteps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceStep"
            },
            "description": "The list of current service steps",
            "nullable": true
          },
          "nextSteps": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ServiceStep"
            },
            "description": "The list of ordered next service steps",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Object containing service steps (previous, current, next)"
      },
      "ShoppingCart": {
        "type": "object",
        "properties": {
          "totalPrice": {
            "type": "number",
            "description": "The total price of the shopping cart",
            "format": "double",
            "nullable": true
          },
          "items": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ShoppingItems"
            },
            "description": "The ordered list of items of the shopping cart",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Object containing data of a shopping cart"
      },
      "ShoppingItems": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the item",
            "nullable": true
          },
          "quantity": {
            "type": "integer",
            "description": "The quantity of items",
            "format": "int32",
            "nullable": true
          },
          "price": {
            "type": "number",
            "description": "The unit price of the item",
            "format": "double",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Object containing data of an item of an shopping cart"
      },
      "SmsForCreationDto": {
        "required": [
          "email",
          "message",
          "notificationID",
          "phoneNumber",
          "recipientID",
          "subject"
        ],
        "type": "object",
        "properties": {
          "recipientID": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "ID of the notification recipient"
          },
          "notificationID": {
            "type": "integer",
            "description": "ID of the notification",
            "format": "int32"
          },
          "email": {
            "minLength": 1,
            "type": "string",
            "description": "Recipient e-mail",
            "format": "email"
          },
          "phoneNumber": {
            "maxLength": 50,
            "minLength": 1,
            "type": "string",
            "description": "Recipient phone number"
          },
          "subject": {
            "maxLength": 255,
            "minLength": 1,
            "type": "string",
            "description": "Notification subject"
          },
          "message": {
            "minLength": 1,
            "type": "string",
            "description": "Notification message"
          }
        },
        "additionalProperties": false,
        "description": "SMS for creation Data Transfer Object\r\n\r\nThis object represents a SMS to be stored in DB"
      },
      "TemplateData": {
        "type": "object",
        "properties": {
          "serviceName": {
            "type": "string",
            "description": "The name of the service related to the e-mail",
            "nullable": true
          },
          "serviceLink": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ServiceLink"
              }
            ],
            "description": "The link to the service related to the e-mail",
            "nullable": true
          },
          "recipient": {
            "allOf": [
              {
                "$ref": "#/components/schemas/Recipient"
              }
            ],
            "description": "The Data of the recipient of the e-mail",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "description": "The e-mail subject",
            "nullable": true
          },
          "body": {
            "type": "string",
            "description": "The e-mail main content (body)",
            "nullable": true
          },
          "uiPortalTemplateName": {
            "type": "string",
            "description": "Name of the UI template in ePortal related to this e-mail",
            "nullable": true
          },
          "businessCase": {
            "allOf": [
              {
                "$ref": "#/components/schemas/BusinessCaseData"
              }
            ],
            "description": "The data of business case related to the e-mail",
            "nullable": true
          },
          "shoppingCart": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ShoppingCart"
              }
            ],
            "description": "The data of the shopping cart (ordered list of items and total price)",
            "nullable": true
          },
          "serviceSteps": {
            "allOf": [
              {
                "$ref": "#/components/schemas/ServiceSteps"
              }
            ],
            "description": "Service steps (previous, current, next)",
            "nullable": true
          },
          "documentLinks": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DocumentLink"
            },
            "description": "The list of document links",
            "nullable": true
          },
          "messageLink": {
            "type": "string",
            "description": "The link to the message",
            "nullable": true
          },
          "metaData": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "The dictionary containing additional data in the form of key-value pairs",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Object containing data that can be injected into e-mail templates\r\n\r\nAll transmitted texts (strings) must be translated"
      },
      "TemplateDto": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "description": "Unique ID of the template",
            "format": "int32"
          },
          "name": {
            "type": "string",
            "description": "Name of template"
          },
          "description": {
            "type": "string",
            "description": "Description of template to indicates the purpose of the template",
            "nullable": true
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TemplateType"
              }
            ],
            "description": "Type of the template"
          },
          "subject": {
            "type": "string",
            "description": "The template subject (e-mail/notification subject)",
            "nullable": true
          },
          "value": {
            "type": "string",
            "description": "The template itself (e-mail body) in HTML"
          },
          "language": {
            "type": "string",
            "description": "2 letters ISO 639-1 language of the template",
            "nullable": true
          },
          "serviceId": {
            "type": "integer",
            "description": "The identifier of the iGovPortal service to which the template is associated",
            "format": "int32",
            "nullable": true
          },
          "senderId": {
            "type": "string",
            "description": "The identifier of the sender (canton, town, ...) to wich the template is associated",
            "nullable": true
          },
          "isEnabled": {
            "type": "boolean",
            "description": "Indicates if the template can be used (active)"
          },
          "score": {
            "type": "integer",
            "description": "Score of the template",
            "format": "int32",
            "nullable": true
          },
          "createdBy": {
            "type": "string",
            "description": "Author of the template"
          },
          "createStamp": {
            "type": "string",
            "description": "Stamp of creation of the template",
            "format": "date-time"
          },
          "updatedBy": {
            "type": "string",
            "description": "Author of the last update of the template",
            "nullable": true
          },
          "updateStamp": {
            "type": "string",
            "description": "Stamp of the last update of the template",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "E-mail template Data Transfert Object\r\n\r\nThis object represents a e-mail template stored in DB"
      },
      "TemplateForCreationDto": {
        "required": [
          "createdBy",
          "name",
          "type",
          "value"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Name of template"
          },
          "description": {
            "maxLength": 255,
            "type": "string",
            "description": "Description of template to indicates the purpose of the template",
            "nullable": true
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TemplateType"
              }
            ],
            "description": "Type of the template"
          },
          "subject": {
            "type": "string",
            "description": "The tempalte subject (e-mail/notification subject)",
            "nullable": true
          },
          "value": {
            "minLength": 1,
            "type": "string",
            "description": "The template itself (e-mail body) in HTML"
          },
          "language": {
            "maxLength": 2,
            "type": "string",
            "description": "2 letters ISO 639-1 language of the template",
            "nullable": true
          },
          "serviceId": {
            "type": "integer",
            "description": "The identifier of the iGovPortal service to which the template is associated",
            "format": "int32",
            "nullable": true
          },
          "senderId": {
            "maxLength": 50,
            "type": "string",
            "description": "The identifier of the sender (canton, town, ...) to wich the template is associated",
            "nullable": true
          },
          "isEnabled": {
            "type": "boolean",
            "description": "Indicates if the template can be used (active)",
            "default": true
          },
          "createdBy": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Author of the template"
          }
        },
        "additionalProperties": false,
        "description": "E-mail template for creation Data Transfer Object\r\n\r\nThis object represents a e-mail template to be stored in DB"
      },
      "TemplateForRenderingDto": {
        "type": "object",
        "properties": {
          "language": {
            "type": "string",
            "description": "E-mail language"
          },
          "serviceId": {
            "type": "integer",
            "description": "Service identifier to which the e-mail is attached",
            "format": "int32",
            "nullable": true
          },
          "senderId": {
            "type": "string",
            "description": "Sender (town, departement, ...) identifier to which the e-mail is attached",
            "nullable": true
          },
          "templateData": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TemplateData"
              }
            ],
            "description": "Data that can be injected into e-mail templates",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "This object is used to transmit data to generate an e-mail from templates"
      },
      "TemplateForRestorePreviousVersionDto": {
        "required": [
          "updatedBy"
        ],
        "type": "object",
        "properties": {
          "updatedBy": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Author of the restoration"
          }
        },
        "additionalProperties": false,
        "description": "E-mail template for restore previous version Data Transfer Object\r\n\r\nThis object contains the author of the restoration (property `UpdateBy`) of the previous e-mail template"
      },
      "TemplateForUpdateDto": {
        "required": [
          "isEnabled",
          "name",
          "type",
          "updatedBy",
          "value"
        ],
        "type": "object",
        "properties": {
          "name": {
            "minLength": 1,
            "type": "string",
            "description": "Name of template"
          },
          "description": {
            "maxLength": 255,
            "type": "string",
            "description": "Description of template to indicates the purpose of the template",
            "nullable": true
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TemplateType"
              }
            ],
            "description": "Type of the template. The type can be MASTER or COMPONENT"
          },
          "subject": {
            "type": "string",
            "description": "The tempalte subject (e-mail/notification subject)",
            "nullable": true
          },
          "value": {
            "minLength": 1,
            "type": "string",
            "description": "The template itself (e-mail body) in HTML"
          },
          "language": {
            "maxLength": 2,
            "type": "string",
            "description": "2 letters ISO 639-1 language of the template",
            "nullable": true
          },
          "serviceId": {
            "type": "integer",
            "description": "The identifier of the iGovPortal service to which the template is associated",
            "format": "int32",
            "nullable": true
          },
          "senderId": {
            "maxLength": 50,
            "type": "string",
            "description": "The identifier of the sender (canton, town, ...) to wich the template is associated",
            "nullable": true
          },
          "isEnabled": {
            "type": "boolean",
            "description": "Indicates if the template can be used (active)"
          },
          "updatedBy": {
            "maxLength": 100,
            "minLength": 1,
            "type": "string",
            "description": "Author of the last update of the template"
          }
        },
        "additionalProperties": false,
        "description": "E-mail template for update Data Transfer Object\r\n\r\nThis object represents a e-mail template to be updated in DB"
      },
      "TemplateRenderedDto": {
        "type": "object",
        "properties": {
          "language": {
            "type": "string",
            "description": "E-mail language"
          },
          "serviceId": {
            "type": "integer",
            "description": "Service identifier to which the e-mail is attached",
            "format": "int32",
            "nullable": true
          },
          "senderId": {
            "type": "string",
            "description": "Sender (town, departement, ...) identifier to which the e-mail is attached",
            "nullable": true
          },
          "subject": {
            "type": "string",
            "description": "Rendered e-mail/notification subject",
            "nullable": true
          },
          "renderedEmail": {
            "type": "string",
            "description": "Rendered e-mail"
          }
        },
        "additionalProperties": false,
        "description": "Objet to retrive render e-mail from templates"
      },
      "TemplateType": {
        "enum": [
          "MASTER",
          "COMPONENT"
        ],
        "type": "string"
      },
      "ValidationProblemDetails": {
        "type": "object",
        "properties": {
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": { }
      }
    }
  },
  "tags": [
    {
      "name": "Channels",
      "description": "Channel controller"
    },
    {
      "name": "Notifications",
      "description": "Notifications controller"
    },
    {
      "name": "Profiles",
      "description": "Profiles controller"
    },
    {
      "name": "Templates",
      "description": "E-mail template controller"
    },
    {
      "name": "notification_model",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/NotificationDto\" />",
      "x-displayName": "Notification Model"
    },
    {
      "name": "notification_model_for_creation",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/NotificationForCreationDto\" />",
      "x-displayName": "Notification Creation Model"
    },
    {
      "name": "push_model_for_creation",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/PushForCreationDto\" />",
      "x-displayName": "Push Creation Model"
    },
    {
      "name": "sms_model_for_creation",
      "description": "<SchemaDefinition schemaRef =\"#/components/schemas/SmsForCreationDto\" />",
      "x-displayName": "Sms Creation Model"
    },
    {
      "name": "template_model",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/TemplateDto\" />",
      "x-displayName": "Template Model"
    },
    {
      "name": "template_model_for_creation",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/TemplateForCreationDto\" />",
      "x-displayName": "Template Creation Model"
    },
    {
      "name": "template_model_for_restore_previous_version",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/TemplateForRestorePreviousVersionDto\" />",
      "x-displayName": "Template Restore Previous Version Model"
    },
    {
      "name": "template_model_for_update",
      "description": "<SchemaDefinition schemaRef =\"#/components/schemas/TemplateForUpdateDto\" />",
      "x-displayName": "Template Update Model"
    },
    {
      "name": "template_model_for_rendering",
      "description": "<SchemaDefinition schemaRef =\"#/components/schemas/TemplateForRenderingDto\" />",
      "x-displayName": "Template Rendering Model"
    },
    {
      "name": "template_rendered_model",
      "description": "<SchemaDefinition schemaRef =\"#/components/schemas/TemplateRenderedDto\" />",
      "x-displayName": "Template Rendered Model"
    },
    {
      "name": "channel_model",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/ChannelDto\" />",
      "x-displayName": "Channel Model"
    },
    {
      "name": "channel_model_for_creation",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/ChannelForCreationDto\" />",
      "x-displayName": "Channel Creation Model"
    },
    {
      "name": "channel_model_for_update",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/ChannelForUpdateDto\" />",
      "x-displayName": "Channel Update Model"
    },
    {
      "name": "channel_by_profile_model",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/ChannelByProfileDto\" />",
      "x-displayName": "Channel by profile Model"
    },
    {
      "name": "profile_channel_model",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/ProfileChannelDto\" />",
      "x-displayName": "Profile Channel Model"
    },
    {
      "name": "profile_channel_for_upsert",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/ProfileChannelForUpsertDto\" />",
      "x-displayName": "Profile Channel Upsert Model"
    },
    {
      "name": "muted_service_model",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/MutedServiceDto\" />",
      "x-displayName": "Muted Service Model"
    },
    {
      "name": "muted_service_for_upsert",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/MutedServiceForUpsertDto\" />",
      "x-displayName": "Muted Service Upsert Model"
    },
    {
      "name": "push_subscription_model",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/PushSubscriptionDto\" />",
      "x-displayName": "Push Subscription Model"
    },
    {
      "name": "push_subscription_model_for_creation",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/PushSubscriptionForCreationDto\" />",
      "x-displayName": "Push Subscription Creation Model"
    },
    {
      "name": "push_subscription_model_for_update",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/PushSubscriptionForUpdateDto\" />",
      "x-displayName": "Push Subscription Update Model"
    },
    {
      "name": "problem_details_model",
      "description": "<SchemaDefinition schemaRef=\"#/components/schemas/ProblemDetails\" />",
      "x-displayName": "Error Model"
    }
  ],
  "x-tagGroups": [
    {
      "name": "General",
      "tags": [
        "Notifications",
        "Templates",
        "Channels",
        "Profiles"
      ]
    },
    {
      "name": "Models",
      "tags": [
        "notification_model",
        "notification_model_for_creation",
        "push_model_for_creation",
        "sms_model_for_creation",
        "template_model",
        "template_model_for_creation",
        "template_model_for_restore_previous_version",
        "template_model_for_update",
        "template_model_for_rendering",
        "template_rendered_model",
        "channel_model",
        "channel_model_for_creation",
        "channel_model_for_update",
        "channel_by_profile_model",
        "profile_channel_model",
        "profile_channel_for_upsert",
        "muted_service_model",
        "muted_service_for_upsert",
        "push_subscription_model",
        "push_subscription_model_for_creation",
        "push_subscription_model_for_update",
        "problem_details_model"
      ]
    }
  ]
}