{
  "swagger": "2.0",
  "info": {
    "version": "v1",
    "title": "Loyalistic API",
    "description": "Loyalistic API is a REST API, enabling access to most of Loyalistic functionality.\n\nPlease note that all operations require authentication.",
    "contact": {
      "name": "Loyalistic",
      "url": "https://help.loyalistic.com/help/using-loyalistic-api"
    }
  },
  "host": "api.loyalistic.com",
  "basePath": "/v1",
  "schemes": [
    "https"
  ],
  "paths": {
    "/blogs": {
      "get": {
        "tags": [
          "Blogs"
        ],
        "summary": "Gets all blogs.",
        "operationId": "Blogs_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = Name.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Blog"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Blogs"
        ],
        "summary": "Creates a blog.",
        "operationId": "Blogs_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "blog",
            "in": "body",
            "description": "The blog to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Blog"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Blog"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/blogs/{id}": {
      "get": {
        "tags": [
          "Blogs"
        ],
        "summary": "Gets a blog.",
        "operationId": "Blogs_GetBlog",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the blog.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Blog"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Blog not found."
          }
        }
      },
      "put": {
        "tags": [
          "Blogs"
        ],
        "summary": "Updates a blog.",
        "operationId": "Blogs_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the blog.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "blog",
            "in": "body",
            "description": "The blog to be updated.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Blog"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Blog"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Blog not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Blogs"
        ],
        "summary": "Deletes a blog.",
        "operationId": "Blogs_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the blog.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Blog not found."
          }
        }
      }
    },
    "/blogs/{id}/posts": {
      "get": {
        "tags": [
          "Blogs"
        ],
        "summary": "Gets all blog posts.",
        "operationId": "BlogPosts_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the blog.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "status",
            "in": "query",
            "description": "Filter by the status of the blog post.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Draft",
                "Scheduled",
                "Unlisted",
                "Public",
                "Redirected",
                "Superseded",
                "Archived"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "publicationStartDate",
            "in": "query",
            "description": "Filter by the post publication date, beginning at earliest at the defined date.",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "publicationEndDate",
            "in": "query",
            "description": "Filter by the post publication date, ending at latest at the defined date.",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = -PublicationDate,-CreatedDate.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/BlogPost"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Blogs"
        ],
        "summary": "Creates a new blog post.",
        "operationId": "BlogPosts_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the blog.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "post",
            "in": "body",
            "description": "Blog post the be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BlogPost"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/BlogPost"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/blogs/{id}/posts/{postID}": {
      "get": {
        "tags": [
          "Blogs"
        ],
        "summary": "Gets a blog post.",
        "operationId": "BlogPosts_GetPost",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the blog.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "postID",
            "in": "path",
            "description": "ID of the blog post.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/BlogPost"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Blog post not found."
          }
        }
      },
      "put": {
        "tags": [
          "Blogs"
        ],
        "summary": "Updated a blog post.",
        "operationId": "BlogPosts_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the blog.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "postID",
            "in": "path",
            "description": "ID of the blog post.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "post",
            "in": "body",
            "description": "The blog post to be updated.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/BlogPost"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/BlogPost"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Blog post not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Blogs"
        ],
        "summary": "Deletes a blog post.",
        "operationId": "BlogPosts_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the blog.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "postID",
            "in": "path",
            "description": "ID of the blog post.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Blog post not found."
          }
        }
      }
    },
    "/calltoactions": {
      "get": {
        "tags": [
          "Call-to-Actions (CTAs)"
        ],
        "summary": "Gets all Call-to-Actions.",
        "operationId": "CallToActions_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "type",
            "in": "query",
            "description": "Filter by type of the CTA.",
            "required": false,
            "type": "string",
            "enum": [
              "Ebook",
              "FreeForm",
              "YouTubeVideo"
            ]
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = Name.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/CallToAction"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Call-to-Actions (CTAs)"
        ],
        "summary": "Creates a new Call-to-Action.",
        "operationId": "CallToActions_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "cta",
            "in": "body",
            "description": "The CTA to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/CallToAction"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CallToAction"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "CTA not found."
          }
        }
      }
    },
    "/calltoactions/{id}": {
      "get": {
        "tags": [
          "Call-to-Actions (CTAs)"
        ],
        "summary": "Gets a Call-to-Action.",
        "operationId": "CallToActions_GetCallToAction",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the CTA.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CallToAction"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "CTA not found."
          }
        }
      },
      "put": {
        "tags": [
          "Call-to-Actions (CTAs)"
        ],
        "summary": "Updates a Call-to-Action.",
        "operationId": "CallToActions_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the CTA.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "cta",
            "in": "body",
            "description": "The CTA to be updated. Omit all the fields you do not wish to update.",
            "required": true,
            "schema": {
              "title": "JObject",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/CallToAction"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "CTA not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Call-to-Actions (CTAs)"
        ],
        "summary": "Deletes a Call-to-Action.",
        "operationId": "CallToActions_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the CTA.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation successful."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "CTA not found."
          }
        }
      }
    },
    "/consentrequests": {
      "get": {
        "tags": [
          "Consent Requests"
        ],
        "summary": "Gets Consent Requests.",
        "operationId": "ConsentRequests_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "includeArchived",
            "in": "query",
            "description": "Include archived Consent Requests. Default = false.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = Name.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ConsentRequest"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Consent Requests"
        ],
        "summary": "Creates a consent request.",
        "operationId": "ConsentRequests_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "consent",
            "in": "body",
            "description": "The consent request to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConsentRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ConsentRequest"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/consentrequests/{id}": {
      "get": {
        "tags": [
          "Consent Requests"
        ],
        "summary": "Gets a consent request.",
        "operationId": "ConsentRequests_GetConsent",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the consent request.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ConsentRequest"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Consent request not found."
          }
        }
      },
      "put": {
        "tags": [
          "Consent Requests"
        ],
        "summary": "Updates a consent request.",
        "operationId": "ConsentRequests_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the consent request.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "consent",
            "in": "body",
            "description": "The consent request to be updated.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ConsentRequest"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ConsentRequest"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Consent request not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Consent Requests"
        ],
        "summary": "Deletes a consent request.",
        "operationId": "ConsentRequests_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the consent request.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Consent request not found."
          }
        }
      }
    },
    "/contacts": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Gets all contacts.",
        "operationId": "Contacts_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "clientContactID",
            "in": "query",
            "description": "Filter by your own ID for the contact.",
            "required": false,
            "type": "string"
          },
          {
            "name": "contactStatus",
            "in": "query",
            "description": "Filter by contact statuses.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "MarketingLead",
                "QualifiedLead",
                "NewCustomer",
                "RepeatCustomer",
                "LoyalCustomer"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "contactType",
            "in": "query",
            "description": "Filter by contact types.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "Unknown",
                "Customer",
                "Employee",
                "Noncustomer"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "createdStartDate",
            "in": "query",
            "description": "Filter by contact creation date, beginning at earliest at the defined date.",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "createdEndDate",
            "in": "query",
            "description": "Filter by contact creation date, ending at latest at the defined date.",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "customer",
            "in": "query",
            "description": "Filter by whether the contact is a customer or not.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "emailDomain",
            "in": "query",
            "description": "Filter by email domain (e.g. \"example.org\").",
            "required": false,
            "type": "string"
          },
          {
            "name": "emailSendingBlocked",
            "in": "query",
            "description": "Filter by whether email sending is blocked.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "emailSendingBlockedStartDate",
            "in": "query",
            "description": "Filter by email sending block date, beginning at earliest at the defined date.",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "emailSendingBlockedEndDate",
            "in": "query",
            "description": "Filter by email sending block date, ending at latest at the defined date.",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "filterID",
            "in": "query",
            "description": "ID of a filter to be used when filtering the results.",
            "required": false,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "influencer",
            "in": "query",
            "description": "Filter by whether the contact is an influencer or not.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "language",
            "in": "query",
            "description": "Filter by the language code (e.g. \"en\").",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "listIDs",
            "in": "query",
            "description": "Only show contacts belonging to the defined lists. Max. 100 IDs allowed.",
            "required": false,
            "type": "array",
            "items": {
              "type": "integer",
              "format": "int32"
            },
            "collectionFormat": "multi"
          },
          {
            "name": "marketingBan",
            "in": "query",
            "description": "Filter by whether the contact has a marketing ban.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "muted",
            "in": "query",
            "description": "Filter by whether the contact is muted.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "organizationID",
            "in": "query",
            "description": "Filter by organization ID.",
            "required": false,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "processingBasis",
            "in": "query",
            "description": "Filter by the basis of processing.",
            "required": false,
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "None",
                "Consent",
                "Contract",
                "LegalObligation",
                "VitalInterest",
                "PublicInterest",
                "LegitimateInterest"
              ]
            },
            "collectionFormat": "multi"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = LastName,FirstName,Email.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Contact"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Contacts"
        ],
        "summary": "Creates a new contact.",
        "operationId": "Contacts_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "contact",
            "in": "body",
            "description": "Contact be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Contact"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Contact"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/contacts/{id}": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Gets a contact by ID.",
        "operationId": "Contacts_GetContact",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID or the email address of the contact.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Contact"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Contact not found."
          }
        }
      },
      "put": {
        "tags": [
          "Contacts"
        ],
        "summary": "Updates a contact.",
        "operationId": "Contacts_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the contact.",
            "required": true,
            "type": "string"
          },
          {
            "name": "contact",
            "in": "body",
            "description": "Contact to be updated. Omit all the fields you do not wish to update.",
            "required": true,
            "schema": {
              "title": "JObject",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Contact"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Contact not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Contacts"
        ],
        "summary": "Deletes a contact.",
        "operationId": "Contacts_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the contact to be deleted.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Contact not found."
          }
        }
      }
    },
    "/contacts/{id}/consents": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Gets a contact's consents.",
        "operationId": "ContactsConsents_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the contact.",
            "required": true,
            "type": "string"
          },
          {
            "name": "includeWithdrawn",
            "in": "query",
            "description": "Include withdrawn consents. Default = false.",
            "required": false,
            "type": "boolean"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters, e.g. \"-ConsentGivenDate\" sorts by ConsentGivenDate in descending order. Default = -ConsentGivenDate.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ContactConsent"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Contacts"
        ],
        "summary": "Creates a new consent for a contact.",
        "operationId": "ContactsConsents_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the contact.",
            "required": true,
            "type": "string"
          },
          {
            "name": "consent",
            "in": "body",
            "description": "Consent to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ContactConsent"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ContactConsent"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Contact not found."
          }
        }
      }
    },
    "/contacts/{id}/consents/{contactConsentID}": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Gets a contact's consent.",
        "operationId": "ContactsConsents_GetConsent",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the contact.",
            "required": true,
            "type": "string"
          },
          {
            "name": "contactConsentID",
            "in": "path",
            "description": "ID of the contact consent.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ContactConsent"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Consent not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Contacts"
        ],
        "summary": "Deletes a contact's consent.",
        "operationId": "ContactsConsents_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the contact.",
            "required": true,
            "type": "string"
          },
          {
            "name": "contactConsentID",
            "in": "path",
            "description": "ID of the contact consent.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Contact not found."
          }
        }
      }
    },
    "/contacts/{id}/lists": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Gets the lists which a contact belongs to.",
        "operationId": "ContactsLists_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "",
            "required": true,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = Name.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ContactList"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Contact not found."
          }
        }
      }
    },
    "/contacts/{id}/notes": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Gets a contact's notes.",
        "operationId": "ContactsNotes_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the contact.",
            "required": true,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = -CreatedDate.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ContactNote"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Contacts"
        ],
        "summary": "Creates a new note for a contact.",
        "operationId": "ContactsNotes_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the contact.",
            "required": true,
            "type": "string"
          },
          {
            "name": "note",
            "in": "body",
            "description": "Note to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ContactNote"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ContactNote"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Contact not found."
          }
        }
      }
    },
    "/contacts/{id}/notes/{noteID}": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Gets a contact's note.",
        "operationId": "ContactsNotes_GetNote",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the contact.",
            "required": true,
            "type": "string"
          },
          {
            "name": "noteID",
            "in": "path",
            "description": "ID of the note.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ContactNote"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Note not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Contacts"
        ],
        "summary": "Deletes a contact's note.",
        "operationId": "ContactsNotes_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the contact.",
            "required": true,
            "type": "string"
          },
          {
            "name": "noteID",
            "in": "path",
            "description": "ID of the note.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Contact not found."
          }
        }
      }
    },
    "/contacts/{id}/properties": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Gets a contact's properties.",
        "operationId": "ContactsProperties_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the contact.",
            "required": true,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = Key.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ContactProperty"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Contacts"
        ],
        "summary": "Creates a new property for a contact.",
        "operationId": "ContactsProperties_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the contact.",
            "required": true,
            "type": "string"
          },
          {
            "name": "property",
            "in": "body",
            "description": "Property to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ContactProperty"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ContactProperty"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Contact not found."
          }
        }
      }
    },
    "/contacts/{id}/properties/{propertyID}": {
      "get": {
        "tags": [
          "Contacts"
        ],
        "summary": "Gets a contact's property.",
        "operationId": "ContactsProperties_GetProperty",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the contact.",
            "required": true,
            "type": "string"
          },
          {
            "name": "propertyID",
            "in": "path",
            "description": "Key of the property.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ContactProperty"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Property not found."
          }
        }
      },
      "put": {
        "tags": [
          "Contacts"
        ],
        "summary": "Updates a contact's property.",
        "operationId": "ContactsProperties_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the contact.",
            "required": true,
            "type": "string"
          },
          {
            "name": "propertyID",
            "in": "path",
            "description": "Key of the property.",
            "required": true,
            "type": "string"
          },
          {
            "name": "property",
            "in": "body",
            "description": "Property to be updated.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ContactProperty"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ContactProperty"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Contact not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Contacts"
        ],
        "summary": "Deletes a contact's property.",
        "operationId": "ContactsProperties_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the contact.",
            "required": true,
            "type": "string"
          },
          {
            "name": "propertyID",
            "in": "path",
            "description": "Key of the property.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Contact not found."
          }
        }
      }
    },
    "/countries": {
      "get": {
        "tags": [
          "Countries"
        ],
        "summary": "Gets all countries supported by the system.",
        "operationId": "Countries_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Country"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/countries/{id}": {
      "get": {
        "tags": [
          "Countries"
        ],
        "summary": "Gets a country by ID.",
        "operationId": "Countries_Getcountry",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Country"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Country not found."
          }
        }
      }
    },
    "/emails": {
      "get": {
        "tags": [
          "Emails"
        ],
        "summary": "Gets all emails.",
        "operationId": "Emails_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "Type of the emails.",
            "required": false,
            "type": "string",
            "enum": [
              "Newsletter",
              "Nurture",
              "Honeypot"
            ]
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = -CreatedDate.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Email"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Emails"
        ],
        "summary": "Creates a new email.",
        "operationId": "Emails_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "email",
            "in": "body",
            "description": "Email to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Email"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Email"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Email not found."
          }
        }
      }
    },
    "/emails/{id}": {
      "get": {
        "tags": [
          "Emails"
        ],
        "summary": "Gets an email.",
        "operationId": "Emails_GetEmail",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the email.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Email"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Email not found."
          }
        }
      },
      "put": {
        "tags": [
          "Emails"
        ],
        "summary": "Updates an email.",
        "operationId": "Emails_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the email.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "email",
            "in": "body",
            "description": "Email to be updated. Omit all the fields you do not wish to update.",
            "required": true,
            "schema": {
              "title": "JObject",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Email"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Email not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Emails"
        ],
        "summary": "Deletes an email.",
        "operationId": "Emails_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the email.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation successful."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Email not found."
          }
        }
      }
    },
    "/emails/{id}/statistics": {
      "get": {
        "tags": [
          "Emails"
        ],
        "summary": "Gets statistics for an email.",
        "operationId": "EmailStatistics_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the email.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/EmailStatistics"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Email not found."
          }
        }
      },
      "put": {
        "tags": [
          "Emails"
        ],
        "summary": "Updates statistics for an email.",
        "operationId": "EmailStatistics_Put",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the email.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/EmailStatistics"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Email not found."
          }
        }
      }
    },
    "/emailsendqueueitems": {
      "get": {
        "tags": [
          "Emails"
        ],
        "summary": "Gets email send queue items.",
        "operationId": "EmailSendQueueItems_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "emailID",
            "in": "query",
            "description": "ID of the email.",
            "required": false,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "contactID",
            "in": "query",
            "description": "ID of the contact.",
            "required": false,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "contactListID",
            "in": "query",
            "description": "ID of the contact list.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "nurtureProgramStepID",
            "in": "query",
            "description": "ID of the nurture program step.",
            "required": false,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = InsertedDate.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/EmailSendQueueItem"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Emails"
        ],
        "summary": "Creates a new email send queue item.",
        "operationId": "EmailSendQueueItems_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "item",
            "in": "body",
            "description": "The emai send queue item to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/EmailSendQueueItem"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/EmailSendQueueItem"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/emailsendqueueitems/{id}": {
      "get": {
        "tags": [
          "Emails"
        ],
        "summary": "Gets an email send queue item.",
        "operationId": "EmailSendQueueItems_GetEmailSendQueueItem",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the email send queue item.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/EmailSendQueueItem"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Item not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Emails"
        ],
        "summary": "Deletes an item from the email send queue.",
        "operationId": "EmailSendQueueItems_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the email send queue item.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Item not found."
          }
        }
      }
    },
    "/fields": {
      "get": {
        "tags": [
          "Fields"
        ],
        "summary": "Gets all fields.",
        "operationId": "Fields_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = FieldName.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Field"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Fields"
        ],
        "summary": "Creates a new field.",
        "operationId": "Fields_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "field",
            "in": "body",
            "description": "Field to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Field"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Field"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/fields/{id}": {
      "get": {
        "tags": [
          "Fields"
        ],
        "summary": "Gets a field by ID.",
        "operationId": "Fields_GetField",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Field"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Field not found."
          }
        }
      },
      "put": {
        "tags": [
          "Fields"
        ],
        "summary": "Updates a field.",
        "operationId": "Fields_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the field to be updated.",
            "required": true,
            "type": "string"
          },
          {
            "name": "field",
            "in": "body",
            "description": "Field object to be updated.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Field"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Field"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Field not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Fields"
        ],
        "summary": "Deletes a field.",
        "operationId": "Fields_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the field to be deleted.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Field not found."
          }
        }
      }
    },
    "/files": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "Gets all files.",
        "operationId": "Files_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "fileTypes",
            "in": "query",
            "description": "A comma-separated list of file types (extensions) to be searched.",
            "required": false,
            "type": "string"
          },
          {
            "name": "search",
            "in": "query",
            "description": "Search term to be used to filter the results.",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = FileName.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ContentFile"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Files"
        ],
        "summary": "Creates a new file.",
        "operationId": "Files_Post",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ContentFile"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/files/{id}": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "Gets a file.",
        "operationId": "Files_GetFile",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the file.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ContentFile"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "File not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Files"
        ],
        "summary": "Delets a file.",
        "operationId": "Files_Delete",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the file.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ContentFile"
              }
            }
          },
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "File not found."
          }
        }
      }
    },
    "/files/{id}/contents": {
      "get": {
        "tags": [
          "Files"
        ],
        "summary": "Gets the contents of a file.",
        "operationId": "FilesContents_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the file.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "File not found."
          }
        }
      }
    },
    "/filters": {
      "get": {
        "tags": [
          "Filters"
        ],
        "summary": "Gets all filters.",
        "operationId": "Filters_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = Name.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Filter"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Filters"
        ],
        "summary": "Creates a new filter.",
        "operationId": "Filters_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "filter",
            "in": "body",
            "description": "Filter to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Filter"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Filter"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/filters/{id}": {
      "get": {
        "tags": [
          "Filters"
        ],
        "summary": "Gets a filter by ID.",
        "operationId": "Filters_GetFilter",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "The ID of the filter.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Filter"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Filter not found."
          }
        }
      },
      "put": {
        "tags": [
          "Filters"
        ],
        "summary": "Updates a filter.",
        "operationId": "Filters_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the filter to be updated.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "filter",
            "in": "body",
            "description": "Filter to be updated.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Filter"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Filter"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Filter not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Filters"
        ],
        "summary": "Deletes a filter.",
        "operationId": "Filters_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the filter to be deleted",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Filter not found."
          }
        }
      }
    },
    "/honeypots": {
      "get": {
        "tags": [
          "Honeypots"
        ],
        "summary": "Gets all Honeypots.",
        "operationId": "Honeypots_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = Name.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Honeypot"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Honeypots"
        ],
        "summary": "Creates a new Honeypot.",
        "operationId": "Honeypots_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "honeypot",
            "in": "body",
            "description": "Honeypot to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Honeypot"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Honeypot"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/honeypots/{id}": {
      "get": {
        "tags": [
          "Honeypots"
        ],
        "summary": "Gets a Honeypot.",
        "operationId": "Honeypots_GetHoneypot",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the Honeypot.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Honeypot"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Honeypot not found."
          }
        }
      },
      "put": {
        "tags": [
          "Honeypots"
        ],
        "summary": "Updates a Honeypot.",
        "operationId": "Honeypots_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the Honeypot.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "honeypot",
            "in": "body",
            "description": "Honeypot to be updated. Omit all the fields you do not wish to update.",
            "required": true,
            "schema": {
              "title": "JObject",
              "type": "object"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Honeypot"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Honeypot not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Honeypots"
        ],
        "summary": "Deletes a Honeypot.",
        "operationId": "Honeypots_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the Honeypot.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Honeypot not found."
          }
        }
      }
    },
    "/honeypots/{id}/contacts": {
      "get": {
        "tags": [
          "Honeypots"
        ],
        "summary": "Gets all contacts for a Honeypot.",
        "operationId": "HoneypotsContacts_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the Honeypot.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = LastName,FirstName,Email.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Contact"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Honeypot not found."
          }
        }
      },
      "post": {
        "tags": [
          "Honeypots"
        ],
        "summary": "Adds a new contact to a Honeypot.",
        "operationId": "HoneypotsContacts_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the Honeypot.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "contact",
            "in": "body",
            "description": "Contact to be added.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Contact"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ContactListContact"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Honeypot not found."
          }
        }
      }
    },
    "/honeypots/{id}/file": {
      "get": {
        "tags": [
          "Honeypots"
        ],
        "summary": "Gets a Honeypot bait file.",
        "operationId": "HoneypotsFile_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the Honeypot.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "File not found."
          }
        }
      },
      "post": {
        "tags": [
          "Honeypots"
        ],
        "summary": "Adds a file to a Honeypot. If a file exists, it is overwritten.",
        "operationId": "HoneypotsFile_Post",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the Honeypot.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Honeypot not found."
          }
        }
      }
    },
    "/honeypots/{id}/statistics": {
      "get": {
        "tags": [
          "Honeypots"
        ],
        "summary": "Gets statistics for a Honeypot.",
        "operationId": "HoneypotsStatistics_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the Honeypot.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Date from which to get the statistics.",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "Date until which to get the statistics.",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "skipDetails",
            "in": "query",
            "description": "Skips all URL and date-related statistics, if true.",
            "required": false,
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/HoneypotStatistics"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/honeypots/{id}/trackings": {
      "get": {
        "tags": [
          "Honeypots"
        ],
        "summary": "Gets Honeypot trackings.",
        "operationId": "HoneypotsTrackings_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the Honeypot.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "contactID",
            "in": "query",
            "description": "ID of the contact.",
            "required": false,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "trackingType",
            "in": "query",
            "description": "Type of the tracking.",
            "required": false,
            "type": "string"
          },
          {
            "name": "sessionID",
            "in": "query",
            "description": "Session ID.",
            "required": false,
            "type": "string"
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Filter by event date, beginning at earliest at the defined date.",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "Filter by event date, ending at latest at the defined date.",
            "required": false,
            "type": "string",
            "format": "date-time"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Honeypot not found."
          }
        }
      },
      "post": {
        "tags": [
          "Honeypots"
        ],
        "summary": "Adds a tracking to a Honeypot.",
        "operationId": "HoneypotsTrackings_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the Honeypot.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "tracking",
            "in": "body",
            "description": "Tracking to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Tracking"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Honeypot not found."
          }
        }
      }
    },
    "/honeypots/{urlAlias}": {
      "get": {
        "tags": [
          "Honeypots"
        ],
        "summary": "Gets a Honeypot by an URL alias.",
        "operationId": "Honeypots_GetHoneypotByUrlAlias",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "urlAlias",
            "in": "path",
            "description": "",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Honeypot"
            }
          },
          "400": {
            "description": "Invalid URL alias."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Honeypot not found."
          }
        }
      }
    },
    "/lists": {
      "get": {
        "tags": [
          "Lists"
        ],
        "summary": "Gets all contact lists.",
        "operationId": "Lists_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = Name.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ContactList"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Lists"
        ],
        "summary": "Creates a new contact list.",
        "operationId": "Lists_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "list",
            "in": "body",
            "description": "List to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ContactList"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ContactList"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/lists/{id}": {
      "get": {
        "tags": [
          "Lists"
        ],
        "summary": "Gets a contact list by ID.",
        "operationId": "Lists_GetByID",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ContactList"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "List not found."
          }
        }
      },
      "put": {
        "tags": [
          "Lists"
        ],
        "summary": "Updates a contact list.",
        "operationId": "Lists_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the list to be updated.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "list",
            "in": "body",
            "description": "List object to be updated.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ContactList"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ContactList"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "List not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Lists"
        ],
        "summary": "Deletes a contact list.",
        "operationId": "Lists_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the list to be deleted",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "List not found."
          }
        }
      }
    },
    "/lists/{id}/contacts": {
      "get": {
        "tags": [
          "Lists"
        ],
        "summary": "Gets all contacts on the list.",
        "operationId": "ListsContacts_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the list.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "filterID",
            "in": "query",
            "description": "ID of a filter to be used when filtering the results.",
            "required": false,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = LastName,FirstName.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Contact"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "put": {
        "tags": [
          "Lists"
        ],
        "summary": "Updates a contact list contact.",
        "operationId": "ListsContacts_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the list.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "clc",
            "in": "body",
            "description": "ContactListContact to be updated.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/ContactListContact"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/ContactListContact"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Lists"
        ],
        "summary": "Adds new contacts to the list. Also creates/updates the contacts as needed.",
        "operationId": "ListsContacts_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the list.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "contacts",
            "in": "body",
            "description": "Array of contacts to be added to the list. Omit all the fields you do not wish to update.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "title": "JObject",
                "type": "object"
              }
            }
          },
          {
            "name": "overwrite",
            "in": "query",
            "description": "Remove all the existing contacts and add the new ones.",
            "required": false,
            "type": "boolean"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ContactListContact"
              }
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "delete": {
        "tags": [
          "Lists"
        ],
        "summary": "Removes contacts from the list.",
        "operationId": "ListsContacts_Delete",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the list.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "contacts",
            "in": "body",
            "description": "Array of IDs for contacts to be removed from the list. The ID should be either a ContactID or an email address.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/lists/{id}/contacts/exclude": {
      "post": {
        "tags": [
          "Lists"
        ],
        "summary": "Removes contacts from a list by other lists.",
        "operationId": "ListsContacts_PostExclude",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the target list.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "contactListIDs",
            "in": "body",
            "description": "IDs of the lists, the contacts of which are to be removed from the target list.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "format": "int32",
                "type": "integer"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ContactListContact"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "List not found."
          }
        }
      }
    },
    "/lists/{id}/contacts/include": {
      "post": {
        "tags": [
          "Lists"
        ],
        "summary": "Adds contacts from other lists to a list.",
        "operationId": "ListsContacts_PostInclude",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the target list.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "contactListIDs",
            "in": "body",
            "description": "IDs of the lists, the contacts of which are to be added to this list.",
            "required": true,
            "schema": {
              "type": "array",
              "items": {
                "format": "int32",
                "type": "integer"
              }
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/ContactListContact"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "List not found."
          }
        }
      }
    },
    "/nurtureprograms": {
      "get": {
        "tags": [
          "Nurture Programs"
        ],
        "summary": "Gets all nurture programs.",
        "operationId": "NurturePrograms_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = Name.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/NurtureProgram"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Nurture Programs"
        ],
        "summary": "Creates a nurture program.",
        "operationId": "NurturePrograms_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "program",
            "in": "body",
            "description": "Nurture program to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/NurtureProgram"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/NurtureProgram"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/nurtureprograms/{id}": {
      "get": {
        "tags": [
          "Nurture Programs"
        ],
        "summary": "Gets a nurture program.",
        "operationId": "NurturePrograms_GetNurtureProgram",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the nurture program.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/NurtureProgram"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Nurture program not found."
          }
        }
      },
      "put": {
        "tags": [
          "Nurture Programs"
        ],
        "summary": "Updates a nurture program.",
        "operationId": "NurturePrograms_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the nurture program.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "program",
            "in": "body",
            "description": "Nurture program to be updated.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/NurtureProgram"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/NurtureProgram"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Nurture program not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Nurture Programs"
        ],
        "summary": "Deletes a nurture program.",
        "operationId": "NurturePrograms_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the nurture program.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Nurture program not found."
          }
        }
      }
    },
    "/nurtureprograms/{id}/contacts": {
      "get": {
        "tags": [
          "Nurture Programs"
        ],
        "summary": "Gets all nurture program contacts.",
        "operationId": "NurtureProgramsContacts_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the nurture program.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = AddedDate.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/NurtureProgramContact"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Nurture program not found."
          }
        }
      },
      "post": {
        "tags": [
          "Nurture Programs"
        ],
        "summary": "Adds a contact to a nurture program.",
        "operationId": "NurtureProgramsContacts_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the nurture program.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "contactID",
            "in": "body",
            "description": "ID of the contact to be added to this program.",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string",
              "example": "00000000-0000-0000-0000-000000000000"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/NurtureProgramContact"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Nurture program not found."
          }
        }
      }
    },
    "/nurtureprograms/{id}/contacts/{contactID}": {
      "get": {
        "tags": [
          "Nurture Programs"
        ],
        "summary": "Gets a nurture program contact.",
        "operationId": "NurtureProgramsContacts_GetNurtureProgramContact",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the nurture program.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "contactID",
            "in": "path",
            "description": "ID of the contact.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/NurtureProgramContact"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Nurture program contact not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Nurture Programs"
        ],
        "summary": "Removes a contact from a nurture program.",
        "operationId": "NurtureProgramsContacts_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the nurture program.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "contactID",
            "in": "path",
            "description": "ID of the contact.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Nurture program contact not found."
          }
        }
      }
    },
    "/nurtureprograms/{id}/steps": {
      "get": {
        "tags": [
          "Nurture Programs"
        ],
        "summary": "Gets nurture program steps.",
        "operationId": "NurtureProgramsSteps_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the nurture program.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/NurtureProgramStep"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Nurture program not found."
          }
        }
      },
      "post": {
        "tags": [
          "Nurture Programs"
        ],
        "summary": "Creates a nurture program step.",
        "operationId": "NurtureProgramsSteps_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the nurture program.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "step",
            "in": "body",
            "description": "",
            "required": true,
            "schema": {
              "$ref": "#/definitions/NurtureProgramStep"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/NurtureProgramStep"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Nurture program step not found."
          }
        }
      }
    },
    "/nurtureprograms/{id}/steps/{stepID}": {
      "get": {
        "tags": [
          "Nurture Programs"
        ],
        "summary": "Gets a nurture program step.",
        "operationId": "NurtureProgramsSteps_GetNurtureProgramStep",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the nurture program.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "stepID",
            "in": "path",
            "description": "ID of the nurture program step.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/NurtureProgramStep"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Nurture program step not found."
          }
        }
      },
      "put": {
        "tags": [
          "Nurture Programs"
        ],
        "summary": "Updates a nurture program step.",
        "operationId": "NurtureProgramsSteps_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the nurture program.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "stepID",
            "in": "path",
            "description": "ID of the nurture program step.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "step",
            "in": "body",
            "description": "",
            "required": true,
            "schema": {
              "$ref": "#/definitions/NurtureProgramStep"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/NurtureProgramStep"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Nurture program step not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Nurture Programs"
        ],
        "summary": "Deletes a nurture program step.",
        "operationId": "NurtureProgramsSteps_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the nurture program.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "stepID",
            "in": "path",
            "description": "ID of the nurture program step.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Nurture program step not found."
          }
        }
      }
    },
    "/organizations": {
      "get": {
        "tags": [
          "Organizations"
        ],
        "summary": "Gets all organizations.",
        "operationId": "Organizations_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "domain",
            "in": "query",
            "description": "Filter by domain.",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters, e.g. \"Name,-Employees\" sorts by Name first, then by Employees in descending order. Default = Name.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Organization"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Organizations"
        ],
        "summary": "Creates a new organization.",
        "operationId": "Organizations_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "organization",
            "in": "body",
            "description": "Organization to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Organization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Organization"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/organizations/{id}": {
      "get": {
        "tags": [
          "Organizations"
        ],
        "summary": "Gets an organization by ID.",
        "operationId": "Organizations_GetOrganization",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Organization"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Organization not found."
          }
        }
      },
      "put": {
        "tags": [
          "Organizations"
        ],
        "summary": "Updates an organization.",
        "operationId": "Organizations_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the organization to be updated.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "organization",
            "in": "body",
            "description": "Organization object to be updated.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Organization"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Organization"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Organization not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Organizations"
        ],
        "summary": "Deletes an organization.",
        "operationId": "Organizations_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the organization to be deleted.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Organization not found."
          }
        }
      }
    },
    "/organizations/{id}/notes": {
      "get": {
        "tags": [
          "Organizations"
        ],
        "summary": "Gets a organization's notes.",
        "operationId": "OrganizationsNotes_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the organization.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = -CreatedDate.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/OrganizationNote"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Organizations"
        ],
        "summary": "Creates a new note for a organization.",
        "operationId": "OrganizationsNotes_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the organization.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "note",
            "in": "body",
            "description": "Note to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/OrganizationNote"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OrganizationNote"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Organization not found."
          }
        }
      }
    },
    "/organizations/{id}/notes/{noteID}": {
      "get": {
        "tags": [
          "Organizations"
        ],
        "summary": "Gets a organization's note.",
        "operationId": "OrganizationsNotes_GetNote",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the organization.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "noteID",
            "in": "path",
            "description": "ID of the note.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/OrganizationNote"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Note not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Organizations"
        ],
        "summary": "Deletes a organization's note.",
        "operationId": "OrganizationsNotes_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the organization.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "noteID",
            "in": "path",
            "description": "ID of the note.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Organization not found."
          }
        }
      }
    },
    "/tags": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Gets all tags.",
        "operationId": "Tags_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "tagTypeID",
            "in": "query",
            "description": "ID of the tag type.",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "objectID",
            "in": "query",
            "description": "ID of the object (e.g. 123).",
            "required": false,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "objectType",
            "in": "query",
            "description": "Type of the object (e.g. \"BlogPost\").",
            "required": false,
            "type": "string"
          },
          {
            "name": "language",
            "in": "query",
            "description": "Language code, e.g. \"en-US\".",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = Value.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Tag"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Tags"
        ],
        "summary": "Creates a tag.",
        "operationId": "Tags_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "tag",
            "in": "body",
            "description": "Tag to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Tag"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Tag"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/tags/{id}": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Gets a tag.",
        "operationId": "Tags_GetTag",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the tag.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Tag"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Tag not found."
          }
        }
      },
      "put": {
        "tags": [
          "Tags"
        ],
        "summary": "Updates a tag.",
        "operationId": "Tags_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the tag.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "tag",
            "in": "body",
            "description": "Tag to be updated.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Tag"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Tag"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Tag not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Tags"
        ],
        "summary": "Deletes a tag.",
        "operationId": "Tags_Delete",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the tag.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Tag"
            }
          },
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Tag not found."
          }
        }
      }
    },
    "/tags/{id}/objects": {
      "get": {
        "tags": [
          "Tags"
        ],
        "summary": "Gets the objects associated with a tag.",
        "operationId": "TagsObjects_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the tag.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = ObjectID.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/TagObject"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Tags"
        ],
        "summary": "Adds a tag to an object.",
        "operationId": "TagsObjects_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the tag.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "tagObject",
            "in": "body",
            "description": "Tag/object association.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TagObject"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/TagObject"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "delete": {
        "tags": [
          "Tags"
        ],
        "summary": "Removes a tag from an object.",
        "operationId": "TagsObjects_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the tag.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "objectID",
            "in": "query",
            "description": "ID of the object.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "objectType",
            "in": "query",
            "description": "Type of the object.",
            "required": true,
            "type": "string"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Tag object not found."
          }
        }
      }
    },
    "/tagtypes": {
      "get": {
        "tags": [
          "Tag Types"
        ],
        "summary": "Gets all tag types.",
        "operationId": "TagTypes_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "description": "Name of the tag type.",
            "required": false,
            "type": "string"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = Name.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/TagType"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Tag Types"
        ],
        "summary": "Creates a new tag type.",
        "operationId": "TagTypes_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "tagType",
            "in": "body",
            "description": "Tag type to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TagType"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/TagType"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/tagtypes/{id}": {
      "get": {
        "tags": [
          "Tag Types"
        ],
        "summary": "Gets a  tag type.",
        "operationId": "TagTypes_GetTagType",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the tag type.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/TagType"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Tag type not found."
          }
        }
      },
      "put": {
        "tags": [
          "Tag Types"
        ],
        "summary": "Updates a tag type.",
        "operationId": "TagTypes_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the tag type.",
            "required": true,
            "type": "integer",
            "format": "int32"
          },
          {
            "name": "tagType",
            "in": "body",
            "description": "Tag type to be updated.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/TagType"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/TagType"
            }
          },
          "400": {
            "description": "Validation failed."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Tag type not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Tag Types"
        ],
        "summary": "Deletes a tag type.",
        "operationId": "TagTypes_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the tag type.",
            "required": true,
            "type": "integer",
            "format": "int32"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Tag type not found."
          }
        }
      }
    },
    "/templates": {
      "get": {
        "tags": [
          "Templates"
        ],
        "summary": "Gets all templates.",
        "operationId": "Templates_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "type",
            "in": "query",
            "description": "Filter by template type.",
            "required": false,
            "type": "string",
            "enum": [
              "Newsletter",
              "Blog",
              "Honeypot",
              "LandingPage",
              "Email",
              "CallToAction"
            ]
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = Name.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/Template"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      },
      "post": {
        "tags": [
          "Templates"
        ],
        "summary": "Creates a new template.",
        "operationId": "Templates_Post",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "template",
            "in": "body",
            "description": "The template to be created.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Template"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Template"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/templates/{id}": {
      "get": {
        "tags": [
          "Templates"
        ],
        "summary": "Gets a template.",
        "operationId": "Templates_GetTemplate",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the template.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Template"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Template not found."
          }
        }
      },
      "put": {
        "tags": [
          "Templates"
        ],
        "summary": "Updates a template.",
        "operationId": "Templates_Put",
        "consumes": [
          "application/json",
          "text/json"
        ],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the template.",
            "required": true,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "template",
            "in": "body",
            "description": "The template to be updated.",
            "required": true,
            "schema": {
              "$ref": "#/definitions/Template"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/Template"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Template not found."
          }
        }
      },
      "delete": {
        "tags": [
          "Templates"
        ],
        "summary": "Deletes a template.",
        "operationId": "Templates_Delete",
        "consumes": [],
        "produces": [],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the template.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "204": {
            "description": "Operation succeeded."
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Template not found."
          }
        }
      }
    },
    "/tracking/emailevents": {
      "get": {
        "tags": [
          "Tracking"
        ],
        "summary": "Gets all email events.",
        "operationId": "EmailEvents_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "contactID",
            "in": "query",
            "description": "ID of the contact.",
            "required": false,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "target",
            "in": "query",
            "description": "Type of the email, e.g. \"Newsletter\".",
            "required": false,
            "type": "string"
          },
          {
            "name": "targetID",
            "in": "query",
            "description": "ID of the email.",
            "required": false,
            "type": "string"
          },
          {
            "name": "type",
            "in": "query",
            "description": "Type of the event.",
            "required": false,
            "type": "string"
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "First date and time of the events to fetch.",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "Last date and time of the events to fetch.",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = -EmailEventDate.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/EmailEvent"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/tracking/emailevents/{id}": {
      "get": {
        "tags": [
          "Tracking"
        ],
        "summary": "Gets an email event.",
        "operationId": "EmailEvents_GetEmail",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the email event.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/EmailEvent"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Email event not found."
          }
        }
      }
    },
    "/tracking/trackingevents": {
      "get": {
        "tags": [
          "Tracking"
        ],
        "summary": "Gets all tracking events.",
        "operationId": "TrackingEvents_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "url",
            "in": "query",
            "description": "URL of the tracking event.",
            "required": false,
            "type": "string"
          },
          {
            "name": "trackingCookieID",
            "in": "query",
            "description": "ID of the tracking cookie.",
            "required": false,
            "type": "string"
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Earliest date and time of tracking events.",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "endDate",
            "in": "query",
            "description": "Last date and time of tracking events.",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "trackingEventType",
            "in": "query",
            "description": "Type of the tracking event.",
            "required": false,
            "type": "string"
          },
          {
            "name": "contactID",
            "in": "query",
            "description": "ID of the contact.",
            "required": false,
            "type": "string",
            "format": "uuid"
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Number of items to be returned per page. Default = 100.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number. Default = 1.",
            "required": false,
            "type": "integer",
            "format": "int64"
          },
          {
            "name": "sort",
            "in": "query",
            "description": "Sort parameters. Default = -TrackingEventDate.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "type": "array",
              "items": {
                "$ref": "#/definitions/TrackingEvent"
              }
            },
            "headers": {
              "X-Loyalistic-Pagination-ItemsPerPage": {
                "description": "Items returned per page.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-Page": {
                "description": "Current page number.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalItems": {
                "description": "Total number of items.",
                "type": "integer",
                "format": "int64"
              },
              "X-Loyalistic-Pagination-TotalPages": {
                "description": "Total number of pages.",
                "type": "integer",
                "format": "int64"
              }
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    },
    "/tracking/trackingevents/{id}": {
      "get": {
        "tags": [
          "Tracking"
        ],
        "summary": "Gets a tracking event.",
        "operationId": "TrackingEvents_GetEmail",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "id",
            "in": "path",
            "description": "ID of the tracking event.",
            "required": true,
            "type": "string",
            "format": "uuid"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/TrackingEvent"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          },
          "404": {
            "description": "Tracking event not found."
          }
        }
      }
    },
    "/tracking/trackingstatistics": {
      "get": {
        "tags": [
          "Tracking"
        ],
        "summary": "Gets tracking event statistics.",
        "operationId": "TrackingStatistics_Get",
        "consumes": [],
        "produces": [
          "application/json",
          "text/json"
        ],
        "parameters": [
          {
            "name": "endDate",
            "in": "query",
            "description": "Last date and time of tracking events.",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "startDate",
            "in": "query",
            "description": "Earliest date and time of tracking events.",
            "required": false,
            "type": "string",
            "format": "date-time"
          },
          {
            "name": "trackingCookieID",
            "in": "query",
            "description": "ID of the tracking cookie.",
            "required": false,
            "type": "string"
          },
          {
            "name": "trackingEventType",
            "in": "query",
            "description": "Type of the tracking event.",
            "required": false,
            "type": "string"
          },
          {
            "name": "url",
            "in": "query",
            "description": "URL of the tracking event.",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "schema": {
              "$ref": "#/definitions/TrackingEventStatistics"
            }
          },
          "401": {
            "description": "Authorization failed. Check the API key/token."
          }
        }
      }
    }
  },
  "definitions": {
    "BlogPost": {
      "title": "BlogPost",
      "description": "Represents a blog post.",
      "required": [
        "Content",
        "Title",
        "UrlAlias"
      ],
      "type": "object",
      "properties": {
        "AlternateLinks": {
          "description": "A list of alternate links for the blog post.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/BlogPostAlternateLink"
          }
        },
        "BlogID": {
          "format": "int32",
          "description": "The ID of the blog.",
          "type": "integer"
        },
        "CanonicalUrl": {
          "description": "The canonical URL for the blog post.",
          "maxLength": 2048,
          "minLength": 0,
          "type": "string"
        },
        "Categories": {
          "description": "Categories this blog post belongs to.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Tag"
          }
        },
        "Content": {
          "description": "The contents of this blog post.",
          "type": "string"
        },
        "CreatedDate": {
          "format": "date-time",
          "description": "The date when the blog post was created.",
          "type": "string"
        },
        "Keywords": {
          "description": "The list of keyword tags associated with the blog post.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/Tag"
          }
        },
        "MainImageUrl": {
          "description": "The URL of the main image in the blog post.",
          "type": "string",
          "readOnly": true
        },
        "MetaDescription": {
          "description": "The meta description of the blog post.",
          "type": "string"
        },
        "ModifiedDate": {
          "format": "date-time",
          "description": "The date when the blog post was last modified.",
          "type": "string"
        },
        "ModifierUserID": {
          "format": "uuid",
          "description": "The ID of the user who last modified the blog post.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "OwnerUserID": {
          "format": "uuid",
          "description": "The ID of the user who created the blog post.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "PageTitle": {
          "description": "The title of the blog post page.",
          "maxLength": 256,
          "minLength": 0,
          "type": "string"
        },
        "PermanentUrlAlias": {
          "description": "The permanent URL alias.",
          "maxLength": 256,
          "minLength": 0,
          "type": "string"
        },
        "PostID": {
          "format": "int32",
          "description": "The ID of the blog post.",
          "type": "integer"
        },
        "PublicationDate": {
          "format": "date-time",
          "description": "The date of publication.",
          "type": "string"
        },
        "RedirectUrl": {
          "description": "The URL for redirecting browsers arriving to the blog post.",
          "maxLength": 2048,
          "minLength": 0,
          "type": "string"
        },
        "ScreenshotFileID": {
          "format": "uuid",
          "description": "The ID of the screenshot file.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "Status": {
          "description": "The status of the blog post.",
          "enum": [
            "Draft",
            "Scheduled",
            "Unlisted",
            "Public",
            "Redirected",
            "Superseded",
            "Archived"
          ],
          "type": "string"
        },
        "SummaryContent": {
          "description": "The HTML contents of the blog post summary.",
          "type": "string"
        },
        "Title": {
          "description": "The title of the blog post.",
          "maxLength": 256,
          "minLength": 0,
          "type": "string"
        },
        "UrlAlias": {
          "description": "The URL alias of the blog post.",
          "maxLength": 256,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "BlogPostAlternateLink": {
      "title": "BlogPostAlternateLink",
      "description": "Alternate link for a blog post.",
      "type": "object",
      "properties": {
        "Language": {
          "description": "The language code for the language of the blog post.",
          "maxLength": 15,
          "minLength": 0,
          "pattern": "^[\\w-]{2,}$",
          "type": "string"
        },
        "Url": {
          "description": "The URL for the link.",
          "maxLength": 2048,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "Tag": {
      "title": "Tag",
      "description": "Represents a tag.",
      "required": [
        "Value"
      ],
      "type": "object",
      "properties": {
        "Approved": {
          "description": "Is the tag approved or not.",
          "type": "boolean"
        },
        "Blocked": {
          "description": "Is the tag blocked or not.",
          "type": "boolean"
        },
        "Language": {
          "description": "The language code for the tag.",
          "maxLength": 15,
          "minLength": 0,
          "pattern": "^[\\w-]{2,}$",
          "type": "string"
        },
        "ParentTagID": {
          "format": "int32",
          "description": "The ID of the parent of this tag.",
          "type": "integer"
        },
        "ReplacedBy": {
          "format": "int32",
          "description": "The ID of the tag replacing this tag.",
          "type": "integer"
        },
        "TagID": {
          "format": "int32",
          "description": "The ID of the tag.",
          "type": "integer"
        },
        "TagTypeID": {
          "format": "int32",
          "description": "The type of the tag.",
          "type": "integer"
        },
        "Value": {
          "description": "The value of the tag.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "Blog": {
      "title": "Blog",
      "description": "Represents a blog.",
      "required": [
        "Name"
      ],
      "type": "object",
      "properties": {
        "BlogID": {
          "format": "int32",
          "description": "The ID of the blog.",
          "type": "integer"
        },
        "Caption": {
          "description": "The caption of the blog.",
          "maxLength": 256,
          "minLength": 0,
          "type": "string"
        },
        "CreatedDate": {
          "format": "date-time",
          "description": "The date when the blog was created.",
          "type": "string"
        },
        "EnableSharing": {
          "description": "Indicates whether social sharing should be enabled.",
          "type": "boolean"
        },
        "HtmlHeader": {
          "description": "The HTML header of the blog.",
          "type": "string"
        },
        "Language": {
          "description": "The language code of the language used in the blog.",
          "maxLength": 15,
          "minLength": 0,
          "pattern": "^[\\w-]{2,}$",
          "type": "string"
        },
        "Name": {
          "description": "The name of the blog.",
          "maxLength": 256,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "CallToAction": {
      "title": "CallToAction",
      "description": "The base class for specific CTA types.",
      "required": [
        "TemplateID"
      ],
      "type": "object",
      "properties": {
        "ButtonText": {
          "description": "The text of the CTA button, if any.",
          "type": "string"
        },
        "ButtonUrl": {
          "description": "The URL to which the CTA button should redirect, if any.",
          "type": "string"
        },
        "CallToActionID": {
          "format": "uuid",
          "description": "The ID of the CTA.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "Content": {
          "description": "The (HTML) content text of the CTA.",
          "type": "string"
        },
        "CreatedDate": {
          "format": "date-time",
          "description": "The date when this CTA was created.",
          "type": "string"
        },
        "FullHtml": {
          "description": "The CTA as a complete HTML fragment.",
          "type": "string"
        },
        "ImageUrl": {
          "description": "The URL of the CTA image.",
          "type": "string"
        },
        "ModifiedDate": {
          "format": "date-time",
          "description": "The date when this CTA was last modified.",
          "type": "string"
        },
        "Name": {
          "description": "The name of the CTA.",
          "type": "string"
        },
        "ScreenshotFileID": {
          "format": "uuid",
          "description": "The ID of the file containing the screenshot of the CTA.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "Styles": {
          "$ref": "#/definitions/CallToActionStyles",
          "description": "The style settings for the CTA."
        },
        "TemplateID": {
          "format": "uuid",
          "description": "The ID of the template.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "Title": {
          "description": "The title text of the CTA.",
          "type": "string"
        },
        "Type": {
          "description": "The type of the CTA.",
          "enum": [
            "Ebook",
            "FreeForm",
            "YouTubeVideo"
          ],
          "type": "string"
        },
        "VideoEmbedUrl": {
          "description": "The embed URL of the CTA video.",
          "type": "string",
          "readOnly": true
        },
        "VideoLinkUrl": {
          "description": "The link URL of the CTA video.",
          "type": "string",
          "readOnly": true
        },
        "VideoUrl": {
          "description": "The URL of the CTA video.",
          "type": "string"
        }
      }
    },
    "CallToActionStyles": {
      "title": "CallToActionStyles",
      "description": "The style settings for a CTA.",
      "type": "object",
      "properties": {
        "Background": {
          "description": "The background color of the CTA.",
          "pattern": "^#[0-9a-fA-F]{6}$",
          "type": "string"
        },
        "BorderColor": {
          "description": "The border color of the CTA.",
          "pattern": "^#[0-9a-fA-F]{6}$",
          "type": "string"
        },
        "ButtonBackground": {
          "description": "The CTA button background color.",
          "pattern": "^#[0-9a-fA-F]{6}$",
          "type": "string"
        },
        "ButtonBorderColor": {
          "description": "The CTA button border color.",
          "pattern": "^#[0-9a-fA-F]{6}$",
          "type": "string"
        },
        "ButtonForeground": {
          "description": "The CTA button text color.",
          "pattern": "^#[0-9a-fA-F]{6}$",
          "type": "string"
        },
        "Foreground": {
          "description": "The text color of the CTA.",
          "pattern": "^#[0-9a-fA-F]{6}$",
          "type": "string"
        }
      }
    },
    "ConsentRequest": {
      "title": "ConsentRequest",
      "description": "Represents a consent.",
      "required": [
        "FullText",
        "LabelText",
        "Language",
        "Name"
      ],
      "type": "object",
      "properties": {
        "Archived": {
          "description": "Is the consent request archived or not.",
          "type": "boolean"
        },
        "ConsentRequestID": {
          "format": "uuid",
          "description": "ID of the consent request.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "CreatedBy": {
          "description": "User who created this consent request.",
          "type": "string"
        },
        "CreatedDate": {
          "format": "date-time",
          "description": "Date when the consent request was created.",
          "type": "string"
        },
        "DataProcessingAllowed": {
          "description": "Defines whether the consent allows data processing.",
          "type": "boolean"
        },
        "FullText": {
          "description": "Text of the consent request.",
          "type": "string"
        },
        "LabelText": {
          "description": "Summary text of the consent request.",
          "maxLength": 256,
          "minLength": 0,
          "type": "string"
        },
        "Language": {
          "description": "Language code.",
          "type": "string"
        },
        "MarketingAllowed": {
          "description": "Defines whether the consent allows marketing.",
          "type": "boolean"
        },
        "ModifiedBy": {
          "description": "User who modified the consent request.",
          "type": "string"
        },
        "ModifiedDate": {
          "format": "date-time",
          "description": "Date when this consent request was last updated.",
          "type": "string"
        },
        "Name": {
          "description": "Name of the consent request.",
          "maxLength": 256,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "Contact": {
      "title": "Contact",
      "description": "Represents a contact, i.e. a person.",
      "required": [
        "Email"
      ],
      "type": "object",
      "properties": {
        "AddedToListDate": {
          "format": "date-time",
          "description": "Date when Contact was added to a List.",
          "type": "string"
        },
        "Address": {
          "description": "The street/postal address of the contact. Filterable.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "AddressExt": {
          "description": "The street/postal address of the contact, continued. Filterable.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "City": {
          "description": "The city of the contact. Filterable.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "ClientContactID": {
          "description": "Your ID for the contact.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "ContactID": {
          "format": "uuid",
          "description": "ID of the contact.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "ContactStatus": {
          "description": "The status of the contact. Filterable.",
          "enum": [
            "MarketingLead",
            "QualifiedLead",
            "NewCustomer",
            "RepeatCustomer",
            "LoyalCustomer"
          ],
          "type": "string"
        },
        "ContactStatusChangedDate": {
          "format": "date-time",
          "description": "Date of the last change of the customer status.",
          "type": "string"
        },
        "ContactType": {
          "description": "The type of the contact.",
          "enum": [
            "Unknown",
            "Customer",
            "Employee",
            "Noncustomer"
          ],
          "type": "string"
        },
        "Country": {
          "description": "The country where the contact resides. Filterable.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "CreatedDate": {
          "format": "date-time",
          "description": "The date when the contact was created in Loyalistic.",
          "type": "string"
        },
        "Email": {
          "description": "The email address of the contact. Filterable.",
          "maxLength": 255,
          "minLength": 0,
          "pattern": "[a-zA-Z0-9_]+([-+.'][a-zA-Z0-9_]+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*",
          "type": "string"
        },
        "EmailHashMD5": {
          "description": "MD5 hash of the customer's email address.",
          "type": "string",
          "readOnly": true
        },
        "EmailSendingBlockedDate": {
          "format": "date-time",
          "description": "Email sending blocked date.",
          "type": "string"
        },
        "EmailSendingBlockedReason": {
          "description": "Technical reason for email sending block, i.e. bounce code.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "FieldValues": {
          "title": "Dictionary`2",
          "description": "List of additional field values.",
          "type": "object",
          "additionalProperties": {
            "type": "string"
          }
        },
        "FirstName": {
          "description": "The first name of the contact. Filterable.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "Imported": {
          "description": "Indicates whether the contact has been imported from e.g. a file or a CRM.",
          "type": "boolean"
        },
        "Influencer": {
          "description": "Indicates whether the contact is an influencer.",
          "type": "boolean"
        },
        "JobTitle": {
          "description": "The job title of the contact. Filterable.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "Language": {
          "description": "The two-letter code for the language that the contact prefers to use. Filterable.",
          "maxLength": 3,
          "minLength": 0,
          "type": "string"
        },
        "LastActivityDate": {
          "format": "date-time",
          "description": "The date of the last activity of the contact.",
          "type": "string"
        },
        "LastName": {
          "description": "The last name of the contact. Filterable.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "MarketingBanDate": {
          "format": "date-time",
          "description": "Marketing ban date.",
          "type": "string"
        },
        "MuteUntilDate": {
          "format": "date-time",
          "description": "Contact muted until a specific date.",
          "type": "string"
        },
        "New": {
          "description": "Indicates whether the contact is new, i.e. has any action been taken towards this contact.",
          "type": "boolean"
        },
        "OrganizationID": {
          "format": "uuid",
          "description": "ID of the organization this contact belongs to.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "OrganizationName": {
          "description": "Name of the organization this contact belongs to. If OrganizationID has been set, this will be ignored when inserting/updating. Filterable.",
          "type": "string"
        },
        "OriginalSource": {
          "description": "Source from where the contact originally came.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "ParentContactID": {
          "format": "uuid",
          "description": "ID of the parent contact.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "ProcessingBasis": {
          "description": "The basis for processing the contact's data.",
          "enum": [
            "None",
            "Consent",
            "Contract",
            "LegalObligation",
            "VitalInterest",
            "PublicInterest",
            "LegitimateInterest"
          ],
          "type": "string"
        },
        "Score": {
          "format": "int32",
          "description": "Hotness score for the contact. Filterable.",
          "type": "integer",
          "readOnly": true
        },
        "State": {
          "description": "The state of the contact. Filterable.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "Telephone": {
          "description": "The phone number of the contact. Filterable.",
          "maxLength": 50,
          "minLength": 0,
          "type": "string"
        },
        "UnsubscribedFromListDate": {
          "format": "date-time",
          "description": "Date of the possible unsubscription for the Contact.",
          "type": "string"
        },
        "ZipCode": {
          "description": "The Zip/postal code. Filterable.",
          "maxLength": 50,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "ContactConsent": {
      "title": "ContactConsent",
      "description": "Represents a contact's consent.",
      "required": [
        "ConsentRequestID",
        "Source"
      ],
      "type": "object",
      "properties": {
        "ConsentGivenDate": {
          "format": "date-time",
          "description": "Date when the consent was given.",
          "type": "string"
        },
        "ConsentRequestID": {
          "format": "uuid",
          "description": "ID of the consent request.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "ConsentWithdrawnDate": {
          "format": "date-time",
          "description": "Date when the consent was revoked.",
          "type": "string"
        },
        "ContactConsentID": {
          "format": "uuid",
          "description": "ID of the consent consent.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "CreatedBy": {
          "description": "The email address of the user who created the consent entry.",
          "maxLength": 255,
          "minLength": 0,
          "pattern": "[a-zA-Z0-9_]+([-+.'][a-zA-Z0-9_]+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*",
          "type": "string"
        },
        "CreatedDate": {
          "format": "date-time",
          "description": "The date and time when the consent entry was created.",
          "type": "string"
        },
        "Source": {
          "description": "Where the consent was given.",
          "type": "string"
        }
      }
    },
    "ContactList": {
      "title": "ContactList",
      "description": "Represents a contact list, i.e. a collection of Contacts.",
      "required": [
        "Name"
      ],
      "type": "object",
      "properties": {
        "ContactIDs": {
          "description": "List of IDs of contacts on this list.",
          "type": "array",
          "items": {
            "format": "uuid",
            "type": "string",
            "example": "00000000-0000-0000-0000-000000000000"
          }
        },
        "ContactListID": {
          "format": "int32",
          "description": "ID of the  list.",
          "type": "integer"
        },
        "ContactsCount": {
          "format": "int32",
          "description": "Number of contacts on the list.",
          "type": "integer"
        },
        "IsDefault": {
          "description": "Indicates whether this is a default list.",
          "type": "boolean"
        },
        "IsSystemList": {
          "description": "Indicates whether this is a system list.",
          "type": "boolean"
        },
        "Name": {
          "description": "Name of the list.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "UnsubscribedFromListDate": {
          "format": "date-time",
          "description": "Date of the possible unsubscription for the Contact.",
          "type": "string"
        }
      }
    },
    "ContactNote": {
      "title": "ContactNote",
      "description": "Represents a contact note.",
      "required": [
        "Note"
      ],
      "type": "object",
      "properties": {
        "ContactNoteID": {
          "format": "uuid",
          "description": "ID of the note.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "CreatedBy": {
          "description": "Email address of the user who created this note.",
          "maxLength": 255,
          "minLength": 0,
          "pattern": "[a-zA-Z0-9_]+([-+.'][a-zA-Z0-9_]+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*",
          "type": "string"
        },
        "CreatedDate": {
          "format": "date-time",
          "description": "Date and time when the note was created.",
          "type": "string"
        },
        "Note": {
          "description": "Content of the note.",
          "type": "string"
        }
      }
    },
    "ContactProperty": {
      "title": "ContactProperty",
      "description": "Property of a contact.",
      "required": [
        "DataType",
        "Key"
      ],
      "type": "object",
      "properties": {
        "ContactID": {
          "format": "uuid",
          "description": "ID of the contact.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "DataType": {
          "description": "Data type for the value.",
          "maxLength": 50,
          "minLength": 0,
          "type": "string"
        },
        "Key": {
          "description": "Name for the property. Must be unique with this contact.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "Value": {
          "description": "Actual value of the property. Must be encoded as a string.",
          "type": "string"
        }
      }
    },
    "Country": {
      "title": "Country",
      "description": "Represents an country.",
      "type": "object",
      "properties": {
        "CountryCode": {
          "description": "The two-letter ISO 3166-1 country code  (e.g. \"FI\") for the organization.",
          "type": "string"
        },
        "Name": {
          "description": "The English name of the country.",
          "type": "string"
        }
      }
    },
    "EmailEvent": {
      "title": "EmailEvent",
      "description": "",
      "required": [
        "ContactID",
        "EmailEventSource",
        "EmailEventType",
        "RobotClick",
        "Target",
        "TargetID"
      ],
      "type": "object",
      "properties": {
        "ContactID": {
          "format": "uuid",
          "description": "ID for the contact.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "EmailEventDate": {
          "format": "date-time",
          "description": "Original date for the event, usually received from the email provider.",
          "type": "string"
        },
        "EmailEventID": {
          "format": "uuid",
          "description": "ID for the event.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "EmailEventSource": {
          "description": "Source for the event, such as \"SendGrid\" or \"MailJet\".",
          "maxLength": 50,
          "minLength": 0,
          "pattern": "^[\\w-]+$",
          "type": "string"
        },
        "EmailEventType": {
          "description": "Type of the event, such as \"Delivered\", \"Bounce\", \"Open\" etc.",
          "maxLength": 50,
          "minLength": 0,
          "pattern": "^[\\w-]+$",
          "type": "string"
        },
        "LinkOrderNumber": {
          "format": "int32",
          "description": "The order number of the link that was clicked on the email.",
          "type": "integer"
        },
        "OutgoingUrl": {
          "description": "Clicked link URL parsed from EmailEventData for \"click\" events.",
          "type": "string"
        },
        "RobotClick": {
          "description": "Indicates whether this is a (suspected) robot click.",
          "type": "boolean"
        },
        "Target": {
          "description": "Type of the email this event is related to. E.g. \"Newsletter\".",
          "maxLength": 50,
          "minLength": 0,
          "pattern": "^[\\w-]+$",
          "type": "string"
        },
        "TargetID": {
          "description": "ID for the email (e.g. newsletter) this event is related to.",
          "maxLength": 50,
          "minLength": 0,
          "pattern": "^[\\w-]+$",
          "type": "string"
        }
      }
    },
    "Email": {
      "title": "Email",
      "description": "Represents an email.",
      "required": [
        "EmailType",
        "TemplateID"
      ],
      "type": "object",
      "properties": {
        "ContainsNoMarketing": {
          "description": "Indicates that the email contains no marketing messaging.",
          "type": "boolean"
        },
        "Content": {
          "description": "The HTML content of the email.",
          "type": "string"
        },
        "CreatedDate": {
          "format": "date-time",
          "description": "The date when the email was created.",
          "type": "string"
        },
        "Description": {
          "description": "The description of the email.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "EmailID": {
          "format": "uuid",
          "description": "The ID of the email.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "EmailType": {
          "description": "The type of the email.",
          "enum": [
            "Newsletter",
            "Nurture",
            "Honeypot"
          ],
          "type": "string"
        },
        "ExcludedContactListIDs": {
          "description": "The IDs of the contact lists to be excluded when the email is sent.",
          "type": "array",
          "items": {
            "format": "int32",
            "type": "integer"
          }
        },
        "FilterID": {
          "format": "uuid",
          "description": "ID of the filter used to limit recipients.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "FromEmail": {
          "description": "The email address of the sender.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "FromName": {
          "description": "The name of the sender.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "IncludedContactListIDs": {
          "description": "The IDs of the contact lists to be included when the email is sent.",
          "type": "array",
          "items": {
            "format": "int32",
            "type": "integer"
          }
        },
        "ModifiedDate": {
          "format": "date-time",
          "description": "The IDs of the contact lists to be included when the email is sent.",
          "type": "string"
        },
        "NotificationEmailAddress": {
          "description": "The email address where notifications should be sent about processing successes and failures.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "ProcessingMessage": {
          "description": "The error message from the latest processing, if any.",
          "type": "string"
        },
        "ReplyToEmailAddress": {
          "description": "The reply-to address for the email.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "Resend": {
          "description": "Determines whether the email should be resent to the contacts who have not yet received it.",
          "type": "boolean"
        },
        "ScheduleDate": {
          "format": "date-time",
          "description": "The date when then email should be sent.",
          "type": "string"
        },
        "ScreenshotFileID": {
          "format": "uuid",
          "description": "The ID of the file containing the screenshot of the email.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "SendNotificationAfterSuccess": {
          "description": "Determines whether a notification email should be sent after the email processing has succeeded.",
          "type": "boolean"
        },
        "SentContent": {
          "description": "The complete sent email as HTML.",
          "type": "string"
        },
        "SentDate": {
          "format": "date-time",
          "description": "The date when the email was sent out.",
          "type": "string"
        },
        "Status": {
          "description": "The status of the email.",
          "enum": [
            "Draft",
            "Scheduled",
            "Processing",
            "Sent"
          ],
          "type": "string",
          "readOnly": true
        },
        "TemplateID": {
          "format": "uuid",
          "description": "The ID of the template.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "Title": {
          "description": "The subject of the email.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "EmailSendQueueItem": {
      "title": "EmailSendQueueItem",
      "description": "Represents an email send queue item.",
      "required": [
        "EmailID"
      ],
      "type": "object",
      "properties": {
        "ActionLinkUrl": {
          "description": "The URL (e.g. CTA) for the action link.",
          "maxLength": 2048,
          "minLength": 0,
          "pattern": "^(https?|ftp|file):\\/\\/[\\-A-Za-z0-9+&@#\\/%?=~_|!:,.;]*[\\-A-Za-z0-9+&@#\\/%=~_|!‌]$",
          "type": "string"
        },
        "ContactID": {
          "format": "uuid",
          "description": "The ID of a contact.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "ContactListIDs": {
          "description": "The IDs of the contact lists used when sending.",
          "type": "array",
          "items": {
            "format": "int32",
            "type": "integer"
          }
        },
        "EmailID": {
          "format": "uuid",
          "description": "The ID of the email.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "EmailSendQueueItemID": {
          "format": "uuid",
          "description": "The ID for this item.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "InsertedDate": {
          "format": "date-time",
          "description": "The date when this item was inserted to the queue.",
          "type": "string"
        },
        "NurtureProgramID": {
          "format": "uuid",
          "description": "The ID of a nurture program to which this item is related to.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "NurtureProgramStepID": {
          "format": "uuid",
          "description": "The ID of a nurture program step to which this item is related to.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "RecipientEmailAddress": {
          "description": "The recipient email address for this email.",
          "pattern": "[a-zA-Z0-9_]+([-+.'][a-zA-Z0-9_]+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*",
          "type": "string"
        },
        "SendAtDate": {
          "format": "date-time",
          "description": "The date when this item should be sent.",
          "type": "string"
        }
      }
    },
    "EmailStatistics": {
      "title": "EmailStatistics",
      "description": "",
      "type": "object",
      "properties": {
        "Bounced": {
          "format": "int32",
          "description": "Number of bounced addresses.",
          "type": "integer"
        },
        "Clicked": {
          "format": "int32",
          "description": "Number of contacts who have clicked a link in the email.",
          "type": "integer"
        },
        "MarketingBanned": {
          "format": "int32",
          "description": "Number of contacts who have set marketing ban on using the unsubscription link in the email.",
          "type": "integer"
        },
        "Opened": {
          "format": "int32",
          "description": "Number of contacts who have opened the email.",
          "type": "integer"
        },
        "Recipients": {
          "format": "int32",
          "description": "Number of contacts to whom the email was sent.",
          "type": "integer"
        },
        "Unsubscribed": {
          "format": "int32",
          "description": "Number of contacts who have unsubscribed using the unsubscription link in the email.",
          "type": "integer"
        },
        "UpdatedDate": {
          "format": "date-time",
          "description": "Date when these statistics were last updated.",
          "type": "string"
        }
      }
    },
    "Field": {
      "title": "Field",
      "description": "Additional field to be used with forms and contacts.",
      "required": [
        "Label",
        "Type"
      ],
      "type": "object",
      "properties": {
        "Description": {
          "description": "Description text of the field.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "FieldName": {
          "description": "Unique name of the field.",
          "maxLength": 50,
          "minLength": 3,
          "pattern": "^[\\w-]*$",
          "type": "string"
        },
        "Label": {
          "description": "Label of the field.",
          "maxLength": 50,
          "minLength": 0,
          "type": "string"
        },
        "Options": {
          "description": "The options for the field.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/FieldOption"
          }
        },
        "Type": {
          "description": "Type of the field.",
          "enum": [
            "Text",
            "MultilineText",
            "Email",
            "Tel",
            "Number",
            "Checkbox",
            "Radio",
            "Select"
          ],
          "type": "string"
        }
      }
    },
    "FieldOption": {
      "title": "FieldOption",
      "description": "Option of a field.",
      "required": [
        "Label",
        "Value"
      ],
      "type": "object",
      "properties": {
        "Label": {
          "description": "Public label of the field.",
          "maxLength": 50,
          "minLength": 0,
          "type": "string"
        },
        "OrderNumber": {
          "format": "int32",
          "description": "Determines the order of the option among all the options with the field.",
          "type": "integer"
        },
        "Value": {
          "description": "Value of the field.",
          "maxLength": 50,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "ContentFile": {
      "title": "ContentFile",
      "description": "Represents a content file.",
      "type": "object",
      "properties": {
        "FileHash": {
          "description": "The SHA-256 hash of the file contents as hexadecimal string.",
          "type": "string"
        },
        "FileID": {
          "format": "uuid",
          "description": "The ID of the file.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "FileName": {
          "description": "The name of the file.",
          "type": "string"
        },
        "ImageHeight": {
          "format": "int32",
          "description": "The height of the image in pixels.",
          "type": "integer"
        },
        "ImageWidth": {
          "format": "int32",
          "description": "The width of the image in pixels.",
          "type": "integer"
        },
        "ParentFileID": {
          "format": "uuid",
          "description": "The ID of the parent of this file.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "PublicUrl": {
          "description": "The publicly accessible URL of the file.",
          "type": "string"
        },
        "UploadDate": {
          "format": "date-time",
          "description": "The date when the file was uploaded.",
          "type": "string"
        },
        "SubFiles": {
          "description": "The files which belong under this file.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/ContentFile"
          }
        }
      }
    },
    "Filter": {
      "title": "Filter",
      "description": "",
      "required": [
        "Condition",
        "Name"
      ],
      "type": "object",
      "properties": {
        "Condition": {
          "$ref": "#/definitions/FilterCondition",
          "description": "The parent condition for all other filter conditions."
        },
        "FilterID": {
          "format": "uuid",
          "description": "ID of the filter.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "Name": {
          "description": "Name of the filter.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "FilterCondition": {
      "title": "FilterCondition",
      "description": "",
      "required": [
        "FilterID"
      ],
      "type": "object",
      "properties": {
        "Comparison": {
          "description": "Comparison operator of the filter.",
          "enum": [
            "Equal",
            "NotEqual",
            "LessThan",
            "LessThanOrEqual",
            "GreaterThan",
            "GreaterThanOrEqual",
            "Contains",
            "DoesNotContain",
            "StartsWith",
            "DoesNotStartWith",
            "EndsWith",
            "DoesNotEndWith"
          ],
          "type": "string"
        },
        "Conditions": {
          "description": "Search conditions.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/FilterCondition"
          }
        },
        "Field": {
          "description": "Name of the field to use in the search.",
          "maxLength": 50,
          "minLength": 0,
          "pattern": "^(Fields\\.){0,1}[\\w-]*$",
          "type": "string"
        },
        "Operator": {
          "description": "Operator (AND, OR) used when combining conditions.",
          "maxLength": 3,
          "minLength": 0,
          "pattern": "^(AND|OR|and|or)$",
          "type": "string"
        },
        "Value": {
          "description": "Value to be searched.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        }
      }
    },
    "Honeypot": {
      "title": "Honeypot",
      "required": [
        "AskAddress",
        "AskCompany",
        "AskCountry",
        "AskJobTitle",
        "AskName",
        "AskState",
        "AskTelephone",
        "BaitType",
        "Culture",
        "DownloadFileName",
        "LandingPageHtml",
        "ThankYouPageHtml",
        "UrlAlias"
      ],
      "type": "object",
      "properties": {
        "AskAddress": {
          "enum": [
            "None",
            "Optional",
            "Required"
          ],
          "type": "string"
        },
        "AskCompany": {
          "enum": [
            "None",
            "Optional",
            "Required"
          ],
          "type": "string"
        },
        "AskCountry": {
          "enum": [
            "None",
            "Optional",
            "Required"
          ],
          "type": "string"
        },
        "AskJobTitle": {
          "enum": [
            "None",
            "Optional",
            "Required"
          ],
          "type": "string"
        },
        "AskName": {
          "enum": [
            "None",
            "Optional",
            "Required"
          ],
          "type": "string"
        },
        "AskState": {
          "enum": [
            "None",
            "Optional",
            "Required"
          ],
          "type": "string"
        },
        "AskTelephone": {
          "enum": [
            "None",
            "Optional",
            "Required"
          ],
          "type": "string"
        },
        "BaitType": {
          "enum": [
            "None",
            "File",
            "Url"
          ],
          "type": "string"
        },
        "ConsentRequests": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HoneypotConsentRequest"
          }
        },
        "ContactListID": {
          "format": "int32",
          "type": "integer"
        },
        "CreatedDate": {
          "format": "date-time",
          "type": "string"
        },
        "Culture": {
          "type": "string"
        },
        "CustomerTrainerDataFlowID": {
          "format": "uuid",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "CustomFields": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/HoneypotField"
          }
        },
        "DownloadFileName": {
          "type": "string"
        },
        "EmailContent": {
          "type": "string"
        },
        "EmailID": {
          "format": "uuid",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "EmailSenderAddress": {
          "pattern": "\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*",
          "type": "string"
        },
        "EmailSenderName": {
          "type": "string"
        },
        "EmailSubject": {
          "type": "string"
        },
        "EmailTemplateType": {
          "type": "string"
        },
        "EnableSharing": {
          "type": "boolean"
        },
        "FileDownloadID": {
          "type": "string"
        },
        "FileUrl": {
          "pattern": "^[A-Za-z]{3,9}://.+\\..+$",
          "type": "string"
        },
        "FullUrl": {
          "type": "string"
        },
        "HoneypotID": {
          "format": "int64",
          "type": "integer"
        },
        "LandingPageHtml": {
          "type": "string"
        },
        "Live": {
          "type": "boolean"
        },
        "MetaDescription": {
          "type": "string"
        },
        "MetaKeywords": {
          "type": "string"
        },
        "Name": {
          "type": "string"
        },
        "NotificationEmails": {
          "pattern": "^(\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*)(\\s*\\,\\s*\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*)*$",
          "type": "string"
        },
        "NurtureProgramID": {
          "format": "uuid",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "PageTitle": {
          "type": "string"
        },
        "PublishDate": {
          "format": "date-time",
          "type": "string"
        },
        "SendEmail": {
          "type": "boolean"
        },
        "ShowForm": {
          "type": "boolean"
        },
        "SubmitButtonText": {
          "type": "string"
        },
        "ThankYouPageHtml": {
          "type": "string"
        },
        "UrlAlias": {
          "pattern": "^[\\w\\-]+$",
          "type": "string"
        }
      }
    },
    "HoneypotConsentRequest": {
      "title": "HoneypotConsentRequest",
      "type": "object",
      "properties": {
        "ConsentRequestID": {
          "format": "uuid",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "Required": {
          "type": "boolean"
        }
      }
    },
    "HoneypotField": {
      "title": "HoneypotField",
      "required": [
        "FieldName"
      ],
      "type": "object",
      "properties": {
        "FieldName": {
          "maxLength": 50,
          "minLength": 0,
          "type": "string"
        },
        "OrderNumber": {
          "format": "int32",
          "type": "integer"
        },
        "Required": {
          "type": "boolean"
        }
      }
    },
    "ContactListContact": {
      "title": "ContactListContact",
      "description": "Represents an association between a list and a contact.",
      "required": [
        "ContactID",
        "ContactListID"
      ],
      "type": "object",
      "properties": {
        "AddDate": {
          "format": "date-time",
          "description": "Date when the contact was added to the list.",
          "type": "string"
        },
        "ContactID": {
          "format": "uuid",
          "description": "ID of the contact.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "ContactListID": {
          "format": "int32",
          "description": "ID of the contact list.",
          "type": "integer"
        },
        "UnsubscribeDate": {
          "format": "date-time",
          "description": "Date when the contact was unsubscribed from the list.",
          "type": "string"
        }
      }
    },
    "HoneypotStatistics": {
      "title": "HoneypotStatistics",
      "type": "object",
      "properties": {
        "Contacts": {
          "format": "int32",
          "type": "integer"
        },
        "DayStatistics": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/DayStatistics"
          }
        },
        "DeltaDays": {
          "format": "int32",
          "type": "integer"
        },
        "Landings": {
          "format": "int32",
          "type": "integer"
        },
        "LandingsDelta": {
          "format": "int32",
          "type": "integer"
        },
        "LastLandingsDuringDelta2Days": {
          "format": "int32",
          "type": "integer"
        },
        "LastSubmissionsDuringDelta2Days": {
          "format": "int32",
          "type": "integer"
        },
        "LatestContactDate": {
          "format": "date-time",
          "type": "string"
        },
        "ReferrerStatistics": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReferrerStatistics"
          }
        },
        "ReferrerUrls": {
          "type": "array",
          "items": {
            "$ref": "#/definitions/ReferrerUrl"
          }
        },
        "Submissions": {
          "format": "int32",
          "type": "integer"
        },
        "SubmissionsDelta": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "DayStatistics": {
      "title": "DayStatistics",
      "type": "object",
      "properties": {
        "Day": {
          "format": "date-time",
          "type": "string"
        },
        "Landings": {
          "format": "int32",
          "type": "integer"
        },
        "Submissions": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "ReferrerStatistics": {
      "title": "ReferrerStatistics",
      "type": "object",
      "properties": {
        "LandingUrls": {
          "title": "Dictionary`2",
          "type": "object",
          "additionalProperties": {
            "format": "int32",
            "type": "integer"
          }
        },
        "SubmissionUrls": {
          "title": "Dictionary`2",
          "type": "object",
          "additionalProperties": {
            "format": "int32",
            "type": "integer"
          }
        },
        "Landings": {
          "format": "int32",
          "type": "integer"
        },
        "ReferrerType": {
          "type": "string"
        },
        "ReferrerTypeName": {
          "type": "string"
        },
        "Submissions": {
          "format": "int32",
          "type": "integer"
        }
      }
    },
    "ReferrerUrl": {
      "title": "ReferrerUrl",
      "type": "object",
      "properties": {
        "Count": {
          "format": "int32",
          "type": "integer"
        },
        "Url": {
          "type": "string"
        }
      }
    },
    "Tracking": {
      "title": "Tracking",
      "type": "object",
      "properties": {
        "TrackingID": {
          "format": "uuid",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "ClientID": {
          "format": "int32",
          "type": "integer"
        },
        "DeviceID": {
          "format": "uuid",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "Url": {
          "type": "string"
        },
        "IPAddress": {
          "type": "string"
        },
        "SessionID": {
          "type": "string"
        },
        "ReferrerUrl": {
          "type": "string"
        },
        "ReferrerType": {
          "type": "string"
        },
        "TrackingDate": {
          "format": "date-time",
          "type": "string"
        },
        "TrackingType": {
          "type": "string"
        },
        "HoneypotID": {
          "format": "int64",
          "type": "integer"
        },
        "ContactID": {
          "format": "uuid",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "ReferrerTypeName": {
          "type": "string",
          "readOnly": true
        }
      }
    },
    "NurtureProgram": {
      "title": "NurtureProgram",
      "description": "",
      "required": [
        "Name"
      ],
      "type": "object",
      "properties": {
        "NurtureProgramID": {
          "format": "uuid",
          "description": "ID of the nurture program.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "Name": {
          "description": "Name of the nurture program.",
          "maxLength": 256,
          "minLength": 0,
          "type": "string"
        },
        "CreatedDate": {
          "format": "date-time",
          "description": "The creation date of the program.",
          "type": "string"
        },
        "ModifiedDate": {
          "format": "date-time",
          "description": "The last time this program was modified.",
          "type": "string"
        }
      }
    },
    "NurtureProgramContact": {
      "title": "NurtureProgramContact",
      "description": "",
      "required": [
        "ContactID"
      ],
      "type": "object",
      "properties": {
        "NurtureProgramID": {
          "format": "uuid",
          "description": "ID of the nurture program.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "ContactID": {
          "format": "uuid",
          "description": "ID of the contact.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "AddedDate": {
          "format": "date-time",
          "description": "The date and time when the contact was added to this nurture program.",
          "type": "string"
        }
      }
    },
    "NurtureProgramStep": {
      "title": "NurtureProgramStep",
      "description": "",
      "required": [
        "DelayMinutes",
        "EmailID"
      ],
      "type": "object",
      "properties": {
        "DelayAmount": {
          "format": "int32",
          "description": "The amount of DelayUnits converted from DelayMinutes.",
          "type": "integer",
          "readOnly": true
        },
        "DelayMinutes": {
          "format": "int32",
          "description": "The delay in minutes.",
          "type": "integer"
        },
        "DelayUnit": {
          "description": "The unit of the DelayAmount converted from DelayAmount: minutes, hours or days.",
          "type": "string",
          "readOnly": true
        },
        "EmailID": {
          "format": "uuid",
          "description": "ID of the email to be sent when this step gets triggered.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "NurtureProgramStepID": {
          "format": "uuid",
          "description": "ID of the step.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "OrderNumber": {
          "format": "int32",
          "description": "The relative number of this step in the whole sequence.",
          "type": "integer"
        }
      }
    },
    "Organization": {
      "title": "Organization",
      "description": "Represents an organization for a contact.",
      "required": [
        "Name"
      ],
      "type": "object",
      "properties": {
        "Address": {
          "description": "The street/postal address of the organization.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "AddressExt": {
          "description": "The street/postal address of the organization, continued.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "City": {
          "description": "The city of the organization.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "ContactCount": {
          "format": "int32",
          "description": "Number of contacts on the list.",
          "type": "integer"
        },
        "CountryCode": {
          "description": "The two-letter ISO 3166-1 country code  (e.g. \"FI\") for the organization.",
          "pattern": "^[a-zA-Z]{2}$",
          "type": "string"
        },
        "CreatedDate": {
          "format": "date-time",
          "description": "The date and time when the organization was created.",
          "type": "string"
        },
        "Domains": {
          "description": "The list of organization domains (e.g. \"loyalistic.com\").",
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "Employees": {
          "format": "int32",
          "description": "The estimated number of employees.",
          "maximum": 2147483647,
          "minimum": 0,
          "type": "integer"
        },
        "Name": {
          "description": "The name of the organization.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "OrganizationID": {
          "format": "uuid",
          "description": "The ID of the organization.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "PostalCode": {
          "description": "The postal code.",
          "maxLength": 50,
          "minLength": 0,
          "type": "string"
        },
        "State": {
          "description": "The state/region of the organization.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "Telephone": {
          "description": "The telephone number for the organization.",
          "maxLength": 50,
          "minLength": 0,
          "type": "string"
        },
        "Turnover": {
          "format": "int64",
          "description": "The estimated turnover of the organization.",
          "minimum": 0,
          "pattern": "^\\d*$",
          "type": "integer"
        },
        "Website": {
          "description": "The URL of the website of the organization.",
          "maxLength": 2048,
          "minLength": 0,
          "pattern": "^(https?|ftp|file):\\/\\/[\\-A-Za-z0-9+&@#\\/%?=~_|!:,.;]*[\\-A-Za-z0-9+&@#\\/%=~_|!‌]$",
          "type": "string"
        }
      }
    },
    "OrganizationNote": {
      "title": "OrganizationNote",
      "description": "Represents a contact note.",
      "required": [
        "Note"
      ],
      "type": "object",
      "properties": {
        "CreatedBy": {
          "description": "Email address of the user who created this note.",
          "maxLength": 255,
          "minLength": 0,
          "pattern": "[a-zA-Z0-9_]+([-+.'][a-zA-Z0-9_]+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*",
          "type": "string"
        },
        "CreatedDate": {
          "format": "date-time",
          "description": "UTC date and time when the note was created.",
          "type": "string"
        },
        "Note": {
          "description": "Content of the note.",
          "type": "string"
        },
        "OrganizationNoteID": {
          "format": "uuid",
          "description": "ID of the note.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        }
      }
    },
    "TagObject": {
      "title": "TagObject",
      "description": "Represents a relationship between a tag and an object.",
      "required": [
        "ObjectID",
        "ObjectType",
        "TagID"
      ],
      "type": "object",
      "properties": {
        "ObjectID": {
          "format": "int32",
          "description": "The ID of the object.",
          "type": "integer"
        },
        "ObjectType": {
          "description": "The type of the object.",
          "type": "string"
        },
        "TagID": {
          "format": "int32",
          "description": "The ID of the tag.",
          "type": "integer"
        }
      }
    },
    "TagType": {
      "title": "TagType",
      "description": "Represents a tag type.",
      "required": [
        "Color",
        "Name"
      ],
      "type": "object",
      "properties": {
        "AutoApprove": {
          "description": "Defines whether tags belonging to this tag type should be automatically approved.",
          "type": "boolean"
        },
        "Color": {
          "description": "The HTML color code for the tag type.",
          "maxLength": 7,
          "minLength": 0,
          "type": "string"
        },
        "Name": {
          "description": "The name of the tag type.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "TagTypeID": {
          "format": "int32",
          "description": "The ID of the tag type.",
          "type": "integer"
        }
      }
    },
    "Template": {
      "title": "Template",
      "description": "Represents an email template.",
      "required": [
        "TemplateID",
        "Type",
        "Name",
        "Content"
      ],
      "type": "object",
      "properties": {
        "TemplateID": {
          "format": "uuid",
          "description": "The ID of the template.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "Type": {
          "description": "The type of this template.",
          "enum": [
            "Newsletter",
            "Blog",
            "Honeypot",
            "LandingPage",
            "Email",
            "CallToAction"
          ],
          "type": "string"
        },
        "Name": {
          "description": "The name of the template.",
          "maxLength": 256,
          "minLength": 0,
          "type": "string"
        },
        "Content": {
          "description": "The HTML content of the template.",
          "type": "string"
        },
        "LogoUrl": {
          "description": "The URL of the logo file.",
          "maxLength": 255,
          "minLength": 0,
          "type": "string"
        },
        "ScreenshotFileID": {
          "format": "uuid",
          "description": "The ID of the file containing the screenshot of this template.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        }
      }
    },
    "TrackingEvent": {
      "title": "TrackingEvent",
      "description": "",
      "required": [
        "TrackingEventType",
        "Url"
      ],
      "type": "object",
      "properties": {
        "IPAddress": {
          "description": "The IP address of the visitor.",
          "maxLength": 50,
          "minLength": 0,
          "type": "string"
        },
        "PageTitle": {
          "description": "The title of the page visited.",
          "maxLength": 256,
          "minLength": 0,
          "pattern": "^[^<>]*$",
          "type": "string"
        },
        "OutgoingUrl": {
          "description": "The URL to which the user went from the page.",
          "maxLength": 2048,
          "minLength": 0,
          "pattern": "^(https?|ftp|file):\\/\\/[\\-A-Za-z0-9+&@#\\/%?=~_|!:,.;]*[\\-A-Za-z0-9+&@#\\/%=~_|!‌]$",
          "type": "string"
        },
        "ReferrerType": {
          "description": "The type of the referrer.",
          "maxLength": 50,
          "minLength": 0,
          "type": "string"
        },
        "ReferrerUrl": {
          "description": "The URL of the referrer.",
          "maxLength": 2048,
          "minLength": 0,
          "pattern": "^(https?|ftp|file):\\/\\/[\\-A-Za-z0-9+&@#\\/%?=~_|!:,.;]*[\\-A-Za-z0-9+&@#\\/%=~_|!‌]$",
          "type": "string"
        },
        "SecondsOnPage": {
          "format": "int32",
          "description": "Number of seconds spent on the page.",
          "type": "integer"
        },
        "SessionID": {
          "description": "ID of the session.",
          "maxLength": 50,
          "minLength": 0,
          "pattern": "^[a-zA-Z0-9-]*$",
          "type": "string"
        },
        "TrackingCookieID": {
          "description": "ID of the tracking cookie.",
          "maxLength": 50,
          "minLength": 10,
          "pattern": "^[a-zA-Z0-9-]+$",
          "type": "string"
        },
        "TrackingEventDate": {
          "format": "date-time",
          "description": "The date of the tracking event.",
          "type": "string"
        },
        "TrackingEventID": {
          "format": "uuid",
          "description": "ID of the tracking event.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "TrackingEventType": {
          "description": "Type of the tracking event.",
          "maxLength": 50,
          "minLength": 0,
          "pattern": "^[\\w]*$",
          "type": "string"
        },
        "Url": {
          "description": "The URL where the visitor was.",
          "maxLength": 2048,
          "minLength": 0,
          "pattern": "^(https?|ftp|file):\\/\\/[\\-A-Za-z0-9+&@#\\/%?=~_|!:,.;]*[\\-A-Za-z0-9+&@#\\/%=~_|!‌]$",
          "type": "string"
        },
        "UserAgent": {
          "description": "The user agent string of the user.",
          "maxLength": 2048,
          "minLength": 0,
          "pattern": "^[\\w\\s;:\\(\\)\\.,\\-\\/\\[\\]]*$",
          "type": "string"
        },
        "ContactID": {
          "format": "uuid",
          "description": "The ID of the contact.",
          "type": "string",
          "example": "00000000-0000-0000-0000-000000000000"
        },
        "PageDescription": {
          "description": "The description of the page.",
          "type": "string"
        },
        "PageType": {
          "description": "The type of the page.",
          "type": "string"
        }
      }
    },
    "TrackingEventStatistics": {
      "title": "TrackingEventStatistics",
      "description": "",
      "type": "object",
      "properties": {
        "DailyStatistics": {
          "description": "The list of daily statistics.",
          "type": "array",
          "items": {
            "$ref": "#/definitions/TrackingEventStatisticsPerDay"
          }
        },
        "EndDate": {
          "format": "date-time",
          "description": "The end date of  the statistics.",
          "type": "string"
        },
        "NumberOfEventsTotal": {
          "format": "int32",
          "description": "The total number of events.",
          "type": "integer",
          "readOnly": true
        },
        "StartDate": {
          "format": "date-time",
          "description": "The start date of the statistics.",
          "type": "string"
        }
      }
    },
    "TrackingEventStatisticsPerDay": {
      "title": "TrackingEventStatisticsPerDay",
      "description": "Tracking event statistics per day.",
      "type": "object",
      "properties": {
        "Date": {
          "format": "date-time",
          "description": "The day of the statistics.",
          "type": "string"
        },
        "Url": {
          "description": "The URL of the page.",
          "type": "string"
        },
        "TrackingEventType": {
          "description": "The type of the tracking event.",
          "type": "string"
        },
        "NumberOfEvents": {
          "format": "int32",
          "description": "The number of events.",
          "type": "integer"
        },
        "UniqueVisitors": {
          "format": "int32",
          "description": "The number of unique visitors.",
          "type": "integer"
        }
      }
    }
  },
  "securityDefinitions": {
    "OauthSecurity": {
      "type": "oauth2",
      "description": "OAuth2 Authorization Code Grant",
      "flow": "application",
      "tokenUrl": "https://auth.loyalistic.com/oauth2/token",
      "scopes": {}
    }
  },
  "security": [
    {
      "OauthSecurity": []
    }
  ]
}