{
  "openapi" : "3.0.1",
  "info" : {
    "version" : "1.0"
  },
  "security" : [ {
    "basicAuth" : [ ]
  } ],
  "tags" : [ {
    "name" : "Contacts"
  }, {
    "name" : "Orders"
  }, {
    "name" : "Events"
  }, {
    "name" : "Messages"
  }, {
    "name" : "Behavior tracking"
  }, {
    "name" : "Account"
  }, {
    "name" : "Site"
  }, {
    "name" : "Product feed"
  }, {
    "name" : "Deprecated"
  } ],
  "paths" : {
    "/api/v1/messages/appinbox" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Search for app inbox messages",
        "description" : "The method is used to search for mobile app inbox messages using a part of the name or a tag. <br/>The method returns 500 messages maximum.<br/>The <b>TotalCount</b> header contains the number of messages returned by the query.",
        "operationId" : "searchAppInboxMessages",
        "parameters" : [ {
          "name" : "search",
          "in" : "query",
          "description" : "Search condition (a part of the message name or a tag)",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "startindex",
          "in" : "query",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 1
          }
        }, {
          "name" : "maxrows",
          "in" : "query",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 500
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/BaseAppInboxMessage"
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Messages" ],
        "summary" : "Add base app inbox message",
        "description" : "The method is used for creating basic app inbox messages.",
        "operationId" : "addAppInboxMessage",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseAppInboxMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IDResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/apps/{app_uuid}/tokens" : {
      "post" : {
        "tags" : [ "Apps" ],
        "summary" : "Add application tokens",
        "description" : "The method is used for adding application tokens.",
        "operationId" : "addAppTokens",
        "parameters" : [ {
          "name" : "app_uuid",
          "in" : "path",
          "description" : "Application ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/AppTokens"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/contact" : {
      "post" : {
        "tags" : [ "Contacts" ],
        "summary" : "Add/update a contact",
        "description" : "The method is used to add a new or update an existing contact. The ID field is ignored.<br>To learn more about importing or updating contacts and their additional fields, read <a href=\"${v1contact.post.link}\">Importing historical data</a>.",
        "operationId" : "addContact",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContactCreateRequestSchema"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IDResult"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad request"
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "405" : {
            "description" : "Method not allowed"
          },
          "409" : {
            "description" : "Conflict:<br><ul><li>Repeated request within 1 minute.</li></ul>"
          },
          "415" : {
            "description" : "Unsupported media type"
          },
          "429" : {
            "description" : "Too many requests:<br><ul><li>More than 200 requests per 1 second.</li></ul>"
          }
        }
      },
      "delete" : {
        "tags" : [ "Contacts" ],
        "summary" : "Delete contact by externalCustomerId",
        "description" : "The method is used for deleting a contact identified by externalCustomerId.",
        "operationId" : "deleteContact",
        "parameters" : [ {
          "name" : "externalCustomerId",
          "in" : "query",
          "schema" : {
            "type" : "string"
          },
          "example" : "AB12770"
        }, {
          "name" : "erase",
          "in" : "query",
          "description" : "Permanent deletion of all contact data: contact profile attributes, contact activity, web- and mobile tracking. It is not possible to recover deleted data.",
          "schema" : {
            "type" : "boolean",
            "default" : false
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "default response",
            "content" : {
              "application/json; charset=UTF-8" : { }
            }
          }
        }
      }
    },
    "/api/v1/messages/email" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Search for email messages",
        "description" : "The method is used to search for email messages using a part of their name or a tag. <br/>The method returns 500 messages maximum. <br/>The <b>TotalCount</b> header contains the number of messages returned to the query.",
        "operationId" : "searchEmails",
        "parameters" : [ {
          "name" : "search",
          "in" : "query",
          "description" : "Search condition (a part of the message name or a tag)",
          "schema" : {
            "type" : "string",
            "default" : ""
          },
          "example" : "promo"
        }, {
          "name" : "startindex",
          "in" : "query",
          "description" : "The index of the first message to return from the search result.<br/>Numbering starts at 1",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 1
          }
        }, {
          "name" : "maxrows",
          "in" : "query",
          "description" : "Maximum number of messages to return (max. 500).",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 500
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/BaseEmailMessage"
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Messages" ],
        "summary" : "Add base email message",
        "description" : "The method is used for adding/updating the language version of a message identified by the internal ID (for multilingual messages).",
        "operationId" : "addEmail",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseEmailMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IDResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/markets" : {
      "post" : {
        "tags" : [ "Products and markets" ],
        "summary" : "Add/update markets",
        "operationId" : "addMarkets",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/MarketSyncRequest"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Markets accepted",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SyncResponse"
                }
              }
            }
          },
          "207" : {
            "description" : "Markets partially accepted",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SyncResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad request"
          },
          "413" : {
            "description" : "Request entity too large"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "502" : {
            "description" : "Downstream service error"
          }
        }
      }
    },
    "/api/v1/messages/mobilepush" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Search for mobile push messages",
        "description" : "The method is used to search for mobile push messages using a part of name or a tag. <br/>The method returns 500 messages maximum.<br/>The <b>TotalCount</b> header contains the number of messages returned by the query",
        "operationId" : "searchMobPushMessages",
        "parameters" : [ {
          "name" : "search",
          "in" : "query",
          "description" : "Search condition (part of the message name or a tag)",
          "schema" : {
            "type" : "string"
          },
          "example" : "You added items to your cart"
        }, {
          "name" : "startindex",
          "in" : "query",
          "description" : "Index of the first returned message from the search results. Numbering starts at 1",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 1
          }
        }, {
          "name" : "maxrows",
          "in" : "query",
          "description" : "Maximum number of messages to return (not more than 500)",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 500
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/BaseMobilePushMessage"
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Messages" ],
        "summary" : "Add base mobile push message",
        "description" : "The method is used for creating new mobile push message",
        "operationId" : "addMobilePushMessage",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseMobilePushMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IDResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/products" : {
      "post" : {
        "tags" : [ "Products and markets" ],
        "summary" : "Add/update products",
        "operationId" : "addProducts",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ProductSyncRequest"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Products accepted",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SyncResponse"
                }
              }
            }
          },
          "207" : {
            "description" : "Products partially accepted",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SyncResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad request"
          },
          "409" : {
            "description" : "Language mismatch",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/LanguageMismatchErrorResponse"
                }
              }
            }
          },
          "413" : {
            "description" : "Request entity too large"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "502" : {
            "description" : "Downstream service error"
          }
        }
      },
      "delete" : {
        "tags" : [ "Products and markets" ],
        "summary" : "Delete products",
        "operationId" : "deleteProducts",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ProductDeleteRequest"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "Products deleted",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SyncResponse"
                }
              }
            }
          },
          "207" : {
            "description" : "Products partially deleted",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SyncResponse"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad request"
          },
          "413" : {
            "description" : "Request entity too large"
          },
          "429" : {
            "description" : "Too many requests"
          },
          "502" : {
            "description" : "Downstream service error"
          }
        }
      }
    },
    "/api/v1/messages/sms" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Search for SMS messages",
        "description" : "The method is used to search for SMS messages using a part of their names or a tag. <br/>The method returns 500 messages maximum.<br/>The <b>TotalCount</b> header contains the number of messages returned to the query",
        "operationId" : "searchSms",
        "parameters" : [ {
          "name" : "search",
          "in" : "query",
          "description" : "Search condition (a part of the message name or a tag)",
          "schema" : {
            "type" : "string"
          },
          "example" : "New arrivals"
        }, {
          "name" : "startindex",
          "in" : "query",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 1
          }
        }, {
          "name" : "maxrows",
          "in" : "query",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 500
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/BaseSmsMessage"
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Messages" ],
        "summary" : "Add base sms message",
        "description" : "The method is used for creating basic sms messages.",
        "operationId" : "addSmsMessage",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseSmsMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IDResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/messages/telegram" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Search for telegram bot messages",
        "description" : "The method is used to search for telegram bot messages using a part of name or a tag. <br/>The method returns 500 messages maximum.<br/>The <b>TotalCount</b> header contains the number of messages returned by the query",
        "operationId" : "searchTelegramBotMessages",
        "parameters" : [ {
          "name" : "search",
          "in" : "query",
          "description" : "Search condition (part of the message name or a tag)",
          "schema" : {
            "type" : "string"
          },
          "example" : "You added items to your cart"
        }, {
          "name" : "startindex",
          "in" : "query",
          "description" : "Index of the first returned message from the search results. Numbering starts at 1",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 1
          }
        }, {
          "name" : "maxrows",
          "in" : "query",
          "description" : "Maximum number of messages to return (not more than 500)",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 500
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/BaseTelegramBotMessage"
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Messages" ],
        "summary" : "Add base telegram bot message",
        "description" : "The method is used for creating basic telegram bot messages.",
        "operationId" : "addTelegramBotMessage",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseTelegramBotMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IDResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/emails/unsubscribed/add" : {
      "post" : {
        "tags" : [ "Contacts" ],
        "summary" : "Add emails to unsubscribed list",
        "description" : "The method is used for adding email addresses to the list of unsubscribed contacts.",
        "operationId" : "addToUnsubscribed",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UnsubscribeParamsDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : { }
            }
          }
        }
      }
    },
    "/api/v1/messages/viber" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Search for viber messages",
        "description" : "The method is used to search for viber messages using a part of name or a tag. <br/>The method returns 500 messages maximum.<br/>The <b>TotalCount</b> header contains the number of messages returned by the query. Carousel items are included in the response if the message contains a carousel.",
        "operationId" : "searchViberMessages",
        "parameters" : [ {
          "name" : "search",
          "in" : "query",
          "description" : "Search condition (part of the message name or a tag)",
          "schema" : {
            "type" : "string"
          },
          "example" : "You added items to your cart"
        }, {
          "name" : "startindex",
          "in" : "query",
          "description" : "Index of the first returned message from the search results. Numbering starts at 1",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 1
          }
        }, {
          "name" : "maxrows",
          "in" : "query",
          "description" : "Maximum number of messages to return (not more than 500)",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 500
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/BaseViberMessage"
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Messages" ],
        "summary" : "Add base viber message",
        "description" : "Method is used for creating base viber message. Supports carousel messages with 2-5 items containing images and buttons.",
        "operationId" : "addViberMessage",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseViberMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IDResult"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad request:<br><ul><li>Request body is empty.</li></ul><ul><li>Required field is absent: name, from, text.</li></ul><ul><li>Non-existing sender name used in message.</li></ul><ul><li>Used sender does not support specified transactional mode.</li></ul><ul><li>Not applicable field in transactional message: img, caption or action.</li></ul><ul><li>One or two of fields specified: img, caption or action; but not all three.</li></ul>"
          }
        }
      }
    },
    "/api/v1/site/webpush/domain" : {
      "post" : {
        "tags" : [ "Site" ],
        "summary" : "Add one web push domain",
        "description" : "The method is used for adding one domain for web push notifications.",
        "operationId" : "addWebPushDomain",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/WebPushDomain"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WebPushDomainsResults"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/site/webpush/domains" : {
      "get" : {
        "tags" : [ "Site" ],
        "summary" : "Get web push domains",
        "description" : "The method returns the list of domains registered for web push notifications.",
        "operationId" : "getWebPushDomains",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WebPushDomains"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Site" ],
        "summary" : "Add web push domains",
        "description" : "The method is used for adding domains for web push notifications.",
        "operationId" : "addWebPushDomains",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/WebPushDomains"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WebPushDomainsResults"
                }
              }
            }
          }
        },
        "deprecated" : true
      },
      "delete" : {
        "tags" : [ "Site" ],
        "summary" : "Delete web push domain",
        "description" : "The method is used for deleting a domain for web push notifications.",
        "operationId" : "deleteWebPushDomain",
        "parameters" : [ {
          "name" : "domain",
          "in" : "query",
          "description" : "Domain to remove",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Web push domain was deleted",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "404" : {
            "description" : "Web push domain not found",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/group/{id}/contacts/attach" : {
      "post" : {
        "tags" : [ "Contacts" ],
        "summary" : "Attach contact to static segment",
        "description" : "Attach contact to static segment by contact ids or external customer ids",
        "operationId" : "attachContactsToGroup",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ModifyContactsInGroup"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/contact/{id}/subscriptions" : {
      "get" : {
        "tags" : [ "Contacts" ],
        "summary" : "Get contact subscriptions",
        "description" : "The method is used for getting the names of categories a contact subscribed for.",
        "operationId" : "getContactSubscriptionCategories",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Contact ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 1234567890
        } ],
        "responses" : {
          "200" : {
            "description" : "Subscription category",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContactSubscriptionCategoryDto"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "Contacts" ],
        "summary" : "Update contact subscriptions",
        "description" : "The method is used for updating the categories that a contact subscribed for.",
        "operationId" : "changeContactSubscriptionCategories",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Contact ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 1234567890
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContactSubscriptionCategoryUpsertRequest"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/contact/token/activated/{app_uuid}/{token_id}" : {
      "get" : {
        "tags" : [ "Behavior tracking" ],
        "summary" : "Get token activity",
        "description" : "The method returns activity status of the mobile token: {\"active\":true} or {\"active\":false}.",
        "operationId" : "getTokenActivated",
        "parameters" : [ {
          "name" : "token_id",
          "in" : "path",
          "description" : "Token ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "0373a4ab1c37447eb0b30bc47a4f492c426af47cdc81be43a1e8455355ea87b0"
        }, {
          "name" : "app_uuid",
          "in" : "path",
          "description" : "Application ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "83b77a49-fc28-409b-aeaa-68c9d544ab9d"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TokenPushActive"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "Behavior tracking" ],
        "summary" : "Change token activity",
        "description" : "The method is used for changing activity status of the mobile token.",
        "operationId" : "changeTokenActivated",
        "parameters" : [ {
          "name" : "token_id",
          "in" : "path",
          "description" : "Token ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "0373a4ab1c37447eb0b30bc47a4f492c426af47cdc81be43a1e8455355ea87b0"
        }, {
          "name" : "app_uuid",
          "in" : "path",
          "description" : "Application ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "83b77a49-fc28-409b-aeaa-68c9d544ab9d"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/TokenPushActive"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/TokenPushActive"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/products/config" : {
      "get" : {
        "tags" : [ "Product feed" ],
        "summary" : "Get product feeds configuration",
        "operationId" : "getProductFeedsConfiguration",
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ProductFeeds"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Product feed" ],
        "summary" : "Configure product feeds",
        "operationId" : "configureProductFeeds",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ProductFeeds"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/contacts" : {
      "get" : {
        "tags" : [ "Contacts" ],
        "summary" : "Search for contacts",
        "description" : "<br>Search for contacts. The method returns max 500 results.<br> The total amount of contacts is in the <b>TotalCount</b> header.",
        "operationId" : "searchContacts",
        "parameters" : [ {
          "name" : "externalCustomerId",
          "in" : "query",
          "description" : "External contact ID",
          "schema" : {
            "type" : "string"
          },
          "example" : 1234509876
        }, {
          "name" : "email",
          "in" : "query",
          "description" : "Contact's email address",
          "schema" : {
            "type" : "string"
          },
          "example" : "example@email.com"
        }, {
          "name" : "sms",
          "in" : "query",
          "description" : "Contact's phone number",
          "schema" : {
            "type" : "string"
          },
          "example" : 3801111111111
        }, {
          "name" : "firstname",
          "in" : "query",
          "description" : "Contact first name",
          "schema" : {
            "type" : "string"
          },
          "example" : "John"
        }, {
          "name" : "lastname",
          "in" : "query",
          "description" : "Contact last name",
          "schema" : {
            "type" : "string"
          },
          "example" : "Smith"
        }, {
          "name" : "startindex",
          "in" : "query",
          "description" : "The number of the first contact returned in the search results.<br/>Numbering starts at 1",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 1
          }
        }, {
          "name" : "maxrows",
          "in" : "query",
          "description" : "Maximum number of returned contacts (max 500)",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 500
          }
        }, {
          "name" : "sortBy",
          "in" : "query",
          "description" : "Possible value is 'contactId'. Only actual for searches without conditions. By default, the date of contact update is used for the search.<br>If this parameter is used, sorting is done by contactId. Using this parameter allows you to upload contacts faster.",
          "schema" : {
            "type" : "string"
          },
          "example" : "contactId"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/BaseContact"
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Contacts" ],
        "summary" : "Add/update contacts",
        "description" : "The method adds new contacts and updates existing contacts.",
        "operationId" : "contactsBulkUpdate",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContactsBulkUpdate"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContactBulkUpdateResult"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad request"
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "405" : {
            "description" : "Method not allowed"
          },
          "415" : {
            "description" : "Unsupported media type"
          },
          "429" : {
            "description" : "Too many requests: More than 200 requests per 1 second"
          }
        }
      }
    },
    "/api/v1/broadcast" : {
      "post" : {
        "tags" : [ "Messages" ],
        "summary" : "Create broadcast",
        "description" : "The method is used for creating broadcasts for Email, SMS, Mobile Push, Web Push, Viber, Telegram channels.",
        "operationId" : "createBroadcast",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/NewBroadcastRequest"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BroadcastView"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/site/domains" : {
      "get" : {
        "tags" : [ "Site" ],
        "summary" : "Get domain",
        "description" : "The method returns your organization's domain. The response is empty if no domain is found.",
        "operationId" : "getDomains",
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Domain"
                  }
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Site" ],
        "summary" : "Add domain",
        "description" : "The method registers the domain sent in the body params for use in web tracking or widgets.<br>Only one domain can be registered per organization.",
        "operationId" : "createDomain",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/DomainCreationRequest"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK<br>Domain already exists",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainCreationResult"
                }
              }
            }
          },
          "201" : {
            "description" : "Created<br>Domain created",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/DomainCreationResult"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad request<br>Invalid domain name"
          },
          "404" : {
            "description" : "Not found"
          }
        }
      }
    },
    "/api/v1/messages/appinbox/{id}" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Get the app inbox message",
        "description" : "The method returns the app inbox message found using its ID.",
        "operationId" : "getAppInboxMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "App inbox message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 3894567
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BaseAppInboxMessage"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "Messages" ],
        "summary" : "Update the base app inbox message",
        "description" : "The method is used for updating the base app inbox message.",
        "operationId" : "updateBaseAppInboxMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "App inbox message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 1234567
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseAppInboxMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Messages" ],
        "summary" : "Delete app inbox message",
        "description" : "The method is used for deleting the base app inbox message.",
        "operationId" : "deleteAppInboxMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "App inbox message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 1234567
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/broadcast/{broadcast_id}" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Get broadcast info",
        "description" : "The method is used for getting broadcast information.",
        "operationId" : "getBroadcast",
        "parameters" : [ {
          "name" : "broadcast_id",
          "in" : "path",
          "description" : "Broadcast ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 3459207
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BroadcastView"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Messages" ],
        "summary" : "Cancel scheduled broadcast",
        "description" : "The method is used for cancelling a scheduled broadcast.",
        "operationId" : "deleteBroadcast",
        "parameters" : [ {
          "name" : "broadcast_id",
          "in" : "path",
          "description" : "Broadcast ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 3459207
        } ],
        "responses" : {
          "200" : {
            "description" : "default response",
            "content" : {
              "application/json; charset=UTF-8" : { }
            }
          }
        }
      }
    },
    "/api/v1/contact/{id}" : {
      "get" : {
        "tags" : [ "Contacts" ],
        "summary" : "Get contact",
        "description" : "The method returns the available information about the contact identified by the contact ID.",
        "operationId" : "getContact",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 12345678
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Contact"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "Contacts" ],
        "summary" : "Update contact",
        "description" : "The method is used to update the contact's data, except for the contact ID field.<br>In case of updating a deleted contact, this contact is restored.",
        "operationId" : "updateContact",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Contact ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 1234567890
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ContactUpdateRequestSchema"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad request"
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "405" : {
            "description" : "Method not allowed"
          },
          "409" : {
            "description" : "Conflict:<br><ul><li>Repeated request within 1 minute.</li></ul>"
          },
          "415" : {
            "description" : "Unsupported media type"
          },
          "429" : {
            "description" : "Too many requests:<br><ul><li>More than 200 requests per 1 second.</li></ul>"
          }
        }
      },
      "delete" : {
        "tags" : [ "Contacts" ],
        "summary" : "Delete contact",
        "description" : "The method is used for deleting a contact identified by contactID.",
        "operationId" : "deleteContact_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Contact ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 1234567890
        }, {
          "name" : "erase",
          "in" : "query",
          "description" : "Permanent deletion of all contact's data: contact profile attributes, contact activity, web- and mobile tracking. It is not possible to recover the deleted data.",
          "schema" : {
            "type" : "boolean",
            "default" : false
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/messages/email/{id}" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Get email message",
        "description" : "The method returns the content, title, and sender details of a message identified by the internal ID – html and css separately.",
        "operationId" : "getEmail",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Email message id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 2345678
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BaseEmailMessage"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "Messages" ],
        "summary" : "Update basic email message",
        "description" : "The method is used for updating the basic email message.",
        "operationId" : "updateMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Email message id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 2345678
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseEmailMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Messages" ],
        "summary" : "Delete basic email message",
        "description" : "The method is used for deleting the basic email message.",
        "operationId" : "deleteEmail",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Email message id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 2345678
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/messages/email/{id}/{language}" : {
      "put" : {
        "tags" : [ "Messages" ],
        "summary" : "Update translated email message",
        "description" : "The method is used for updating translation of the basic email message.",
        "operationId" : "updateMessage_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Email message id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 2345678
        }, {
          "name" : "language",
          "in" : "path",
          "description" : "Email message language code<br/>\nIn compliance with <a href=\"https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\">ISO_639-1</a>",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "en"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseEmailMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Messages" ],
        "summary" : "Delete translated email message",
        "description" : "The method is used for deleting the translation of the basic email message.",
        "operationId" : "deleteEmail_1",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Email message id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 2345678
        }, {
          "name" : "language",
          "in" : "path",
          "description" : "Email message language code \nin compliance with <a href=\"https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes\">ISO_639-1</a>",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "en"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/emails/unsubscribed/delete" : {
      "post" : {
        "tags" : [ "Contacts" ],
        "summary" : "Remove emails from unsubscribed list",
        "description" : "The method is used for removing email addresses from the list of unsubscribed contacts.",
        "operationId" : "deleteFromUnsubscribed",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UnsubscribeParamsDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "default response",
            "content" : {
              "application/json; charset=UTF-8" : { }
            }
          }
        }
      }
    },
    "/api/v1/messages/mobilepush/{id}" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Get a mobile push message",
        "description" : "The method returns mobile push message including language versions",
        "operationId" : "getMobilePushMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Mobile push message id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 2345678
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BaseMobilePushMessage"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "Messages" ],
        "summary" : "Update base mobile push message",
        "description" : "The method is used for updating the base mobile push message",
        "operationId" : "updateBaseMobPushMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Mobile push message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 3017890
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseMobilePushMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Messages" ],
        "summary" : "Delete base mobile push message",
        "description" : "The method is used for deleting the base mobile push message",
        "operationId" : "deleteMobilePushMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Mobile push message id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 2345678
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/messages/sms/{id}" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Get SMS message",
        "description" : "The method returns content, title, sender and text of an SMS identified by its internal SMS message ID.",
        "operationId" : "getSms",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "SMS message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 3456789
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BaseSmsMessage"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "Messages" ],
        "summary" : "Update base sms message",
        "description" : "The method is used for updating the base sms message",
        "operationId" : "updateBaseSmsMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Sms message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 3017890
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseSmsMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Messages" ],
        "summary" : "Delete sms message",
        "description" : "The method is used for deleting the base sms message.",
        "operationId" : "deleteSmsMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Sms message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 1234567
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/messages/telegram/{id}" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Get the telegram bot message",
        "description" : "The method returns the telegram bot message found using its ID.",
        "operationId" : "getTelegramBotMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Telegram bot message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 3894567
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BaseTelegramBotMessage"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "Messages" ],
        "summary" : "Update base telegram bot message",
        "description" : "The method is used for updating the base telegram bot message",
        "operationId" : "updateBaseTelegramBotMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Telegram bot message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 3017890
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseTelegramBotMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Messages" ],
        "summary" : "Delete telegram bot message",
        "description" : "The method is used for deleting the base telegram bot message.",
        "operationId" : "deleteTelegramBotMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Telegram bot message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 1234567
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/messages/appinbox/{id}/{language}" : {
      "put" : {
        "tags" : [ "Messages" ],
        "summary" : "Update language version of app inbox message",
        "description" : "The method is used for updating the language version of the app inbox message.",
        "operationId" : "updateTranslatedAppInboxMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "App inbox message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 1234567
        }, {
          "name" : "language",
          "in" : "path",
          "description" : "App inbox message language code",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "uk"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseAppInboxMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Messages" ],
        "summary" : "Delete translated app inbox message",
        "description" : "The method is used for deleting the language version of the basic app inbox message.",
        "operationId" : "deleteTranslatedAppInboxMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "App inbox message id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 2345678
        }, {
          "name" : "language",
          "in" : "path",
          "description" : "App inbox message language code",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "en"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/messages/mobilepush/{id}/{language}" : {
      "put" : {
        "tags" : [ "Messages" ],
        "summary" : "Update translated mobile push message",
        "description" : "The method is used for updating the language version of mobile push message",
        "operationId" : "updateTranslatedMobilePushMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Mobile push message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 3017890
        }, {
          "name" : "language",
          "in" : "path",
          "description" : "Language code",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "uk"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseMobilePushMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Messages" ],
        "summary" : "Delete language version of mobile push message",
        "description" : "The method is used for deleting the language version of the base mobile push message",
        "operationId" : "deleteTranslatedMobilePushMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Mobile push message id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 2345678
        }, {
          "name" : "language",
          "in" : "path",
          "description" : "Mobile push message language code",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "en"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/messages/sms/{id}/{language}" : {
      "put" : {
        "tags" : [ "Messages" ],
        "summary" : "Update translated sms message",
        "description" : "The method is used for updating the language version of sms message",
        "operationId" : "updateTranslateSmsMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Sms message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 3017890
        }, {
          "name" : "language",
          "in" : "path",
          "description" : "Language code",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "uk"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseSmsMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Messages" ],
        "summary" : "Delete translated sms message",
        "description" : "The method is used for deleting the language version of the basic sms message.",
        "operationId" : "deleteTranslatedSmsMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Sms message id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 2345678
        }, {
          "name" : "language",
          "in" : "path",
          "description" : "Sms message language code",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "en"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/messages/telegram/{id}/{language}" : {
      "put" : {
        "tags" : [ "Messages" ],
        "summary" : "Update translated telegram bot message",
        "description" : "The method is used for updating the language version of telegram bot message",
        "operationId" : "updateTranslatedTelegramBotMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Telegram bot message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 3017890
        }, {
          "name" : "language",
          "in" : "path",
          "description" : "Language code",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "uk"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseTelegramBotMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Messages" ],
        "summary" : "Delete translated telegram bot message",
        "description" : "The method is used for deleting the language version of the basic telegram bot message.",
        "operationId" : "deleteTranslatedTelegramBotMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Telegram bot message id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 2345678
        }, {
          "name" : "language",
          "in" : "path",
          "description" : "Telegram bot message language code",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "en"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/messages/viber/{id}/{language}" : {
      "put" : {
        "tags" : [ "Messages" ],
        "summary" : "Update translated viber message",
        "description" : "Method is used for updating language version of base viber message. Supports carousel messages with 2-5 items containing images and buttons.",
        "operationId" : "updateTranslateViberMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Viber message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 3017890
        }, {
          "name" : "language",
          "in" : "path",
          "description" : "Language code",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "uk"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseViberMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "delete" : {
        "tags" : [ "Messages" ],
        "summary" : "Delete translated viber message",
        "description" : "Method is used for deleting language version of base viber message.",
        "operationId" : "deleteTranslatedViberMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Viber message id",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 2345678
        }, {
          "name" : "language",
          "in" : "path",
          "description" : "Viber message language code",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "en"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/messages/viber/{id}" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Get the viber message",
        "description" : "Method returns viber message found by ID. If the message contains a carousel, the carouselItems array will be included in the response.",
        "operationId" : "getViberMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Viber message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 3894567
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BaseViberMessage"
                }
              }
            }
          }
        }
      },
      "put" : {
        "tags" : [ "Messages" ],
        "summary" : "Update base viber message",
        "description" : "Method is used for updating base viber message. Supports carousel messages with 2-5 items containing images and buttons.",
        "operationId" : "updateBaseViberMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Viber message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 3017890
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BaseViberMessage"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad request:<br><ul><li>Request body is empty.</li></ul><ul><li>Required field is absent: name, from, text.</li></ul><ul><li>Non-existing sender name used in message.</li></ul><ul><li>Used sender does not support specified transactional mode.</li></ul><ul><li>Not applicable field in transactional message: img, caption or action.</li></ul><ul><li>One or two of fields specified: img, caption or action; but not all three.</li></ul>"
          }
        }
      },
      "delete" : {
        "tags" : [ "Messages" ],
        "summary" : "Delete viber message",
        "description" : "Method is used for deleting base viber message.",
        "operationId" : "deleteViberMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Viber message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 1234567
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/group/{id}/contacts/detach" : {
      "post" : {
        "tags" : [ "Contacts" ],
        "summary" : "Delete from static segment",
        "description" : "The method deletes contacts from a static segment by contact ids or external customer ids. If don't specify any ids, all contacts will be deleted from the segment.",
        "operationId" : "detachContactsFromGroup",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Segment ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 1234567890
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ModifyContactsInGroup"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/contacts/upload" : {
      "post" : {
        "tags" : [ "Contacts" ],
        "summary" : "Add/update contacts from external file",
        "description" : "The method is used to import or update the contacts from an external file. The method creates new contacts and updates existing ones.",
        "operationId" : "fileContactsBulkUpdate",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/FileContactsBulkUpdate"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FileValidationResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/broadcasts" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Get broadcasts",
        "description" : "The method is used for getting a list of broadcasts.",
        "operationId" : "findBroadcasts",
        "parameters" : [ {
          "name" : "startindex",
          "in" : "query",
          "description" : "Index of the first message to return from search results <br/>Numbering starts at 1",
          "schema" : {
            "type" : "integer",
            "format" : "int64",
            "default" : 1
          }
        }, {
          "name" : "maxrows",
          "in" : "query",
          "description" : "Maximum number of messages to return (maximum 500)",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 10
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/BroadcastView"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/auth/token" : {
      "post" : {
        "tags" : [ "Events" ],
        "summary" : "Generate API token",
        "description" : "The method is used for generating a token for bearer authentication. Use the token only if the basic authentication is not appropriate for you.<br>Available methods for token authorization:<br><i>POST /v1/event</i><br/><i>POST /v1/past_events</i><br/><i>DELETE /v1/past_events</i><br/>",
        "operationId" : "generateApiKey",
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/account/info" : {
      "get" : {
        "tags" : [ "Account" ],
        "summary" : "Get account info",
        "description" : "The method returns the account name.",
        "operationId" : "getAccountInfo",
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AccountInfo"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/additionalfields" : {
      "get" : {
        "tags" : [ "Contacts" ],
        "summary" : "Get additional fields",
        "description" : "The method returns contact additional fields grouped into lists, including field keys, field types, allowed values, and validation metadata.",
        "operationId" : "getAdditionalFields",
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AdditionalFields"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/addressbooks" : {
      "get" : {
        "tags" : [ "Contacts" ],
        "summary" : "Get the list of catalogs",
        "description" : "The method returns a list of catalogs. A catalog contains the list of additional fields available for contacts in your organisation.",
        "operationId" : "getAddressBooks",
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/AddressBooks"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/contacts/email" : {
      "get" : {
        "tags" : [ "Contacts" ],
        "summary" : "Get email by contactID",
        "description" : "The method is used for getting the email addresses of contacts by their contactID.",
        "operationId" : "getContactEmails",
        "parameters" : [ {
          "name" : "ids",
          "in" : "query",
          "description" : "Comma separated contact IDs to get email addresses for",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "1234567890, 2345678901, 3456789012"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContactEmails"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/contact/token/{app_uuid}/{token_id}/contactId" : {
      "get" : {
        "tags" : [ "Contacts" ],
        "summary" : "Get contact ID by token",
        "description" : "The method is used for getting the ID of a contact using the token ID.",
        "operationId" : "getContactIdByToken",
        "parameters" : [ {
          "name" : "app_uuid",
          "in" : "path",
          "description" : "Application ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "83b77a49-fc28-409b-aeaa-68c9d544ab9d"
        }, {
          "name" : "token_id",
          "in" : "path",
          "description" : "Token ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "0373a4ab1c37447eb0b30bc47a4f492c426af47cdc81be43a1e8455355ea87b0"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/IDResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/interfaces/email" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Get email interfaces",
        "description" : "The method is used for getting email interfaces (sender names).",
        "operationId" : "getEmailInterfaces",
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/InterfaceDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/messages/email/{id}/viewLink" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Get email message view link",
        "description" : "The method is used for getting a link to view the email message.",
        "operationId" : "getEmailMessageViewLink",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Message ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : 3243775
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/MessageViewInBrowserLink"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/group/{id}/contacts" : {
      "get" : {
        "tags" : [ "Contacts" ],
        "summary" : "Get contacts from a segment",
        "description" : "The method is used to search for all contacts in a segment.",
        "operationId" : "getGroupContacts",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Segment ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 201403567
        }, {
          "name" : "startindex",
          "in" : "query",
          "description" : "The index of the first contact returned from the search result.<br/>Numbering starts at 1",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 1
          }
        }, {
          "name" : "maxrows",
          "in" : "query",
          "description" : "Maximum number of contacts to return (max. 500)",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 500
          }
        }, {
          "name" : "orderByTs",
          "in" : "query",
          "description" : "Order by the time of addition to the segment.",
          "schema" : {
            "type" : "boolean",
            "default" : false
          }
        }, {
          "name" : "asc",
          "in" : "query",
          "description" : "Sort in ascending (ASC) or descending (DESC) order.",
          "schema" : {
            "type" : "boolean",
            "default" : true
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Contact"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/importstatus/{sessionId}" : {
      "get" : {
        "tags" : [ "Contacts" ],
        "summary" : "Get contact import status",
        "description" : "The method is used for getting the status of the contact import session by the asynchronous ID of the session.",
        "operationId" : "getImportSessionStatus",
        "parameters" : [ {
          "name" : "sessionId",
          "in" : "path",
          "description" : "Async session identifier",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "abc23456789"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ImportSessionStatus"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/message/status" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Get single message status",
        "description" : "The method is used for getting the status of a single message.",
        "operationId" : "getInstantMessagesStatus",
        "parameters" : [ {
          "name" : "ids",
          "in" : "query",
          "description" : "ID of sent message. This field is present if message was successfully queued for sending.",
          "schema" : {
            "type" : "string"
          },
          "example" : "2345678,2456789,2144567"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/InstantMessagesStatusDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/balance/history" : {
      "get" : {
        "tags" : [ "Account" ],
        "summary" : "Get organization billing history",
        "description" : "The method returns the billing history of the account.",
        "operationId" : "getOrganisationBalanceHistory",
        "parameters" : [ {
          "name" : "dateFrom",
          "in" : "query",
          "description" : "The initial date for the billing history. The date values are passed in the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO_8061</a> format.<br>\nDate format: YYYY-MM-DD<br>\n",
          "schema" : {
            "type" : "string",
            "default" : "Beginning of today"
          }
        }, {
          "name" : "dateTo",
          "in" : "query",
          "description" : "The end date for the billing history. The date values are passed in the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO_8061</a> format.<br>\nDate format: YYYY-MM-DD<br>\n",
          "schema" : {
            "type" : "string",
            "default" : "Now"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/BillingHistory"
                }
              }
            }
          },
          "400" : {
            "description" : "dateTo must be greater or equal to dateFrom"
          },
          "419" : {
            "description" : "Request period must be not greater than 90 days"
          }
        }
      }
    },
    "/api/v1/promocodes" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Get promotional codes",
        "description" : "The method returns a list of all available promotional codes as JSON string.",
        "operationId" : "getPromocodes",
        "parameters" : [ {
          "name" : "type",
          "in" : "query",
          "description" : "Promo code type",
          "schema" : {
            "type" : "string"
          },
          "example" : "Free Gift with Purchase"
        }, {
          "name" : "inUse",
          "in" : "query",
          "description" : "When 'true', the promo code has been used, when 'false', the promo code has not been used",
          "schema" : {
            "type" : "boolean"
          }
        }, {
          "name" : "activeDueDays",
          "in" : "query",
          "description" : "The days left for promo codes to remain active<br/>(activeDueDays=7 means: the promo code remains active for the following 7 days, starting from tomorrow)",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 14
        }, {
          "name" : "discount",
          "in" : "query",
          "description" : "Discount received with the promo code",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 15
        } ],
        "responses" : {
          "200" : {
            "description" : "Promocodes list as json string",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      },
      "post" : {
        "tags" : [ "Messages" ],
        "summary" : "Upload promotional codes",
        "description" : "Upload promo codes from CSV or JSON.<br/>Existing promotional codes are updated.",
        "operationId" : "insertPromoCodes",
        "parameters" : [ {
          "name" : "expirationDate",
          "in" : "query",
          "description" : "Promo code expiration date. Used only for file upload",
          "schema" : {
            "type" : "string"
          },
          "example" : "2023-12-15T20:15"
        }, {
          "name" : "discount",
          "in" : "query",
          "description" : "Discount amount. Used only for file upload",
          "schema" : {
            "type" : "string"
          },
          "example" : 10
        }, {
          "name" : "type",
          "in" : "query",
          "description" : "Promo code type. Used only for file upload",
          "schema" : {
            "type" : "string"
          },
          "example" : "type1"
        }, {
          "name" : "inUse",
          "in" : "query",
          "description" : "Is promo code in use. Used only for file upload",
          "schema" : {
            "type" : "boolean",
            "default" : false
          }
        } ],
        "requestBody" : {
          "content" : {
            "multipart/form-data" : {
              "schema" : {
                "$ref" : "#/components/schemas/PromoCodesCsvRequest"
              }
            },
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PromocodesPayloadDto"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "description" : "default response",
            "content" : {
              "application/json; charset=UTF-8" : { }
            }
          }
        }
      }
    },
    "/api/v1/promocodes/count" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Get the number of available promotional codes",
        "description" : "The method returns the number of available promo codes.",
        "operationId" : "getPromocodesCount",
        "parameters" : [ {
          "name" : "type",
          "in" : "query",
          "description" : "Promo code type",
          "schema" : {
            "type" : "string"
          },
          "example" : "type1"
        }, {
          "name" : "activeDueDays",
          "in" : "query",
          "description" : "The number of days left for the promo codes to remain active<br/>(activeDueDays=7 means the promo code remains active during the next 7 days, starting from tomorrow)",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 7
        }, {
          "name" : "discount",
          "in" : "query",
          "description" : "Promo code discount amount",
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 14
        } ],
        "responses" : {
          "200" : {
            "description" : "default response",
            "content" : {
              "application/json; charset=UTF-8" : { }
            }
          }
        }
      }
    },
    "/api/v1/site/script" : {
      "get" : {
        "tags" : [ "Site" ],
        "summary" : "Get script",
        "description" : "The method returns the script for your account.<br>The domain must exist for an organization before getting a script.<br>It can be used for plugins that automatically install the script on the site and require the API endpoint for getting the script.",
        "operationId" : "getScript",
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "text/plain" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/interfaces/sms" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Get SMS interfaces",
        "description" : "The method is used for getting SMS interfaces (alpha names).",
        "operationId" : "getSmsInterfaces",
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/InterfaceDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/subscriptions" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Get organization subscriptions",
        "description" : "The method returns subscription categories for the organization.",
        "operationId" : "getSubscriptionCategories",
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/SubscriptionCategoryDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/balance" : {
      "get" : {
        "tags" : [ "Account" ],
        "summary" : "Get organization balance",
        "description" : "The method returns the balance for the account.",
        "operationId" : "getUserOrganisationBalance",
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/Balance"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/site/webpush/script" : {
      "get" : {
        "tags" : [ "Site" ],
        "summary" : "Get web push script",
        "description" : "The method returns the web push script for the specified domain.",
        "operationId" : "getWebPushScript",
        "parameters" : [ {
          "name" : "domain",
          "in" : "query",
          "description" : "Domain to generate script for",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "description" : "Web push script retrieved successfully",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/WebPushScript"
                }
              }
            }
          },
          "400" : {
            "description" : "Domain not found",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/apps/{app_uuid}/token/mute" : {
      "post" : {
        "tags" : [ "Apps" ],
        "summary" : "Mute application tokens",
        "description" : "The method mutes notifications to Telegram users having tokens. <a href=\"${v1appsapp_uuidtokenmute.post.link}\">Read more.</a>",
        "operationId" : "muteAppToken",
        "parameters" : [ {
          "name" : "app_uuid",
          "in" : "path",
          "description" : "Application ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/MuteToken"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad Request:<br><ul><li>Wrong app uuid</li><li>Token must be specified</li><li>Duration must be positive integer</li></ul>"
          },
          "404" : {
            "description" : "Not Found:<br><ul><li>Not registered application</li></ul>"
          }
        }
      }
    },
    "/api/v1/orders" : {
      "post" : {
        "tags" : [ "Orders" ],
        "summary" : "Add orders",
        "description" : "The method is used for transferring orders.<br/>To learn more, read <a href=\"${v1orders.post.link}\">Order Transfer Using the Generate event API Method.</a>",
        "operationId" : "ordersBulkInsert",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Orders"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FailedOrders"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad request"
          },
          "429" : {
            "description" : "Too many requests"
          }
        }
      },
      "delete" : {
        "tags" : [ "Orders" ],
        "summary" : "Delete orders",
        "description" : "This endpoint schedules an asynchronous order deletion job.<br/>Supported deletion criteria:<br/>• externalOrderId (deletes the order with the specified externalOrderId), or<br/>• from and to (deletes orders whose occurrence timestamp falls within the specified period).",
        "operationId" : "removeHistoryOrders",
        "parameters" : [ {
          "name" : "externalOrderId",
          "in" : "query",
          "description" : "ID of an order in the external system",
          "schema" : {
            "type" : "string"
          },
          "example" : "BC12345678"
        }, {
          "name" : "from",
          "in" : "query",
          "description" : "Start date (inclusively)",
          "schema" : {
            "type" : "string"
          },
          "example" : "2023-08-14T10:25"
        }, {
          "name" : "to",
          "in" : "query",
          "description" : "End date (inclusively)",
          "schema" : {
            "type" : "string"
          },
          "example" : "2023-10-12T12:33"
        } ],
        "responses" : {
          "200" : {
            "description" : "Request parameters are valid and the deletion job is accepted for processing",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad request"
          }
        }
      }
    },
    "/api/v1/preprocessor/file/{id}/status" : {
      "get" : {
        "tags" : [ "Messages" ],
        "summary" : "Get preprocessor file status",
        "description" : "The method is used for retrieving the preprocessor file uploading session status using the asynchronous session identifier.",
        "operationId" : "preprocessorFileStatus",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Async session identifier",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "01234567-89ab-cdef-0123-456789abcdef"
        } ],
        "responses" : {
          "200" : {
            "description" : "default response",
            "content" : {
              "application/json; charset=UTF-8" : { }
            }
          }
        }
      }
    },
    "/api/v1/event" : {
      "post" : {
        "tags" : [ "Events" ],
        "summary" : "Generate events v1",
        "description" : "The method is used for generating events in the account to be used for starting a workflow or being taken into account for segmentation.<br/>Max. size of content for events sent in the request body is 20 kB.<br/>To learn more, read <a href=\"${v1event.post.link}\">Order management via events.</a>",
        "operationId" : "registerEvent",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/EventDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "default response",
            "content" : {
              "application/json; charset=UTF-8" : { }
            }
          }
        },
        "deprecated" : true
      }
    },
    "/api/v1/interactions/{interaction_id}/status" : {
      "put" : {
        "tags" : [ "Messages" ],
        "summary" : "Update interaction status",
        "description" : "The method is used for receiving the status of a mobile push message using interaction_id.<br/>This ID is sent along with data in a mobile push message.<br/><b>Example:</b> \"es_interaction_id\": \"2E2E831C-486C-41F9-8E8D-BCD6B7A51A7A\".",
        "operationId" : "registerInteractionStatus",
        "parameters" : [ {
          "name" : "interaction_id",
          "in" : "path",
          "description" : "Interaction ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "2E2E831C-486C-41F9-8E8D-BCD6B7A51A7A"
        } ],
        "requestBody" : {
          "description" : "New status",
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/InteractionStatusChange"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "default response",
            "content" : {
              "application/json; charset=UTF-8" : { }
            }
          }
        }
      }
    },
    "/api/v1/past_events" : {
      "post" : {
        "tags" : [ "Events" ],
        "summary" : "Generate past events V1",
        "description" : "The method is used for transferring the available event data from your CRM or other data store to our system.<br/>The workflows are not launched for these events. You can send up to 500 events per a request.<br/><a href=\"${v1past_events.post.link}\">Learn more.</a>",
        "operationId" : "sendHistoryEvents",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BatchPastEvents"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EventsMigrationResults"
                }
              }
            }
          }
        },
        "deprecated" : true
      },
      "delete" : {
        "tags" : [ "Events" ],
        "summary" : "Delete events",
        "description" : "The method is used for deleting events occurred during selected period.",
        "operationId" : "removeHistoryEvents",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Period"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "default response",
            "content" : {
              "application/json; charset=UTF-8" : { }
            }
          }
        }
      }
    },
    "/api/v1/groups" : {
      "get" : {
        "tags" : [ "Contacts" ],
        "summary" : "Get segments",
        "description" : "The method searches for and returns the available segments.",
        "operationId" : "searchGroups",
        "parameters" : [ {
          "name" : "name",
          "in" : "query",
          "schema" : {
            "type" : "string"
          },
          "example" : "my segment"
        }, {
          "name" : "startindex",
          "in" : "query",
          "description" : "The index of the first segment returned from the search result.<br/>Numbering starts at 1",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 1
          }
        }, {
          "name" : "maxrows",
          "in" : "query",
          "description" : "Maximum number of segments to be returned (max. 500)",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 500
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/GroupDto"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/workflows" : {
      "get" : {
        "tags" : [ "Contacts" ],
        "summary" : "Get workflows",
        "description" : "The method searches for and returns the available workflows.",
        "operationId" : "searchWorkflows",
        "parameters" : [ {
          "name" : "name",
          "in" : "query",
          "schema" : {
            "type" : "string"
          },
          "example" : "my workflow"
        }, {
          "name" : "startindex",
          "in" : "query",
          "description" : "The index of the first workflow returned from the search result.<br/>Numbering starts at 1",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 1
          }
        }, {
          "name" : "maxrows",
          "in" : "query",
          "description" : "Maximum number of workflows to be returned (max. 500)",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 500
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/Workflow"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/message/email" : {
      "post" : {
        "tags" : [ "Messages" ],
        "summary" : "Send email message",
        "description" : "The method is used for sending an email message to a contact. A new contact is created if no contact with such email address exists.",
        "operationId" : "sendEmail",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/OutgoingEmail"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SendMessageResultsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/message/{id}/smartsend" : {
      "post" : {
        "tags" : [ "Messages" ],
        "summary" : "Send prepared message",
        "description" : "The method is used for sending a prepared message to one or many contacts. You can create broadcasts for Email, SMS, Mobile Push, Web Push, Viber, Telegram Bot channels.<br/>You can parametrize the message for each contact individually.",
        "operationId" : "sendExtendedPreparedMessage",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "Message ID",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 2345678
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/ExtendedPreparedMessageParameters"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SendMessageResultsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/message/sms" : {
      "post" : {
        "tags" : [ "Messages" ],
        "summary" : "Send SMS message",
        "description" : "The method is used for sending an SMS message to a contact. A new contact is created if no contact with such phone number exists.",
        "operationId" : "sendSMS",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/OutgoingSMS"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SendMessageResultsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/message/viber" : {
      "post" : {
        "tags" : [ "Messages" ],
        "summary" : "Send Viber message",
        "description" : "The method is used for sending a Viber message to a contact. A new contact is created if no contact with such phone number exists. Supports carousel messages with 2-5 items containing images and buttons.",
        "operationId" : "sendViber",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/OutgoingViber"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/SendMessageResultsDto"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/contact/subscribe" : {
      "post" : {
        "tags" : [ "Contacts" ],
        "summary" : "Subscribe a contact",
        "description" : "The method is used for <a href=\"${v1contactsubscribe.post.link}\">the integration of subscription forms</a>.<br/>If a contact does not exist, it is created with the non-confirmed email.<br/>If a contact exists, the contact fields are updated (except existing media channels).<br/>New contacts are created with a <b>not confirmed</b> status.<br/>",
        "operationId" : "subscribeContact",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/SubscribeContact"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ContactSubscriptionResult"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad request"
          },
          "401" : {
            "description" : "Unauthorized"
          },
          "405" : {
            "description" : "Method not allowed"
          },
          "409" : {
            "description" : "Conflict:<br><ul><li>Repeated request within 1 minute.</li></ul>"
          },
          "415" : {
            "description" : "Unsupported media type"
          },
          "429" : {
            "description" : "Too many requests:<br><ul><li>More than 200 requests per 1 second.</li></ul>"
          }
        }
      }
    },
    "/api/v1/apps/{app_uuid}/token/unmute" : {
      "post" : {
        "tags" : [ "Apps" ],
        "summary" : "Unmute application tokens",
        "description" : "The method unmutes notifications to Telegram users having tokens. <a href=\"${v1appsapp_uuidtokenunmute.post.link}\">Read more.</a>",
        "operationId" : "unmuteAppToken",
        "parameters" : [ {
          "name" : "app_uuid",
          "in" : "path",
          "description" : "Application ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/UnmuteToken"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "OK",
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "string"
                }
              }
            }
          },
          "400" : {
            "description" : "Bad Request:<br><ul><li>Wrong app uuid</li><li>Token must be specified</li></ul>"
          },
          "404" : {
            "description" : "Not Found:<br><ul><li>Not registered application</li></ul>"
          }
        }
      }
    },
    "/api/v1/preprocessor/file/{id}" : {
      "post" : {
        "tags" : [ "Messages" ],
        "summary" : "Update file for preprocessor",
        "description" : "The methods updates the data of a preprocessor file uploaded using the Upload file for preprocessor method.<br/>To update the file, use the <b>fileId</b> value returned by the <a href=\"${v1preprocessorfileid.post.link}\">Upload file for preprocessor</a> method in its response.",
        "operationId" : "updatePreprocessorFile",
        "parameters" : [ {
          "name" : "id",
          "in" : "path",
          "description" : "File ID",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "YOUR_FILE_ID"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PreProcessorFileUpdateRequest"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/PreprocessorFileUpdateResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/preprocessor/file/upload" : {
      "post" : {
        "tags" : [ "Messages" ],
        "summary" : "Upload file for preprocessor",
        "description" : "The method is used for uploading a file for the preprocessor from an external repository.",
        "operationId" : "uploadPreprocessorFile",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/PreProcessorDto"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/FileValidationResult"
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/contacts/activity" : {
      "get" : {
        "tags" : [ "Behavior tracking" ],
        "summary" : "Get contacts activity",
        "description" : "The method returns the contact activity on subscriptions.",
        "operationId" : "contactActivity",
        "parameters" : [ {
          "name" : "dateFrom",
          "in" : "query",
          "description" : "Initial date and time of the period you want to get the contact activity for",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "2023-07-20"
        }, {
          "name" : "dateTo",
          "in" : "query",
          "description" : "Final date and time of the period you want to get the contact activity for",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "2023-10-12"
        }, {
          "name" : "email",
          "in" : "query",
          "description" : "Email address",
          "schema" : {
            "type" : "string"
          },
          "example" : "John.Black@mail.com"
        }, {
          "name" : "sms",
          "in" : "query",
          "description" : "Contact's phone number",
          "schema" : {
            "type" : "string"
          },
          "example" : "+12345678900"
        }, {
          "name" : "webPushToken",
          "in" : "query",
          "description" : "Web Push token",
          "schema" : {
            "type" : "string"
          },
          "example" : "0383a4ab1c38448eb0b30bc48a4f492c426af48cdc71be43a1e7455355ea78b0"
        }, {
          "name" : "mobPushToken",
          "in" : "query",
          "description" : "Mob Push token",
          "schema" : {
            "type" : "string"
          },
          "example" : "1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p7q8r9s0"
        }, {
          "name" : "telegramToken",
          "in" : "query",
          "description" : "Telegram token",
          "schema" : {
            "type" : "string"
          },
          "example" : 370558601
        }, {
          "name" : "messageTag",
          "in" : "query",
          "description" : "Message tag",
          "schema" : {
            "type" : "string"
          },
          "example" : "Discount"
        }, {
          "name" : "activityStatus",
          "in" : "query",
          "description" : "Activity status (DELIVERED, UNDELIVERED, READ, UNSUBSCRIBED, CLICKED, SPAM)",
          "schema" : {
            "type" : "string",
            "enum" : [ "DELIVERED", "UNDELIVERED", "READ", "UNSUBSCRIBED", "CLICKED", "SPAM" ]
          }
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Last found contact activity offset in previous search results. It is used to continue search",
          "schema" : {
            "type" : "string"
          },
          "example" : "766111100-5cb2-11ee-aa11-1f2b981c5833"
        }, {
          "name" : "maxrows",
          "in" : "query",
          "description" : "Max number of activity entries in response",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 25000
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ContactActivity"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/contacts/messages" : {
      "get" : {
        "tags" : [ "Behavior tracking" ],
        "summary" : "Get contact's message history",
        "description" : "The method returns the contact's message history.<br/>Supported media types: Email, SMS, Viber, Mobile Push, Web Push, App Inbox, Telegram.",
        "operationId" : "contactMessages",
        "parameters" : [ {
          "name" : "dateFrom",
          "in" : "query",
          "description" : "The initial date or date and time of the history period. The date/time values are passed in the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO_8061</a> format.<br>\nDate format: YYYY-MM-DD<br>\nDate with time format: YYYY-MM-DDTHH:mm",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "2023-08-14"
        }, {
          "name" : "dateTo",
          "in" : "query",
          "description" : "The final date or date amd time of the history period. The date/time values are passed in the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO_8061</a> format.<br>\nDate format: YYYY-MM-DD<br>\nDate with time format: YYYY-MM-DDTHH:mm",
          "required" : true,
          "schema" : {
            "type" : "string"
          },
          "example" : "2023-10-12"
        }, {
          "name" : "email",
          "in" : "query",
          "description" : "Contact's email address (either contactId, or externalCustomerId, or email, or phone number must be specified)",
          "schema" : {
            "type" : "string"
          },
          "example" : "John@yourcompany.com"
        }, {
          "name" : "phone",
          "in" : "query",
          "description" : "Contact's phone number (either contactId, or externalCustomerId, or email, or phone number must be specified)",
          "schema" : {
            "type" : "string"
          },
          "example" : "+12345678900"
        }, {
          "name" : "contactId",
          "in" : "query",
          "description" : "Contact ID number (either contactId, or externalCustomerId, or email, or phone number must be specified)",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 2345678
        }, {
          "name" : "externalCustomerId",
          "in" : "query",
          "description" : "External Customer ID (either contactId, or externalCustomerId, or email, or phone number must be specified)",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "channelTypes",
          "in" : "query",
          "description" : "Comma separated list of user messages channel types that will be included to the response.",
          "schema" : {
            "type" : "string"
          },
          "example" : "email,sms,viber,mobilepush"
        }, {
          "name" : "offset",
          "in" : "query",
          "description" : "Offset from the first item. For pagination purposes",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 0
          }
        }, {
          "name" : "maxrows",
          "in" : "query",
          "description" : "Max number of items in the response. Default value is 10. Maximum value is 100",
          "schema" : {
            "type" : "integer",
            "format" : "int32",
            "default" : 10
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ContactMessage"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/contacts/recoms/{dataSourceId}" : {
      "get" : {
        "tags" : [ "Contacts" ],
        "summary" : "Contact recommendations based on web tracking",
        "description" : "The method returns recommendations for a contact based on the web tracking.<br/><b>NOTE:</b> Version 2 API methods do not require escaping in nested JSON.",
        "operationId" : "contactRecoms",
        "parameters" : [ {
          "name" : "dataSourceId",
          "in" : "path",
          "description" : "Data Source ID. To find it, go to your account> Settings> Data Sources",
          "required" : true,
          "schema" : {
            "type" : "integer",
            "format" : "int32"
          },
          "example" : 1414
        }, {
          "name" : "contactId",
          "in" : "query",
          "description" : "Contact ID. At least one of contactId, email, phone, externalCustomerId, webId must be specified",
          "schema" : {
            "type" : "integer",
            "format" : "int64"
          },
          "example" : 2345678
        }, {
          "name" : "email",
          "in" : "query",
          "description" : "Contact email. At least one of contactId, email, phone, externalCustomerId, webId must be specified",
          "schema" : {
            "type" : "string"
          },
          "example" : "example.email@example.com"
        }, {
          "name" : "phone",
          "in" : "query",
          "description" : "Contact phone number. At least one of contactId, email, phone, externalCustomerId, webId must be specified",
          "schema" : {
            "type" : "string"
          },
          "example" : "(123) 456-7890"
        }, {
          "name" : "externalCustomerId",
          "in" : "query",
          "description" : "External Customer ID. At least one of contactId, email, phone, externalCustomerId, webId must be specified",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "webId",
          "in" : "query",
          "description" : "Web ID. At least one of contactId, email, phone, externalCustomerId, webId must be specified",
          "schema" : {
            "type" : "string"
          }
        }, {
          "name" : "products",
          "in" : "query",
          "description" : "Array of product IDs. Required for the product-based algorithms",
          "schema" : {
            "type" : "string"
          },
          "example" : [ "SKU12345", "PL456789" ]
        }, {
          "name" : "category",
          "in" : "query",
          "description" : "Category ID. Required for the category-based algorithms",
          "schema" : {
            "type" : "string"
          },
          "example" : [ "DEPT-456", "C7890" ]
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "type" : "array",
                  "items" : {
                    "$ref" : "#/components/schemas/ContactRecom"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/v2/event" : {
      "post" : {
        "tags" : [ "Events" ],
        "summary" : "Generate event v2",
        "description" : "Sends any backend <a href=\"${v2genevent_htuapi.post.link}\">events</a> from websites and mobile apps to our system. Secure for sensitive data.For sending frontend events, mobile apps should use <a href=\"${v2genevent_appintegrate.post.link}\">SDK</a>.The request example is available <a href=\"${v2genevent_evexample.post.link}\">at the link</a>.<ul><li><b>NOTE:</b> The maximum size of event data in the request body is <b>20 KB</b>.</li></ul>",
        "operationId" : "registerEvent_1",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/Event"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "default response",
            "content" : {
              "application/json; charset=UTF-8" : { }
            }
          }
        }
      }
    },
    "/api/v2/past_events" : {
      "post" : {
        "tags" : [ "Events" ],
        "summary" : "Generate past events V2",
        "description" : "The method is used for transferring the available event data from your CRM or other data store to our system.<br/>Workflows are not launched for these events. You can send up to 500 events per a request. <br/> <b>NOTE:</b> Version 2 API methods do not require escaping in nested JSON. <br/><a href=\"${v2past_events.post.link}\">Learn more.</a>",
        "operationId" : "sendHistoryEvents_1",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BatchPastEventsV2"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EventsMigrationResults"
                }
              }
            }
          }
        }
      }
    },
    "/api/v3/event" : {
      "post" : {
        "tags" : [ "Events" ],
        "summary" : "Generate event v3",
        "description" : "Sends any backend <a href=\"${v2genevent_htuapi.post.link}\">events</a> from websites and mobile apps to our system. Secure for sensitive data.For sending frontend events, mobile apps should use <a href=\"${v2genevent_appintegrate.post.link}\">SDK</a>.The request example is available <a href=\"${v2genevent_evexample.post.link}\">at the link</a>.<ul><li><b>NOTE:</b> The maximum size of event data in the request body is <b>20 KB</b>.</li></ul>",
        "operationId" : "registerEvent_2",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/FlatEvent"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "description" : "default response",
            "content" : {
              "application/json; charset=UTF-8" : { }
            }
          }
        }
      }
    },
    "/api/v3/past_events" : {
      "post" : {
        "tags" : [ "Events" ],
        "summary" : "Generate past events V3",
        "description" : "The method is used for transferring the available event data from your CRM or other data store to our system.<br/>Workflows are not launched for these events. You can send up to 500 events per a request. <br/> <b>NOTE:</b> Version 3 API methods do not require escaping in nested JSON. <br/><a href=\"${v2past_events.post.link}\">Learn more.</a>",
        "operationId" : "sendHistoryEvents_2",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "schema" : {
                "$ref" : "#/components/schemas/BatchPastEventsV3"
              }
            }
          }
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json; charset=UTF-8" : {
                "schema" : {
                  "$ref" : "#/components/schemas/EventsMigrationResults"
                }
              }
            }
          }
        }
      }
    }
  },
  "components" : {
    "schemas" : {
      "IDResult" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "format" : "int64"
          }
        }
      },
      "AppInboxMessage" : {
        "required" : [ "name", "text", "title" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Message ID.",
            "format" : "int32"
          },
          "name" : {
            "type" : "string",
            "description" : "Message name."
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Language code."
          },
          "tags" : {
            "type" : "array",
            "description" : "List of tags.",
            "items" : {
              "type" : "string",
              "description" : "List of tags."
            }
          },
          "subscriptionsKeys" : {
            "type" : "array",
            "description" : "Subscription categories keys, assigned to a message.",
            "items" : {
              "type" : "string",
              "description" : "Subscription categories keys, assigned to a message."
            }
          },
          "languages" : {
            "type" : "array",
            "description" : "An array with the language codes for multilingual messages. Available for the GET method only.",
            "items" : {
              "type" : "string",
              "description" : "An array with the language codes for multilingual messages. Available for the GET method only."
            }
          },
          "title" : {
            "type" : "string",
            "description" : "Message title.",
            "example" : "Account created"
          },
          "text" : {
            "type" : "string",
            "description" : "Message text.",
            "example" : "Thank you for signing up!"
          },
          "link" : {
            "type" : "string",
            "description" : "The link that will open after the click on the message body.",
            "example" : "https://www.example.com"
          },
          "imageSource" : {
            "type" : "string",
            "description" : "The logo image in JPEG, PNG or GIF format."
          },
          "customData" : {
            "type" : "string",
            "description" : "Additional parameters in JSON format to be used in the message."
          },
          "ttlSec" : {
            "type" : "integer",
            "description" : "Time-to-live for the message, in seconds.",
            "format" : "int32",
            "example" : 3600
          }
        },
        "description" : "The array of the language versions for the current message. Available for the GET method only."
      },
      "BaseAppInboxMessage" : {
        "required" : [ "name", "text", "title" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Message ID.",
            "format" : "int32"
          },
          "name" : {
            "type" : "string",
            "description" : "Message name."
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Language code."
          },
          "tags" : {
            "type" : "array",
            "description" : "List of tags.",
            "items" : {
              "type" : "string",
              "description" : "List of tags."
            }
          },
          "subscriptionsKeys" : {
            "type" : "array",
            "description" : "Subscription categories keys, assigned to a message.",
            "items" : {
              "type" : "string",
              "description" : "Subscription categories keys, assigned to a message."
            }
          },
          "languages" : {
            "type" : "array",
            "description" : "An array with the language codes for multilingual messages. Available for the GET method only.",
            "items" : {
              "type" : "string",
              "description" : "An array with the language codes for multilingual messages. Available for the GET method only."
            }
          },
          "title" : {
            "type" : "string",
            "description" : "Message title.",
            "example" : "Account created"
          },
          "text" : {
            "type" : "string",
            "description" : "Message text.",
            "example" : "Thank you for signing up!"
          },
          "link" : {
            "type" : "string",
            "description" : "The link that will open after the click on the message body.",
            "example" : "https://www.example.com"
          },
          "imageSource" : {
            "type" : "string",
            "description" : "The logo image in JPEG, PNG or GIF format."
          },
          "customData" : {
            "type" : "string",
            "description" : "Additional parameters in JSON format to be used in the message."
          },
          "ttlSec" : {
            "type" : "integer",
            "description" : "Time-to-live for the message, in seconds.",
            "format" : "int32",
            "example" : 3600
          },
          "translations" : {
            "type" : "array",
            "description" : "The array of the language versions for the current message. Available for the GET method only.",
            "items" : {
              "$ref" : "#/components/schemas/AppInboxMessage"
            }
          }
        }
      },
      "AppToken" : {
        "type" : "object",
        "properties" : {
          "token" : {
            "type" : "string",
            "description" : "Application token."
          },
          "contactId" : {
            "type" : "integer",
            "description" : "Contact ID.",
            "format" : "int64"
          },
          "externalCustomerId" : {
            "type" : "string",
            "description" : "External contact ID."
          },
          "phone" : {
            "type" : "string",
            "description" : "Contact's phone number."
          },
          "email" : {
            "type" : "string",
            "description" : "Contact's email address."
          }
        }
      },
      "AppTokens" : {
        "type" : "object",
        "properties" : {
          "tokens" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/AppToken"
            }
          }
        },
        "description" : "Tokens list."
      },
      "Address" : {
        "type" : "object",
        "properties" : {
          "region" : {
            "type" : "string",
            "description" : "Region",
            "example" : "Occitanie"
          },
          "town" : {
            "type" : "string",
            "description" : "City",
            "example" : "Toulouse"
          },
          "address" : {
            "type" : "string",
            "description" : "Address",
            "example" : "Rue Imaginaire, 456"
          },
          "postcode" : {
            "type" : "string",
            "description" : "Postal/ZIP code",
            "example" : "31000"
          },
          "countryCode" : {
            "maxLength" : 2,
            "type" : "string",
            "description" : "Country code (ISO-3166-1 alpha-2, UK and ZZ allowed). Case-insensitive. Stored as UPPERCASE. Invalid → null.",
            "nullable" : true,
            "example" : "FR"
          }
        },
        "description" : "Contact's full address"
      },
      "ContactCreateRequestSchema" : {
        "type" : "object",
        "properties" : {
          "firstName" : {
            "type" : "string",
            "description" : "Contact’s first name. The following rules apply to character usage: <br>\n- Max length: 40 symbols. <br>- Letters from any alphabet are allowed (Unicode characters). <br>- Three words longer than 3 characters and three words with a maximum of 3 characters are allowed. <br>- Up to 3 digits are allowed. <br>- Special characters are not allowed, except for: <br>-- Apostrophes ''ʼ`´ʹʻʽʾʿˈˊˮʹ΄՚᾽᾿'‛′‵Ꞌꞌ＇ (only inside words) <br>-- Hyphen - (only inside words) <br>-- One dot at the end of words having max 3 characters. Example: Jr. <br>- Names consisting only of numbers and special characters are not allowed",
            "example" : "John"
          },
          "lastName" : {
            "type" : "string",
            "description" : "Contact’s last name. The following rules apply to character usage: <br>\n- Max length: 40 symbols. <br>- Letters from any alphabet are allowed (Unicode characters). <br>- Three words longer than 3 characters and three words with a maximum of 3 characters are allowed. <br>- Up to 3 digits are allowed. <br>- Special characters are not allowed, except for: <br>-- Apostrophes ''ʼ`´ʹʻʽʾʿˈˊˮʹ΄՚᾽᾿'‛′‵Ꞌꞌ＇ (only inside words) <br>-- Hyphen - (only inside words) <br>-- One dot at the end of words having max 3 characters. Example: Jr. <br>- Names consisting only of numbers and special characters are not allowed",
            "example" : "Smith"
          },
          "channels" : {
            "type" : "array",
            "description" : "The list of media channels",
            "items" : {
              "$ref" : "#/components/schemas/ContactWriteChannel"
            }
          },
          "address" : {
            "$ref" : "#/components/schemas/Address"
          },
          "fields" : {
            "type" : "array",
            "description" : "Values of the additional fields for a contact",
            "items" : {
              "$ref" : "#/components/schemas/ContactField"
            }
          },
          "addressBookId" : {
            "type" : "integer",
            "description" : "You can get the info about catalogs using the <i>/v1/addressbooks GET</i> method",
            "format" : "int32",
            "example" : 7200
          },
          "id" : {
            "type" : "integer",
            "description" : "Contact ID",
            "format" : "int64",
            "example" : 23456789
          },
          "externalCustomerId" : {
            "type" : "string",
            "description" : "External contact id",
            "example" : "TV12790"
          },
          "contactKey" : {
            "type" : "string",
            "description" : "Contact's key"
          },
          "groups" : {
            "type" : "array",
            "description" : "The list of the static segments where the contact is present. Used only when receiving contacts.",
            "items" : {
              "$ref" : "#/components/schemas/GroupDto"
            }
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Language code for the contact",
            "example" : "en"
          },
          "timeZone" : {
            "type" : "string",
            "description" : "The contact's time zone. See <a href='https://en.wikipedia.org/wiki/List_of_tz_database_time_zones'>TZ database name</a>.",
            "example" : "Europe/London"
          },
          "marketId" : {
            "type" : "string",
            "description" : "Market ID. Optional parameter. Up to 64 characters. Allowed: [a–zA-Z0–9-_]",
            "example" : "kyiv"
          }
        }
      },
      "ContactField" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Additional field ID.<br/>You can get the value using the <i>/v1/addressbooks GET</i> method.",
            "format" : "int32",
            "example" : 79814
          },
          "value" : {
            "type" : "string",
            "description" : "The value of an additional field.",
            "example" : "textfield"
          }
        },
        "description" : "Additional field for a contact."
      },
      "ContactWriteChannel" : {
        "type" : "object",
        "properties" : {
          "type" : {
            "type" : "string",
            "description" : "Channel type",
            "enum" : [ "email", "sms", "mobilepush", "webpush" ]
          },
          "value" : {
            "type" : "string",
            "description" : "Email address, phone number or push token"
          },
          "device" : {
            "$ref" : "#/components/schemas/Device"
          },
          "webPushSubscription" : {
            "$ref" : "#/components/schemas/WebPushSubscription"
          }
        },
        "description" : "Media channel"
      },
      "Device" : {
        "type" : "object",
        "properties" : {
          "appId" : {
            "type" : "string",
            "description" : "Application ID",
            "example" : "83b77a49-fc28-409b-aeaa-68c9d544ab9d"
          },
          "deviceModel" : {
            "type" : "string",
            "description" : "Device model",
            "example" : "[\"iPhone 16 Pro\",\"Samsung Galaxy S24 Ultra\"]"
          },
          "os" : {
            "type" : "string",
            "description" : "Device OS",
            "example" : "[\"iOS\",\"Android\"]"
          },
          "locale" : {
            "type" : "string",
            "description" : "Locale (en_UK, ru_UA, ua_UA).",
            "example" : "[\"en_UK\",\"ua_UA\"]"
          },
          "clientVersion" : {
            "type" : "string",
            "description" : "SDK version",
            "example" : "1.6.8",
            "enum" : [ "native", "esputnik-1" ]
          },
          "appVersion" : {
            "type" : "string",
            "description" : "Mobile app version",
            "example" : "1.23.45"
          },
          "active" : {
            "type" : "boolean",
            "description" : "Token activity flag"
          }
        },
        "description" : "The data about the contact's device. Used together with the &quot;mobilepush&quot; channel type."
      },
      "GroupDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Segment ID",
            "format" : "int32",
            "example" : 200400
          },
          "name" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string",
            "description" : "Possible values: Static - simple static segment (list), Dynamic - conditional segment, Combined - composite segment."
          }
        },
        "description" : "The list of the static segments where the contact is present. Used only when receiving contacts."
      },
      "WebPushSubscription" : {
        "type" : "object",
        "properties" : {
          "appId" : {
            "type" : "integer",
            "format" : "int32"
          },
          "userAgent" : {
            "type" : "string"
          },
          "userAgentVersion" : {
            "type" : "string"
          },
          "userAgentLanguage" : {
            "type" : "string"
          },
          "os" : {
            "type" : "string"
          },
          "ip" : {
            "type" : "string"
          },
          "subscriptionPage" : {
            "type" : "string"
          },
          "swActiveVersion" : {
            "type" : "string"
          }
        },
        "description" : "The data about the web push subscription. Used together with the &quot;webpush&quot; channel type."
      },
      "Channel" : {
        "type" : "object",
        "properties" : {
          "type" : {
            "type" : "string",
            "description" : "Channel type",
            "enum" : [ "email", "sms", "viber", "mobilepush", "webpush", "appinbox", "widget", "inapp", "telegrambot" ]
          },
          "value" : {
            "type" : "string",
            "description" : "Email address, phone number or push token"
          },
          "device" : {
            "$ref" : "#/components/schemas/Device"
          },
          "webPushSubscription" : {
            "$ref" : "#/components/schemas/WebPushSubscription"
          },
          "appUuid" : {
            "type" : "string",
            "description" : "App UUID for telegram bot channel"
          }
        },
        "description" : "Media channel"
      },
      "Contact" : {
        "type" : "object",
        "properties" : {
          "firstName" : {
            "type" : "string",
            "description" : "Contact’s first name. The following rules apply to character usage: <br>\n- Max length: 40 symbols. <br>- Letters from any alphabet are allowed (Unicode characters). <br>- Three words longer than 3 characters and three words with a maximum of 3 characters are allowed. <br>- Up to 3 digits are allowed. <br>- Special characters are not allowed, except for: <br>-- Apostrophes ''ʼ`´ʹʻʽʾʿˈˊˮʹ΄՚᾽᾿'‛′‵Ꞌꞌ＇ (only inside words) <br>-- Hyphen - (only inside words) <br>-- One dot at the end of words having max 3 characters. Example: Jr. <br>- Names consisting only of numbers and special characters are not allowed",
            "example" : "John"
          },
          "lastName" : {
            "type" : "string",
            "description" : "Contact’s last name. The following rules apply to character usage: <br>\n- Max length: 40 symbols. <br>- Letters from any alphabet are allowed (Unicode characters). <br>- Three words longer than 3 characters and three words with a maximum of 3 characters are allowed. <br>- Up to 3 digits are allowed. <br>- Special characters are not allowed, except for: <br>-- Apostrophes ''ʼ`´ʹʻʽʾʿˈˊˮʹ΄՚᾽᾿'‛′‵Ꞌꞌ＇ (only inside words) <br>-- Hyphen - (only inside words) <br>-- One dot at the end of words having max 3 characters. Example: Jr. <br>- Names consisting only of numbers and special characters are not allowed",
            "example" : "Smith"
          },
          "channels" : {
            "type" : "array",
            "description" : "The list of media channels",
            "items" : {
              "$ref" : "#/components/schemas/Channel"
            }
          },
          "address" : {
            "$ref" : "#/components/schemas/Address"
          },
          "fields" : {
            "type" : "array",
            "description" : "Values of the additional fields for a contact",
            "items" : {
              "$ref" : "#/components/schemas/ContactField"
            }
          },
          "addressBookId" : {
            "type" : "integer",
            "description" : "You can get the info about catalogs using the <i>/v1/addressbooks GET</i> method",
            "format" : "int32",
            "example" : 7200
          },
          "id" : {
            "type" : "integer",
            "description" : "Contact ID",
            "format" : "int64",
            "example" : 23456789
          },
          "externalCustomerId" : {
            "type" : "string",
            "description" : "External contact id",
            "example" : "TV12790"
          },
          "contactKey" : {
            "type" : "string",
            "description" : "Contact's key"
          },
          "groups" : {
            "type" : "array",
            "description" : "The list of the static segments where the contact is present. Used only when receiving contacts.",
            "items" : {
              "$ref" : "#/components/schemas/GroupDto"
            }
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Language code for the contact",
            "example" : "en"
          },
          "timeZone" : {
            "type" : "string",
            "description" : "The contact's time zone. See <a href='https://en.wikipedia.org/wiki/List_of_tz_database_time_zones'>TZ database name</a>.",
            "example" : "Europe/London"
          },
          "marketId" : {
            "type" : "string",
            "description" : "Market ID. Optional parameter. Up to 64 characters. Allowed: [a–zA-Z0–9-_]",
            "example" : "kyiv"
          }
        },
        "description" : "Contact for subscription."
      },
      "BaseEmailMessage" : {
        "required" : [ "from", "htmlText", "name", "subject" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Message ID.",
            "format" : "int32"
          },
          "name" : {
            "type" : "string",
            "description" : "Message name."
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Language code."
          },
          "tags" : {
            "type" : "array",
            "description" : "List of tags.",
            "items" : {
              "type" : "string",
              "description" : "List of tags."
            }
          },
          "subscriptionsKeys" : {
            "type" : "array",
            "description" : "Subscription categories keys, assigned to a message.",
            "items" : {
              "type" : "string",
              "description" : "Subscription categories keys, assigned to a message."
            }
          },
          "languages" : {
            "type" : "array",
            "description" : "An array with the language codes for multilingual messages. Available for the GET method only.",
            "items" : {
              "type" : "string",
              "description" : "An array with the language codes for multilingual messages. Available for the GET method only."
            }
          },
          "from" : {
            "type" : "string",
            "description" : "<b>Required parameter.</b><br>\nSender name and email address, e.g. \"from\": \"\\\"name\\\" &lt;info@test.com&gt;\"",
            "example" : "\"John Smith\" John.Smith@example.com"
          },
          "subject" : {
            "type" : "string",
            "description" : "Message subject",
            "example" : "Thanks for signing up"
          },
          "htmlText" : {
            "type" : "string",
            "description" : "Message HTML code"
          },
          "rawHtml" : {
            "type" : "string",
            "description" : "Message HTML code without styles."
          },
          "ampHtml" : {
            "type" : "string",
            "description" : "Message AMP code"
          },
          "css" : {
            "type" : "string",
            "description" : "Message styles"
          },
          "updatedDate" : {
            "type" : "string",
            "description" : "Message updated date",
            "format" : "date-time"
          },
          "translations" : {
            "type" : "array",
            "description" : "The array of the language versions for the current message. Available for the GET method only.",
            "items" : {
              "$ref" : "#/components/schemas/EmailMessage"
            }
          },
          "template" : {
            "type" : "boolean"
          }
        }
      },
      "EmailMessage" : {
        "required" : [ "from", "htmlText", "name", "subject" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Message ID.",
            "format" : "int32"
          },
          "name" : {
            "type" : "string",
            "description" : "Message name."
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Language code."
          },
          "tags" : {
            "type" : "array",
            "description" : "List of tags.",
            "items" : {
              "type" : "string",
              "description" : "List of tags."
            }
          },
          "subscriptionsKeys" : {
            "type" : "array",
            "description" : "Subscription categories keys, assigned to a message.",
            "items" : {
              "type" : "string",
              "description" : "Subscription categories keys, assigned to a message."
            }
          },
          "languages" : {
            "type" : "array",
            "description" : "An array with the language codes for multilingual messages. Available for the GET method only.",
            "items" : {
              "type" : "string",
              "description" : "An array with the language codes for multilingual messages. Available for the GET method only."
            }
          },
          "from" : {
            "type" : "string",
            "description" : "<b>Required parameter.</b><br>\nSender name and email address, e.g. \"from\": \"\\\"name\\\" &lt;info@test.com&gt;\"",
            "example" : "\"John Smith\" John.Smith@example.com"
          },
          "subject" : {
            "type" : "string",
            "description" : "Message subject",
            "example" : "Thanks for signing up"
          },
          "htmlText" : {
            "type" : "string",
            "description" : "Message HTML code"
          },
          "rawHtml" : {
            "type" : "string",
            "description" : "Message HTML code without styles."
          },
          "ampHtml" : {
            "type" : "string",
            "description" : "Message AMP code"
          },
          "css" : {
            "type" : "string",
            "description" : "Message styles"
          },
          "updatedDate" : {
            "type" : "string",
            "description" : "Message updated date",
            "format" : "date-time"
          },
          "template" : {
            "type" : "boolean"
          }
        },
        "description" : "The array of the language versions for the current message. Available for the GET method only."
      },
      "SyncItemResult" : {
        "type" : "object",
        "properties" : {
          "marketId" : {
            "type" : "string",
            "description" : "Market identifier for market item results",
            "example" : "ca"
          },
          "productId" : {
            "type" : "string",
            "description" : "Product identifier",
            "example" : "SKU125"
          },
          "action" : {
            "type" : "string",
            "description" : "Product action",
            "example" : "create"
          },
          "updatedDate" : {
            "type" : "string",
            "description" : "Source ordering timestamp echoed for troubleshooting",
            "example" : "2026-04-01T09:07:15Z"
          },
          "status" : {
            "type" : "string",
            "description" : "Item status",
            "example" : "rejected",
            "enum" : [ "accepted", "rejected" ]
          },
          "code" : {
            "type" : "string",
            "description" : "Rejection code",
            "example" : "MISSING_REQUIRED_FIELD"
          },
          "message" : {
            "type" : "string",
            "description" : "Human-readable item result message",
            "example" : "imageUrl is required for create"
          }
        },
        "description" : "Products and Markets item sync result"
      },
      "SyncResponse" : {
        "type" : "object",
        "properties" : {
          "requestId" : {
            "type" : "string",
            "description" : "Server-generated request identifier",
            "example" : "6cd77c96-118f-44f0-b7f7-0d3ab8297e6a"
          },
          "summary" : {
            "$ref" : "#/components/schemas/SyncSummary"
          },
          "items" : {
            "type" : "array",
            "description" : "Item-level processing results",
            "items" : {
              "$ref" : "#/components/schemas/SyncItemResult"
            }
          }
        },
        "description" : "Products and Markets sync response"
      },
      "SyncSummary" : {
        "type" : "object",
        "properties" : {
          "received" : {
            "type" : "integer",
            "description" : "Number of items received in the batch",
            "format" : "int32",
            "example" : 3
          },
          "accepted" : {
            "type" : "integer",
            "description" : "Number of items accepted",
            "format" : "int32",
            "example" : 2
          },
          "rejected" : {
            "type" : "integer",
            "description" : "Number of items rejected",
            "format" : "int32",
            "example" : 1
          }
        },
        "description" : "Products and Markets sync summary"
      },
      "MarketProductRemovePatch" : {
        "type" : "object",
        "properties" : {
          "fields" : {
            "type" : "array",
            "description" : "Market product fields to remove",
            "example" : [ "oldPrice" ],
            "items" : {
              "type" : "string",
              "description" : "Market product fields to remove",
              "example" : "[\"oldPrice\"]"
            }
          },
          "urlsTranslations" : {
            "type" : "array",
            "description" : "URL translation language codes to remove",
            "example" : [ "en" ],
            "items" : {
              "type" : "string",
              "description" : "URL translation language codes to remove",
              "example" : "[\"en\"]"
            }
          }
        },
        "description" : "Market product remove patch"
      },
      "MarketProductRequest" : {
        "type" : "object",
        "properties" : {
          "productId" : {
            "type" : "string",
            "description" : "Product identifier matching the base product identity",
            "example" : "SKU123"
          },
          "updatedDate" : {
            "type" : "string",
            "description" : "Source ordering timestamp in UTC",
            "example" : "2026-04-01T09:07:15Z"
          },
          "price" : {
            "type" : "number",
            "description" : "Market-specific selling price",
            "example" : 29.99
          },
          "oldPrice" : {
            "type" : "number",
            "description" : "Market-specific original price",
            "example" : 39.99
          },
          "currency" : {
            "type" : "string",
            "description" : "ISO 4217 currency code",
            "example" : "CAD"
          },
          "isInStock" : {
            "type" : "integer",
            "description" : "Market-specific availability: 1 = in stock, 0 = out of stock",
            "format" : "int32",
            "example" : 1
          },
          "urls" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string",
              "description" : "Market-specific URLs keyed by BCP 47 language code"
            },
            "description" : "Market-specific URLs keyed by BCP 47 language code"
          },
          "remove" : {
            "$ref" : "#/components/schemas/MarketProductRemovePatch"
          }
        },
        "description" : "Market-specific product patch"
      },
      "MarketRequest" : {
        "type" : "object",
        "properties" : {
          "marketId" : {
            "type" : "string",
            "description" : "Client-defined market identifier",
            "example" : "ca"
          },
          "products" : {
            "type" : "array",
            "description" : "Market product patches",
            "items" : {
              "$ref" : "#/components/schemas/MarketProductRequest"
            }
          }
        },
        "description" : "Market product batch"
      },
      "MarketSyncRequest" : {
        "type" : "object",
        "properties" : {
          "siteId" : {
            "type" : "string",
            "description" : "Client site/account identifier",
            "example" : "my_store"
          },
          "markets" : {
            "type" : "array",
            "description" : "Markets with product-specific patches",
            "items" : {
              "$ref" : "#/components/schemas/MarketRequest"
            }
          }
        },
        "description" : "Markets sync request"
      },
      "BaseMobilePushMessage" : {
        "required" : [ "name", "text", "title" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Message ID.",
            "format" : "int32"
          },
          "name" : {
            "type" : "string",
            "description" : "Message name."
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Language code."
          },
          "tags" : {
            "type" : "array",
            "description" : "List of tags.",
            "items" : {
              "type" : "string",
              "description" : "List of tags."
            }
          },
          "subscriptionsKeys" : {
            "type" : "array",
            "description" : "Subscription categories keys, assigned to a message.",
            "items" : {
              "type" : "string",
              "description" : "Subscription categories keys, assigned to a message."
            }
          },
          "languages" : {
            "type" : "array",
            "description" : "An array with the language codes for multilingual messages. Available for the GET method only.",
            "items" : {
              "type" : "string",
              "description" : "An array with the language codes for multilingual messages. Available for the GET method only."
            }
          },
          "title" : {
            "type" : "string",
            "description" : "Message title.",
            "example" : "Your order is confirmed"
          },
          "subtitle" : {
            "type" : "string",
            "description" : "Message subtitle. Visible only to iOS users.",
            "example" : "Order number 002345"
          },
          "text" : {
            "type" : "string",
            "description" : "Message text.",
            "example" : "You order 002345 is confirmed"
          },
          "link" : {
            "type" : "string",
            "description" : "Can be either an external link (opens in device browser) or a deep link (opens some section of the app).",
            "example" : "https://www.yourshop.com/account/order"
          },
          "imageSource" : {
            "type" : "string",
            "description" : "Image URL for a single image in a message. Use 'images' array to create an images carousel.",
            "example" : "https://www.example.com/images/sample.jpg"
          },
          "customData" : {
            "type" : "string",
            "description" : "Additional parameters in JSON format to be used in the push message."
          },
          "ttlSec" : {
            "type" : "integer",
            "description" : "Time-to-live for a message; in seconds.",
            "format" : "int32",
            "example" : 3600
          },
          "buttons" : {
            "type" : "array",
            "description" : "Use buttons to implement various actions. 4 buttons for iOS, 3 buttons for Android are supported.",
            "items" : {
              "$ref" : "#/components/schemas/MobilePushButton"
            }
          },
          "soundEnabled" : {
            "type" : "boolean",
            "description" : "Enable to play sound when user receives push-message."
          },
          "badgeCount" : {
            "type" : "integer",
            "description" : "The number of unread messages shown to the user.",
            "format" : "int64",
            "example" : 50
          },
          "images" : {
            "type" : "array",
            "description" : "The array of image URLs for images carousel. Up to 10 images.",
            "items" : {
              "type" : "string",
              "description" : "The array of image URLs for images carousel. Up to 10 images."
            }
          },
          "translations" : {
            "type" : "array",
            "description" : "The array of language versions for the current message. Available for GET method only.",
            "items" : {
              "$ref" : "#/components/schemas/MobilePushMessage"
            }
          }
        }
      },
      "MobilePushButton" : {
        "required" : [ "actionId", "label" ],
        "type" : "object",
        "properties" : {
          "actionId" : {
            "type" : "string",
            "description" : "<b>Required parameter.</b><br>Unique action id for the button."
          },
          "label" : {
            "type" : "string",
            "description" : "<b>Required parameter.</b><br>Text shown on the button."
          },
          "iosIconPath" : {
            "type" : "string",
            "description" : "Icon associated with the button action. Supported on iOS 15+."
          },
          "link" : {
            "type" : "string",
            "description" : "An URL or a deeplink where user will go if selects the button."
          },
          "customData" : {
            "type" : "string",
            "description" : "Additional parameters of the button; in JSON format."
          }
        },
        "description" : "Used to implement unique action."
      },
      "MobilePushMessage" : {
        "required" : [ "name", "text", "title" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Message ID.",
            "format" : "int32"
          },
          "name" : {
            "type" : "string",
            "description" : "Message name."
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Language code."
          },
          "tags" : {
            "type" : "array",
            "description" : "List of tags.",
            "items" : {
              "type" : "string",
              "description" : "List of tags."
            }
          },
          "subscriptionsKeys" : {
            "type" : "array",
            "description" : "Subscription categories keys, assigned to a message.",
            "items" : {
              "type" : "string",
              "description" : "Subscription categories keys, assigned to a message."
            }
          },
          "languages" : {
            "type" : "array",
            "description" : "An array with the language codes for multilingual messages. Available for the GET method only.",
            "items" : {
              "type" : "string",
              "description" : "An array with the language codes for multilingual messages. Available for the GET method only."
            }
          },
          "title" : {
            "type" : "string",
            "description" : "Message title.",
            "example" : "Your order is confirmed"
          },
          "subtitle" : {
            "type" : "string",
            "description" : "Message subtitle. Visible only to iOS users.",
            "example" : "Order number 002345"
          },
          "text" : {
            "type" : "string",
            "description" : "Message text.",
            "example" : "You order 002345 is confirmed"
          },
          "link" : {
            "type" : "string",
            "description" : "Can be either an external link (opens in device browser) or a deep link (opens some section of the app).",
            "example" : "https://www.yourshop.com/account/order"
          },
          "imageSource" : {
            "type" : "string",
            "description" : "Image URL for a single image in a message. Use 'images' array to create an images carousel.",
            "example" : "https://www.example.com/images/sample.jpg"
          },
          "customData" : {
            "type" : "string",
            "description" : "Additional parameters in JSON format to be used in the push message."
          },
          "ttlSec" : {
            "type" : "integer",
            "description" : "Time-to-live for a message; in seconds.",
            "format" : "int32",
            "example" : 3600
          },
          "buttons" : {
            "type" : "array",
            "description" : "Use buttons to implement various actions. 4 buttons for iOS, 3 buttons for Android are supported.",
            "items" : {
              "$ref" : "#/components/schemas/MobilePushButton"
            }
          },
          "soundEnabled" : {
            "type" : "boolean",
            "description" : "Enable to play sound when user receives push-message."
          },
          "badgeCount" : {
            "type" : "integer",
            "description" : "The number of unread messages shown to the user.",
            "format" : "int64",
            "example" : 50
          },
          "images" : {
            "type" : "array",
            "description" : "The array of image URLs for images carousel. Up to 10 images.",
            "items" : {
              "type" : "string",
              "description" : "The array of image URLs for images carousel. Up to 10 images."
            }
          }
        },
        "description" : "The array of language versions for the current message. Available for GET method only."
      },
      "LanguageMismatchErrorResponse" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "example" : "PRODUCT_LANGUAGE_MISMATCH"
          },
          "message" : {
            "type" : "string",
            "example" : "Request languageCode 'en' does not match site default 'uk'."
          },
          "storedLanguage" : {
            "type" : "string",
            "example" : "uk"
          },
          "receivedLanguage" : {
            "type" : "string",
            "example" : "en"
          }
        },
        "description" : "Language mismatch error"
      },
      "ProductCategory" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "Category identifier",
            "example" : "8"
          },
          "name" : {
            "type" : "string",
            "description" : "Category name",
            "example" : "T-Shirts"
          },
          "path" : {
            "type" : "array",
            "description" : "Category hierarchy from root to leaf",
            "example" : [ "Clothing", "Tops", "T-Shirts" ],
            "items" : {
              "type" : "string",
              "description" : "Category hierarchy from root to leaf",
              "example" : "[\"Clothing\",\"Tops\",\"T-Shirts\"]"
            }
          },
          "type" : {
            "type" : "string",
            "description" : "Category type",
            "example" : "category",
            "enum" : [ "category", "collection" ]
          }
        },
        "description" : "Product category or collection"
      },
      "ProductRemovePatch" : {
        "type" : "object",
        "properties" : {
          "fields" : {
            "type" : "array",
            "description" : "Product fields to remove",
            "example" : [ "oldPrice" ],
            "items" : {
              "type" : "string",
              "description" : "Product fields to remove",
              "example" : "[\"oldPrice\"]"
            }
          },
          "tags" : {
            "type" : "array",
            "description" : "Tag names to remove",
            "example" : [ "Season" ],
            "items" : {
              "type" : "string",
              "description" : "Tag names to remove",
              "example" : "[\"Season\"]"
            }
          }
        },
        "description" : "Product remove patch"
      },
      "ProductSyncItem" : {
        "type" : "object",
        "properties" : {
          "action" : {
            "type" : "string",
            "description" : "Product sync action",
            "example" : "create",
            "enum" : [ "create", "update" ]
          },
          "productId" : {
            "type" : "string",
            "description" : "Unique product identifier within siteId",
            "example" : "shopify_variant_987"
          },
          "updatedDate" : {
            "type" : "string",
            "description" : "Source ordering timestamp in UTC",
            "example" : "2026-04-01T09:07:15Z"
          },
          "itemGroupId" : {
            "type" : "string",
            "description" : "Shared family/group identifier for variants",
            "example" : "shopify_product_123"
          },
          "name" : {
            "type" : "string",
            "description" : "Display name in default language",
            "example" : "Men's T-Shirt / Black / M"
          },
          "description" : {
            "type" : "string",
            "description" : "Plain text description in default language",
            "example" : "Plain text product description"
          },
          "url" : {
            "type" : "string",
            "description" : "Product URL for default language",
            "example" : "https://example.com/products/tshirt-black-m"
          },
          "imageUrl" : {
            "type" : "string",
            "description" : "Main image URL",
            "example" : "https://cdn.example.com/images/tshirt-black-m.jpg"
          },
          "brand" : {
            "type" : "string",
            "description" : "Brand or manufacturer",
            "example" : "MyBrand"
          },
          "isInStock" : {
            "type" : "integer",
            "description" : "Base availability: 1 = in stock, 0 = out of stock",
            "format" : "int32",
            "example" : 1
          },
          "price" : {
            "type" : "number",
            "description" : "Base selling price",
            "example" : 599.0
          },
          "oldPrice" : {
            "type" : "number",
            "description" : "Base original price",
            "example" : 699.0
          },
          "currency" : {
            "type" : "string",
            "description" : "ISO 4217 currency code",
            "example" : "UAH"
          },
          "categories" : {
            "type" : "array",
            "description" : "Product categories in default language",
            "items" : {
              "$ref" : "#/components/schemas/ProductCategory"
            }
          },
          "translations" : {
            "type" : "array",
            "description" : "Translations keyed by BCP 47 language code",
            "items" : {
              "type" : "object",
              "additionalProperties" : {
                "$ref" : "#/components/schemas/ProductTranslation"
              },
              "description" : "Translations keyed by BCP 47 language code"
            }
          },
          "tags" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "array",
              "description" : "Product tags keyed by tag name",
              "items" : {
                "type" : "string",
                "description" : "Product tags keyed by tag name"
              }
            },
            "description" : "Product tags keyed by tag name"
          },
          "remove" : {
            "$ref" : "#/components/schemas/ProductRemovePatch"
          }
        },
        "description" : "Product create/update item"
      },
      "ProductSyncRequest" : {
        "type" : "object",
        "properties" : {
          "languageCode" : {
            "type" : "string",
            "description" : "Default language for top-level product fields",
            "example" : "uk"
          },
          "products" : {
            "type" : "array",
            "description" : "Products to create or update",
            "items" : {
              "$ref" : "#/components/schemas/ProductSyncItem"
            }
          }
        },
        "description" : "Products create/update request"
      },
      "ProductTranslation" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "Localized name",
            "example" : "Men's T-Shirt"
          },
          "description" : {
            "type" : "string",
            "description" : "Localized plain text description",
            "example" : "Plain text product description"
          },
          "url" : {
            "type" : "string",
            "description" : "Localized product URL",
            "example" : "https://example.com/en/products/tshirt"
          },
          "categories" : {
            "type" : "array",
            "description" : "Localized categories",
            "items" : {
              "$ref" : "#/components/schemas/ProductCategory"
            }
          }
        },
        "description" : "Localized product fields"
      },
      "BaseSmsMessage" : {
        "required" : [ "from", "name", "text" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Message ID.",
            "format" : "int32"
          },
          "name" : {
            "type" : "string",
            "description" : "Message name."
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Language code."
          },
          "tags" : {
            "type" : "array",
            "description" : "List of tags.",
            "items" : {
              "type" : "string",
              "description" : "List of tags."
            }
          },
          "subscriptionsKeys" : {
            "type" : "array",
            "description" : "Subscription categories keys, assigned to a message.",
            "items" : {
              "type" : "string",
              "description" : "Subscription categories keys, assigned to a message."
            }
          },
          "languages" : {
            "type" : "array",
            "description" : "An array with the language codes for multilingual messages. Available for the GET method only.",
            "items" : {
              "type" : "string",
              "description" : "An array with the language codes for multilingual messages. Available for the GET method only."
            }
          },
          "from" : {
            "type" : "string",
            "description" : "Sender name."
          },
          "text" : {
            "type" : "string",
            "description" : "Message text."
          },
          "trackUrls" : {
            "type" : "boolean",
            "description" : "The parameter determines whether to track links in a message or not. The default value is ‘false’."
          },
          "translations" : {
            "type" : "array",
            "description" : "An array with translations to other languages. Available for the GET method only.",
            "items" : {
              "$ref" : "#/components/schemas/SmsMessage"
            }
          }
        }
      },
      "SmsMessage" : {
        "required" : [ "from", "name", "text" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Message ID.",
            "format" : "int32"
          },
          "name" : {
            "type" : "string",
            "description" : "Message name."
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Language code."
          },
          "tags" : {
            "type" : "array",
            "description" : "List of tags.",
            "items" : {
              "type" : "string",
              "description" : "List of tags."
            }
          },
          "subscriptionsKeys" : {
            "type" : "array",
            "description" : "Subscription categories keys, assigned to a message.",
            "items" : {
              "type" : "string",
              "description" : "Subscription categories keys, assigned to a message."
            }
          },
          "languages" : {
            "type" : "array",
            "description" : "An array with the language codes for multilingual messages. Available for the GET method only.",
            "items" : {
              "type" : "string",
              "description" : "An array with the language codes for multilingual messages. Available for the GET method only."
            }
          },
          "from" : {
            "type" : "string",
            "description" : "Sender name."
          },
          "text" : {
            "type" : "string",
            "description" : "Message text."
          },
          "trackUrls" : {
            "type" : "boolean",
            "description" : "The parameter determines whether to track links in a message or not. The default value is ‘false’."
          }
        },
        "description" : "An array with translations to other languages. Available for the GET method only."
      },
      "BaseTelegramBotMessage" : {
        "required" : [ "name" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Message ID.",
            "format" : "int32"
          },
          "name" : {
            "type" : "string",
            "description" : "Message name."
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Language code."
          },
          "tags" : {
            "type" : "array",
            "description" : "List of tags.",
            "items" : {
              "type" : "string",
              "description" : "List of tags."
            }
          },
          "subscriptionsKeys" : {
            "type" : "array",
            "description" : "Subscription categories keys, assigned to a message.",
            "items" : {
              "type" : "string",
              "description" : "Subscription categories keys, assigned to a message."
            }
          },
          "languages" : {
            "type" : "array",
            "description" : "An array with the language codes for multilingual messages. Available for the GET method only.",
            "items" : {
              "type" : "string",
              "description" : "An array with the language codes for multilingual messages. Available for the GET method only."
            }
          },
          "text" : {
            "type" : "string"
          },
          "imageSource" : {
            "type" : "string",
            "description" : "Image URL for a single image in a message.",
            "example" : "https://www.example.com/images/sample.jpg"
          },
          "buttons" : {
            "type" : "array",
            "description" : "Use buttons to implement various actions.",
            "items" : {
              "$ref" : "#/components/schemas/TelegramBotButton"
            }
          },
          "translations" : {
            "type" : "array",
            "description" : "An array with translations to other languages. Available for the GET method only.",
            "items" : {
              "$ref" : "#/components/schemas/TelegramBotMessage"
            }
          }
        }
      },
      "TelegramBotButton" : {
        "required" : [ "text" ],
        "type" : "object",
        "properties" : {
          "text" : {
            "type" : "string",
            "description" : "<b>Required parameter.</b><br>Text shown on the button."
          },
          "link" : {
            "type" : "string",
            "description" : "<b>Either this parameter or callbackData is required.</b><br>An URL or a deeplink where user will go if selects the button."
          },
          "callbackData" : {
            "type" : "string",
            "description" : "<b>Either this parameter or link is required.</b><br>CallbackData - data for performing internal commands that redirect the user within the bot.",
            "example" : "callback|211|||goto|212|82/scanpack"
          }
        },
        "description" : "Used to implement unique action."
      },
      "TelegramBotMessage" : {
        "required" : [ "name" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Message ID.",
            "format" : "int32"
          },
          "name" : {
            "type" : "string",
            "description" : "Message name."
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Language code."
          },
          "tags" : {
            "type" : "array",
            "description" : "List of tags.",
            "items" : {
              "type" : "string",
              "description" : "List of tags."
            }
          },
          "subscriptionsKeys" : {
            "type" : "array",
            "description" : "Subscription categories keys, assigned to a message.",
            "items" : {
              "type" : "string",
              "description" : "Subscription categories keys, assigned to a message."
            }
          },
          "languages" : {
            "type" : "array",
            "description" : "An array with the language codes for multilingual messages. Available for the GET method only.",
            "items" : {
              "type" : "string",
              "description" : "An array with the language codes for multilingual messages. Available for the GET method only."
            }
          },
          "text" : {
            "type" : "string"
          },
          "imageSource" : {
            "type" : "string",
            "description" : "Image URL for a single image in a message.",
            "example" : "https://www.example.com/images/sample.jpg"
          },
          "buttons" : {
            "type" : "array",
            "description" : "Use buttons to implement various actions.",
            "items" : {
              "$ref" : "#/components/schemas/TelegramBotButton"
            }
          }
        },
        "description" : "An array with translations to other languages. Available for the GET method only."
      },
      "UnsubscribeParamsDto" : {
        "required" : [ "emails" ],
        "type" : "object",
        "properties" : {
          "emails" : {
            "type" : "array",
            "example" : [ "example@gmail.com" ],
            "items" : {
              "type" : "string",
              "example" : "[\"example@gmail.com\"]"
            }
          }
        }
      },
      "BaseViberMessage" : {
        "required" : [ "from", "name", "text" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Message ID.",
            "format" : "int32"
          },
          "name" : {
            "type" : "string",
            "description" : "Message name."
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Language code."
          },
          "tags" : {
            "type" : "array",
            "description" : "List of tags.",
            "items" : {
              "type" : "string",
              "description" : "List of tags."
            }
          },
          "subscriptionsKeys" : {
            "type" : "array",
            "description" : "Subscription categories keys, assigned to a message.",
            "items" : {
              "type" : "string",
              "description" : "Subscription categories keys, assigned to a message."
            }
          },
          "languages" : {
            "type" : "array",
            "description" : "An array with the language codes for multilingual messages. Available for the GET method only.",
            "items" : {
              "type" : "string",
              "description" : "An array with the language codes for multilingual messages. Available for the GET method only."
            }
          },
          "from" : {
            "type" : "string",
            "description" : "Sender name. Must exist in your account."
          },
          "transactional" : {
            "type" : "boolean",
            "description" : "Transactional messages have lower cost, but can contain only text. Content must be agreed with provider for successful sending. Default - false."
          },
          "text" : {
            "type" : "string",
            "description" : "Message text."
          },
          "img" : {
            "type" : "string",
            "description" : "Image URL for message. If set, caption and action must be set too."
          },
          "caption" : {
            "type" : "string",
            "description" : "Button text. If set, img and action must be set too."
          },
          "action" : {
            "type" : "string",
            "description" : "Link assigned to button. If set, img and caption must be set too."
          },
          "ttlSec" : {
            "type" : "integer",
            "description" : "Time to live for message in seconds. Default - 86400 (1 day).",
            "format" : "int32"
          },
          "smsFallback" : {
            "type" : "boolean",
            "description" : "Enables smsFallback feature: send SMS message instead of Viber, if contact does not have Viber app installed. Default - false."
          },
          "smsSender" : {
            "type" : "string",
            "description" : "SMS sender name for smsFallback feature."
          },
          "smsContent" : {
            "type" : "string",
            "description" : "SMS text for smsFallback feature."
          },
          "carouselItems" : {
            "type" : "array",
            "description" : "Carousel items (2-5 items). When provided, img/action/caption are ignored.",
            "items" : {
              "$ref" : "#/components/schemas/ViberCarouselItem"
            }
          },
          "translations" : {
            "type" : "array",
            "description" : "An array with translations to other languages. Available for the GET method only.",
            "items" : {
              "$ref" : "#/components/schemas/ViberMessage"
            }
          }
        }
      },
      "ViberCarouselItem" : {
        "required" : [ "img", "primaryAction", "primaryCaption", "title" ],
        "type" : "object",
        "properties" : {
          "img" : {
            "type" : "string",
            "description" : "Image URL (png, jpeg). HTTPS recommended."
          },
          "title" : {
            "type" : "string",
            "description" : "Short card title"
          },
          "primaryCaption" : {
            "type" : "string",
            "description" : "Primary button name"
          },
          "primaryAction" : {
            "type" : "string",
            "description" : "Primary button link"
          },
          "secondaryCaption" : {
            "type" : "string",
            "description" : "Secondary button name"
          },
          "secondaryAction" : {
            "type" : "string",
            "description" : "Secondary button link"
          }
        },
        "description" : "Viber carousel card item"
      },
      "ViberMessage" : {
        "required" : [ "from", "name", "text" ],
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Message ID.",
            "format" : "int32"
          },
          "name" : {
            "type" : "string",
            "description" : "Message name."
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Language code."
          },
          "tags" : {
            "type" : "array",
            "description" : "List of tags.",
            "items" : {
              "type" : "string",
              "description" : "List of tags."
            }
          },
          "subscriptionsKeys" : {
            "type" : "array",
            "description" : "Subscription categories keys, assigned to a message.",
            "items" : {
              "type" : "string",
              "description" : "Subscription categories keys, assigned to a message."
            }
          },
          "languages" : {
            "type" : "array",
            "description" : "An array with the language codes for multilingual messages. Available for the GET method only.",
            "items" : {
              "type" : "string",
              "description" : "An array with the language codes for multilingual messages. Available for the GET method only."
            }
          },
          "from" : {
            "type" : "string",
            "description" : "Sender name. Must exist in your account."
          },
          "transactional" : {
            "type" : "boolean",
            "description" : "Transactional messages have lower cost, but can contain only text. Content must be agreed with provider for successful sending. Default - false."
          },
          "text" : {
            "type" : "string",
            "description" : "Message text."
          },
          "img" : {
            "type" : "string",
            "description" : "Image URL for message. If set, caption and action must be set too."
          },
          "caption" : {
            "type" : "string",
            "description" : "Button text. If set, img and action must be set too."
          },
          "action" : {
            "type" : "string",
            "description" : "Link assigned to button. If set, img and caption must be set too."
          },
          "ttlSec" : {
            "type" : "integer",
            "description" : "Time to live for message in seconds. Default - 86400 (1 day).",
            "format" : "int32"
          },
          "smsFallback" : {
            "type" : "boolean",
            "description" : "Enables smsFallback feature: send SMS message instead of Viber, if contact does not have Viber app installed. Default - false."
          },
          "smsSender" : {
            "type" : "string",
            "description" : "SMS sender name for smsFallback feature."
          },
          "smsContent" : {
            "type" : "string",
            "description" : "SMS text for smsFallback feature."
          },
          "carouselItems" : {
            "type" : "array",
            "description" : "Carousel items (2-5 items). When provided, img/action/caption are ignored.",
            "items" : {
              "$ref" : "#/components/schemas/ViberCarouselItem"
            }
          }
        },
        "description" : "An array with translations to other languages. Available for the GET method only."
      },
      "WebPushDomainResult" : {
        "type" : "object",
        "properties" : {
          "domain" : {
            "type" : "string",
            "description" : "Domain name"
          },
          "message" : {
            "type" : "string",
            "description" : "Response message"
          },
          "status" : {
            "type" : "string",
            "description" : "Response status"
          }
        },
        "description" : "Web Push Domain Result"
      },
      "WebPushDomainsResults" : {
        "type" : "object",
        "properties" : {
          "success" : {
            "type" : "array",
            "description" : "List of successfully added domains",
            "items" : {
              "$ref" : "#/components/schemas/WebPushDomainResult"
            }
          },
          "errors" : {
            "type" : "array",
            "description" : "List of domains that could not be added",
            "items" : {
              "$ref" : "#/components/schemas/WebPushDomainResult"
            }
          }
        },
        "description" : "Web Push Domains Results"
      },
      "WebPushDomain" : {
        "required" : [ "domain", "serviceWorkerName", "serviceWorkerPath", "serviceWorkerScope" ],
        "type" : "object",
        "properties" : {
          "domain" : {
            "type" : "string",
            "description" : "Site for web push integration"
          },
          "serviceWorkerName" : {
            "type" : "string",
            "description" : "Web push service worker file name, in *.js format"
          },
          "serviceWorkerPath" : {
            "type" : "string",
            "description" : "Relative path on site, where service worker will be stored. Must start and end with slash"
          },
          "serviceWorkerScope" : {
            "type" : "string",
            "description" : "Relative path on site, where service worker will work. Usually is the same as serviceWorkerPath"
          }
        },
        "description" : "Web Push Domain"
      },
      "WebPushDomains" : {
        "type" : "object",
        "properties" : {
          "domains" : {
            "type" : "array",
            "description" : "List of WebPushDomain objects",
            "items" : {
              "$ref" : "#/components/schemas/WebPushDomain"
            }
          }
        },
        "description" : "Web Push Domains"
      },
      "ModifyContactsInGroup" : {
        "type" : "object",
        "properties" : {
          "contactIds" : {
            "type" : "array",
            "description" : "The list of attach/detach contact ids to static group (max. 500).",
            "items" : {
              "type" : "integer",
              "description" : "The list of attach/detach contact ids to static group (max. 500).",
              "format" : "int64"
            }
          },
          "externalCustomerIds" : {
            "type" : "array",
            "description" : "The list of attach/detach external contacts ids to static group (max. 500).",
            "items" : {
              "type" : "string",
              "description" : "The list of attach/detach external contacts ids to static group (max. 500)."
            }
          }
        }
      },
      "ContactSubscriptionCategoryUpsertRequest" : {
        "required" : [ "subscriptions" ],
        "type" : "object",
        "properties" : {
          "subscriptions" : {
            "type" : "array",
            "description" : "Subscription category keys",
            "items" : {
              "type" : "string",
              "description" : "Subscription category keys"
            }
          }
        }
      },
      "TokenPushActive" : {
        "type" : "object",
        "properties" : {
          "active" : {
            "type" : "boolean"
          }
        }
      },
      "ProductFeed" : {
        "type" : "object",
        "properties" : {
          "url" : {
            "type" : "string"
          },
          "language" : {
            "type" : "string"
          },
          "default" : {
            "type" : "boolean"
          }
        },
        "description" : "ProductFeed"
      },
      "ProductFeeds" : {
        "type" : "object",
        "properties" : {
          "feeds" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ProductFeed"
            }
          }
        }
      },
      "ContactBulkUpdateResult" : {
        "type" : "object",
        "properties" : {
          "failedContacts" : {
            "type" : "array",
            "description" : "The list of contacts that can not be added/updated.<br>\nIf 1 element is found, failedContacts is an object; if multiple elements are found, failedContacts is an array.",
            "items" : {
              "$ref" : "#/components/schemas/FailedContact"
            }
          },
          "asyncSessionId" : {
            "type" : "string",
            "description" : "Asynchronous import session ID. Used to obtain the import status using the <i>/v1/importstatus</i> method."
          },
          "errorMessage" : {
            "type" : "string"
          }
        },
        "description" : "The result of multiple contacts adding/updating."
      },
      "FailedContact" : {
        "required" : [ "channels" ],
        "type" : "object",
        "properties" : {
          "firstName" : {
            "type" : "string",
            "description" : "The contact’s first name. Numbers are not allowed."
          },
          "lastName" : {
            "type" : "string",
            "description" : "The contact’s last name. Numbers are not allowed."
          },
          "channels" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Channel"
            }
          },
          "address" : {
            "$ref" : "#/components/schemas/Address"
          },
          "fields" : {
            "type" : "array",
            "description" : "Values of the additional fields for a contact.",
            "items" : {
              "$ref" : "#/components/schemas/ContactField"
            }
          },
          "addressBookId" : {
            "type" : "integer",
            "description" : "Catalog id.<br/>You can get the info about catalogs using the <i>/v1/addressbooks GET</i> method.",
            "format" : "int32"
          },
          "id" : {
            "type" : "integer",
            "format" : "int64"
          },
          "contactKey" : {
            "type" : "string"
          },
          "groups" : {
            "type" : "array",
            "description" : "The list of the contact’s static segments. Used for receiving contacts only.",
            "items" : {
              "$ref" : "#/components/schemas/GroupDto"
            }
          },
          "languageCode" : {
            "type" : "string"
          },
          "timeZone" : {
            "type" : "string",
            "description" : "Time zone for a contact. See <a href='https://en.wikipedia.org/wiki/List_of_tz_database_time_zones'>TZ database name</a>"
          },
          "marketId" : {
            "type" : "string",
            "description" : "Market ID. Optional parameter. Up to 64 characters. Allowed: [a–zA-Z0–9-_]"
          },
          "error" : {
            "type" : "string",
            "description" : "Error message"
          }
        },
        "description" : "The list of contacts that can not be added/updated.<br>\nIf 1 element is found, failedContacts is an object; if multiple elements are found, failedContacts is an array."
      },
      "ContactsBulkUpdate" : {
        "required" : [ "contacts", "dedupeOn" ],
        "type" : "object",
        "properties" : {
          "contacts" : {
            "type" : "array",
            "description" : "The list of contacts that will be added or updated (max. 3000).<br/>If this array of objects contains externalCustomerId, the search uses externalCustomerId and ignores dedupeOn.",
            "items" : {
              "$ref" : "#/components/schemas/Contact"
            }
          },
          "dedupeOn" : {
            "type" : "string",
            "description" : "The field for determining the contact uniqueness.\n<b>Important</b> the field set as <b>dedupeOn</b> will not be updated",
            "enum" : [ "email", "sms", "push", "email_or_sms", "id", "externalCustomerId", "fieldId" ]
          },
          "fieldId" : {
            "type" : "integer",
            "description" : "The field for determining the contact uniqueness.\nThis field is taken into account when dedupeOnProperty has the fieldId value.",
            "format" : "int64"
          },
          "contactFields" : {
            "type" : "array",
            "description" : "The list of contacts’ fields to be updated. All the contact fields will be updated if this parameter is not specified.\nThe fields will be updated with the ‘null’ value if no data for updating is transmitted.",
            "items" : {
              "type" : "string",
              "description" : "The list of contacts’ fields to be updated. All the contact fields will be updated if this parameter is not specified.\nThe fields will be updated with the ‘null’ value if no data for updating is transmitted.",
              "enum" : [ "firstName", "contactKey", "ordersInfo", "lastName", "languageCode", "timeZone", "marketId", "email", "sms", "mobilepush", "webpush", "address", "town", "region", "externalCustomerId", "postcode", "countryCode", "firstName", "contactKey", "lastName", "languageCode", "timeZone", "marketId", "email", "sms", "mobilepush", "webpush", "address", "town", "region", "externalCustomerId", "postcode", "countryCode" ]
            },
            "enum" : [ "firstName", "contactKey", "lastName", "languageCode", "timeZone", "marketId", "email", "sms", "mobilepush", "webpush", "address", "town", "region", "externalCustomerId", "postcode", "countryCode" ]
          },
          "customFieldsIDs" : {
            "type" : "array",
            "description" : "The list of the custom field IDs to be updated.<br>\nThe custom fields are updated if their IDs are in this list.<br>\nThis field is required when a contact is updated",
            "items" : {
              "type" : "integer",
              "description" : "The list of the custom field IDs to be updated.<br>\nThe custom fields are updated if their IDs are in this list.<br>\nThis field is required when a contact is updated",
              "format" : "int32"
            }
          },
          "groupNames" : {
            "type" : "array",
            "description" : "The list of the segment names where the new/updated contacts will be added to.",
            "items" : {
              "type" : "string",
              "description" : "The list of the segment names where the new/updated contacts will be added to."
            }
          },
          "groupNamesExclude" : {
            "type" : "array",
            "description" : "The list of the segment names where the new/updated contacts will be excluded from.",
            "items" : {
              "type" : "string",
              "description" : "The list of the segment names where the new/updated contacts will be excluded from."
            }
          },
          "restoreDeleted" : {
            "type" : "boolean",
            "description" : "Choose either to restore the previously deleted contacts or not."
          },
          "eventKeyForNewContacts" : {
            "type" : "string",
            "description" : "The event type identification key. An event of corresponding type is generated for each contact. <br>\nIf the system does not have an event type with such a key, a new event type is created. <br>\nAll characters are allowed, except < ; ’ \\ / | \" ` ' ^ ? ! , > <br>\nMax length: 100 symbols"
          }
        },
        "description" : "Multiple adding/updating contacts."
      },
      "BroadcastView" : {
        "type" : "object",
        "properties" : {
          "broadcastId" : {
            "type" : "string"
          },
          "title" : {
            "type" : "string"
          },
          "messageId" : {
            "type" : "string"
          },
          "groupId" : {
            "type" : "string"
          },
          "startDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "batchSize" : {
            "type" : "integer",
            "description" : "The broadcasting speed management parameter—the number of messages per specified time interval",
            "format" : "int32"
          },
          "batchIntervalUnit" : {
            "type" : "string",
            "description" : "The broadcasting speed management parameter—the time interval.",
            "enum" : [ "MINUTE", "HOUR", "DAY", "MONTH" ]
          }
        }
      },
      "NewBroadcastRequest" : {
        "required" : [ "groups", "messageId" ],
        "type" : "object",
        "properties" : {
          "title" : {
            "type" : "string",
            "description" : "Broadcast title",
            "example" : "Season's discounts"
          },
          "messageId" : {
            "type" : "string",
            "description" : "Message ID",
            "example" : "AB2489300"
          },
          "groups" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int32"
            }
          },
          "excludedGroups" : {
            "type" : "array",
            "items" : {
              "type" : "integer",
              "format" : "int32"
            }
          },
          "startDate" : {
            "type" : "string",
            "description" : "The broadcast start date. Use the following format: &quot;YYYY-MM-DDTHH:mm&quot;. If not specified, the broadcast starts immediately",
            "example" : "2023-10-28T14:00"
          },
          "batchSize" : {
            "type" : "integer",
            "description" : "The broadcasting speed management parameter, the number of messages per specified time interval.",
            "format" : "int32",
            "example" : 50
          },
          "batchIntervalUnit" : {
            "type" : "string",
            "description" : "The broadcasting speed management parameter—the time interval.",
            "enum" : [ "MINUTE", "HOUR", "DAY", "MONTH" ]
          },
          "domain" : {
            "type" : "string",
            "description" : "Broadcast domain. For web push messages.",
            "example" : "SportsNewsUpdates"
          },
          "appId" : {
            "type" : "string",
            "description" : "Application ID. For mob push and telegram messages.",
            "example" : "8182a34b-9c87-4777-8de1-598f2df9de4f"
          }
        }
      },
      "DomainCreationResult" : {
        "type" : "object",
        "properties" : {
          "result" : {
            "type" : "string"
          },
          "siteId" : {
            "type" : "string"
          }
        }
      },
      "DomainCreationRequest" : {
        "required" : [ "domain" ],
        "type" : "object",
        "properties" : {
          "domain" : {
            "type" : "string",
            "description" : "Domain name"
          }
        },
        "description" : "DomainCreationRequest"
      },
      "ProductDeleteItem" : {
        "type" : "object",
        "properties" : {
          "productId" : {
            "type" : "string",
            "description" : "Unique product identifier within siteId",
            "example" : "SKU123"
          },
          "updatedDate" : {
            "type" : "string",
            "description" : "Source ordering timestamp in UTC",
            "example" : "2026-04-01T10:10:00Z"
          }
        },
        "description" : "Product delete item"
      },
      "ProductDeleteRequest" : {
        "type" : "object",
        "properties" : {
          "siteId" : {
            "type" : "string",
            "description" : "Client site/account identifier",
            "example" : "my_store"
          },
          "products" : {
            "type" : "array",
            "description" : "Products to delete",
            "items" : {
              "$ref" : "#/components/schemas/ProductDeleteItem"
            }
          }
        },
        "description" : "Products delete request"
      },
      "FileValidationResult" : {
        "type" : "object",
        "properties" : {
          "message" : {
            "type" : "string"
          },
          "importId" : {
            "type" : "string",
            "xml" : {
              "name" : "asyncSessionId"
            }
          },
          "fileId" : {
            "type" : "string"
          },
          "valid" : {
            "type" : "boolean"
          }
        },
        "xml" : {
          "name" : "fileValidationResult"
        }
      },
      "FileContactsBulkUpdate" : {
        "required" : [ "dedupeOn", "link" ],
        "type" : "object",
        "properties" : {
          "dedupeOn" : {
            "type" : "string",
            "description" : "The property for determining the contact uniqueness.",
            "enum" : [ "email", "sms", "email_or_sms", "id" ]
          },
          "link" : {
            "type" : "string",
            "description" : "The link to a file in an external repository.</br>\n<b>File Requirements:</b><br/>\nNot empty<br/>\nDelimiters - \",\"<br/>\nMaximum size 100 MB\n<br/>\n<b>Requirement for column naming:</b><br/>\nFirst name. The following rules apply to character usage:<br/>\n- Max length: 40 symbols. <br>- Letters from any alphabet are allowed (Unicode characters). <br>- Three words longer than 3 characters and three words with a maximum of 3 characters are allowed. <br>- Up to 3 digits are allowed. <br>- Special characters are not allowed, except for: <br>-- Apostrophes ''ʼ`´ʹʻʽʾʿˈˊˮʹ΄՚᾽᾿'‛′‵Ꞌꞌ＇ (only inside words) <br>-- Hyphen - (only inside words) <br>-- One dot at the end of words having max 3 characters. Example: Jr. <br>- Names consisting only of numbers and special characters are not allowed <br>\nLast name. The following rules apply to character usage:<br/>\n- Max length: 40 symbols. <br>- Letters from any alphabet are allowed (Unicode characters). <br>- Three words longer than 3 characters and three words with a maximum of 3 characters are allowed. <br>- Up to 3 digits are allowed. <br>- Special characters are not allowed, except for: <br>-- Apostrophes ''ʼ`´ʹʻʽʾʿˈˊˮʹ΄՚᾽᾿'‛′‵Ꞌꞌ＇ (only inside words) <br>-- Hyphen - (only inside words) <br>-- One dot at the end of words having max 3 characters. Example: Jr. <br>- Names consisting only of numbers and special characters are not allowed <br>\nAddress<br/>\nRegion<br/>\nCity<br/>\nPostcode<br/>\nEmail<br/>\nSMS<br/>\nLanguage code<br/>\nTimezone<br/>\nContact ID<br/>\nAdditional info<br/>\nThe columns containing additional contact fields in a file shall be named: KEY_PROFILE.KEY_CUSTOMFIELD<br/>\nThe fields that are not found in the system remain empty (not updated).",
            "example" : "https://github.com/example-user/example-repo/blob/main/example-file.txt"
          },
          "groupNames" : {
            "type" : "array",
            "description" : "The list of segment names where new/updated contacts will be added to.",
            "items" : {
              "type" : "string",
              "description" : "The list of segment names where new/updated contacts will be added to."
            }
          },
          "groupNamesExclude" : {
            "type" : "array",
            "description" : "The list of segment names where new/updated contacts will be excluded from.",
            "items" : {
              "type" : "string",
              "description" : "The list of segment names where new/updated contacts will be excluded from."
            }
          },
          "restoreDeleted" : {
            "type" : "boolean",
            "description" : "Add previously deleted contacts."
          },
          "eventKeyForNewContacts" : {
            "type" : "string",
            "description" : "Event type identification key. An event of corresponding type is generated for each contact. <br>\nIf the system does not have an event type with such a key, a new event type is created. <br>\nAll characters are allowed, except < ; ’ \\ / | \" ` ' ^ ? ! , > <br>\nMax length: 100 symbols",
            "example" : "newContactweb"
          }
        }
      },
      "AccountInfo" : {
        "type" : "object",
        "properties" : {
          "orgId" : {
            "type" : "integer",
            "format" : "int32"
          },
          "userEmail" : {
            "type" : "string"
          },
          "organisationName" : {
            "type" : "string"
          }
        }
      },
      "AdditionalAllowedValues" : {
        "type" : "object",
        "properties" : {
          "possibleValues" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "minValue" : {
            "type" : "integer",
            "format" : "int32"
          },
          "maxValue" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "AdditionalFieldDescription" : {
        "type" : "object",
        "properties" : {
          "type" : {
            "type" : "string",
            "enum" : [ "textfield", "combobox", "checkboxlist", "textarea", "date", "number", "datetime", "decimal", "tags" ]
          },
          "allowedValues" : {
            "$ref" : "#/components/schemas/AdditionalAllowedValues"
          },
          "required" : {
            "type" : "boolean"
          },
          "readonly" : {
            "type" : "boolean"
          }
        }
      },
      "AdditionalFieldInfo" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "format" : "int64"
          },
          "name" : {
            "type" : "string"
          },
          "fieldKey" : {
            "type" : "string"
          },
          "description" : {
            "$ref" : "#/components/schemas/AdditionalFieldDescription"
          }
        },
        "description" : "Additional contact fields assigned to this list"
      },
      "AdditionalFields" : {
        "type" : "object",
        "properties" : {
          "additionalFieldsLists" : {
            "type" : "array",
            "description" : "The lists of additional fields available for contacts in your organization",
            "items" : {
              "$ref" : "#/components/schemas/AdditionalFieldsList"
            }
          }
        }
      },
      "AdditionalFieldsList" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "The name of additional fields list"
          },
          "personalisationKey" : {
            "type" : "string",
            "description" : "The personalization key of additional fields list"
          },
          "additionalFields" : {
            "type" : "array",
            "description" : "Additional contact fields assigned to this list",
            "items" : {
              "$ref" : "#/components/schemas/AdditionalFieldInfo"
            }
          }
        },
        "description" : "The lists of additional fields available for contacts in your organization"
      },
      "AddressBook" : {
        "type" : "object",
        "properties" : {
          "addressBookId" : {
            "type" : "integer",
            "description" : "The catalog ID",
            "format" : "int32"
          },
          "name" : {
            "type" : "string",
            "description" : "The catalog name"
          },
          "fieldGroups" : {
            "type" : "array",
            "description" : "The lists of additional fields assigned to this catalog.<br>\nIf 1 element is found, fieldGroups is an object; if multiple elements are found, fieldGroups is an array.",
            "items" : {
              "$ref" : "#/components/schemas/FieldGroup"
            }
          }
        },
        "description" : "The list of catalogs. If 1 element is found, addressBook is an object, if multiple elements are found, addressBook is an array."
      },
      "AddressBooks" : {
        "type" : "object",
        "properties" : {
          "addressBook" : {
            "type" : "array",
            "description" : "The list of catalogs. If 1 element is found, addressBook is an object, if multiple elements are found, addressBook is an array.",
            "items" : {
              "$ref" : "#/components/schemas/AddressBook"
            }
          }
        }
      },
      "AllowedValues" : {
        "type" : "object",
        "properties" : {
          "possibleValues" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "minValue" : {
            "type" : "integer",
            "format" : "int32"
          },
          "maxValue" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "FieldDescription" : {
        "type" : "object",
        "properties" : {
          "type" : {
            "type" : "string",
            "enum" : [ "textfield", "combobox", "checkboxlist", "textarea", "date", "number", "datetime", "decimal", "tags" ]
          },
          "allowedValues" : {
            "$ref" : "#/components/schemas/AllowedValues"
          },
          "required" : {
            "type" : "boolean"
          },
          "readonly" : {
            "type" : "boolean"
          }
        }
      },
      "FieldGroup" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string",
            "description" : "The name of additional fields group."
          },
          "profileKey" : {
            "type" : "string",
            "description" : "The key of additional fields group."
          },
          "fields" : {
            "type" : "array",
            "description" : "Fields. If 1 element is found, 'fields' will be an object; if multiple elements are found, 'fields' will be an array.",
            "items" : {
              "$ref" : "#/components/schemas/FieldInfo"
            }
          }
        },
        "description" : "The lists of additional fields assigned to this catalog.<br>\nIf 1 element is found, fieldGroups is an object; if multiple elements are found, fieldGroups is an array."
      },
      "FieldInfo" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "format" : "int64"
          },
          "name" : {
            "type" : "string"
          },
          "fieldKey" : {
            "type" : "string"
          },
          "description" : {
            "$ref" : "#/components/schemas/FieldDescription"
          }
        },
        "description" : "Fields. If 1 element is found, 'fields' will be an object; if multiple elements are found, 'fields' will be an array."
      },
      "ContactEmail" : {
        "type" : "object",
        "properties" : {
          "contactId" : {
            "type" : "integer",
            "format" : "int64"
          },
          "email" : {
            "type" : "string"
          }
        },
        "description" : "If 1 element is found, results will be an object; if multiple elements are found, results will be an array."
      },
      "ContactEmails" : {
        "type" : "object",
        "properties" : {
          "results" : {
            "type" : "array",
            "description" : "If 1 element is found, results will be an object; if multiple elements are found, results will be an array.",
            "items" : {
              "$ref" : "#/components/schemas/ContactEmail"
            }
          }
        }
      },
      "ContactSubscriptionCategoryDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "format" : "int32"
          },
          "key" : {
            "type" : "string",
            "description" : "Organization’s unique subscription category key."
          },
          "groupId" : {
            "type" : "integer",
            "description" : "The group ID related to a subscription category.",
            "format" : "int64"
          },
          "name" : {
            "type" : "string"
          }
        }
      },
      "Domain" : {
        "required" : [ "domain" ],
        "type" : "object",
        "properties" : {
          "domain" : {
            "type" : "string",
            "description" : "Domain name"
          },
          "siteId" : {
            "type" : "string"
          }
        },
        "description" : "Domain"
      },
      "InterfaceDto" : {
        "type" : "object",
        "properties" : {
          "type" : {
            "type" : "string",
            "description" : "The interface type (sms, email)"
          },
          "value" : {
            "type" : "string"
          }
        }
      },
      "MessageViewInBrowserLink" : {
        "type" : "object",
        "properties" : {
          "link" : {
            "type" : "string"
          }
        }
      },
      "DedupeMapping" : {
        "type" : "object",
        "properties" : {
          "dedupeValue" : {
            "type" : "string",
            "description" : "A value of the field used to determine the contact uniqueness."
          },
          "contactId" : {
            "type" : "integer",
            "format" : "int64"
          }
        },
        "description" : "The list of contact IDs created/updated as a result of the import.<br>\nAn array of \"key\" - \"value\" pairs, where the key is a contact field used to determine uniqueness, and the value is the contact ID."
      },
      "ImportSessionStatus" : {
        "type" : "object",
        "properties" : {
          "status" : {
            "type" : "string",
            "description" : "<b>STARTED</b> - import session in queue for processing.<br/>\n<b>IMPORTING</b> - import session being processed at the moment.<br/>\n<b>FINISHED</b> - import session completed successfully.<br/>\n<b>ERROR</b> - error when processing import session."
          },
          "timestamp" : {
            "type" : "string",
            "description" : "The status setting time in the ISO 8601 format."
          },
          "description" : {
            "type" : "string",
            "description" : "Additional description. Optional."
          },
          "mapping" : {
            "type" : "array",
            "description" : "The list of contact IDs created/updated as a result of the import.<br>\nAn array of \"key\" - \"value\" pairs, where the key is a contact field used to determine uniqueness, and the value is the contact ID.",
            "items" : {
              "$ref" : "#/components/schemas/DedupeMapping"
            }
          }
        }
      },
      "InstantMessageStatusDto" : {
        "type" : "object",
        "properties" : {
          "status" : {
            "type" : "string",
            "description" : "<b>Email:</b><br/><br/>\n\t<b>IN_QUEUE</b>: Message is in queue for sending.<br/>\n\t<b>DELIVERED</b>: Message is delivered.<br/>\n\t<b>UNDELIVERED</b>: Message is not delivered.<br/>\n\t<b>BLACKLISTED</b>: Email is in blacklist.<br/>\n\t<b>NOT_CONFIRMED</b>: Email is not confirmed.<br/>\n\t<b>UNSUBSCRIBED</b>: Unsubscribed email.<br/>\n\t<b>SPAM</b>: Email is reported as spam.<br/>\n\t<b>READ</b>: Message was read.<br/>\n\t<b>CLICKED</b>: Contact clicked the links in the message.<br/>\n\t<b>NO_MONEY</b>: Insufficient funds for sending.<br/><br/>\n\t<b>ERROR</b>: SMTP/ESMTP or other sending error.<br/><br/>\n\t\n\t <b>SMS:</b><br/><br/>\n\t<b>IN_QUEUE</b>: Message is in queue for sending.<br/>\n\t<b>PENDING</b>: Message was sent, but delivery confirmation has not been received yet.<br/>\n\t<b>DELIVERED</b>: Message is delivered.<br/>\n\t<b>SMS_UNDELIVERED_STATE</b>: Message is not delivered.<br/>\n\t<b>EXPIRED</b>: Message status waiting time is over.<br/>\n\t<b>NO_MONEY</b>: Insufficient funds for sending.<br/><br/>\n\t\n\t<b>Viber:</b><br/><br/>\n\t<b>IN_QUEUE</b>: Message is in queue for sending.<br/>\n\t<b>PENDING</b>: Message was sent, but delivery confirmation has not been received yet.<br/>\n\t<b>DELIVERED</b>: Message is delivered.<br/>\n\t<b>READ</b>: Message is read.<br/>\n\t<b>CLICKED</b>: Contact clicked the links in the message.<br/>\n\t<b>VIBER_UNKNOWN_USER</b>: Viber application is not installed on the mobile device.<br/>\n\t<b>VIBER_UNDELIVERED_STATE</b>: Message is not delivered.<br/>\n\t<b>VIBER_EXPIRED_STATE</b>: Message status waiting time is over.<br/>\n\t<b>NO_MONEY</b>: Insufficient funds for sending.<br/>\n\t\n\t<b>Telegram:</b><br/><br/>\n\t<b>DELIVERED</b>: The message is delivered.<br/>\n\t<b>BOT_SEND_ERROR</b>: The message is not delivered because the recipient has blocked it or the chat was not found.<br/>\n\t<b>CLICKED</b>: The recipient followed the link in the message."
          },
          "requestId" : {
            "type" : "string",
            "description" : "Message delivery identifier. Used for getting the status."
          },
          "failed" : {
            "type" : "boolean",
            "description" : "When <b>true</b>, the message has not been delivered. The reason is in the <b>status</b> field."
          },
          "delivered" : {
            "type" : "boolean",
            "description" : "When <b>true</b>, message has been delivered to the contact."
          }
        },
        "description" : "If 1 element is found, 'results' will be an object; if several elements are found, 'results' will be an array."
      },
      "InstantMessagesStatusDto" : {
        "type" : "object",
        "properties" : {
          "results" : {
            "type" : "array",
            "description" : "If 1 element is found, 'results' will be an object; if several elements are found, 'results' will be an array.",
            "items" : {
              "$ref" : "#/components/schemas/InstantMessageStatusDto"
            }
          }
        }
      },
      "BillingHistory" : {
        "type" : "object",
        "properties" : {
          "currency" : {
            "type" : "string",
            "description" : "Currency code",
            "enum" : [ "BYR", "CAD", "GBP", "EUR", "KZT", "RUB", "UAH", "USD" ]
          },
          "dailyCosts" : {
            "type" : "array",
            "description" : "Array of data by days",
            "items" : {
              "$ref" : "#/components/schemas/BillingHistoryDay"
            }
          }
        }
      },
      "BillingHistoryDay" : {
        "type" : "object",
        "properties" : {
          "date" : {
            "type" : "string",
            "description" : "Detail date",
            "format" : "date-time"
          },
          "channelDetails" : {
            "type" : "array",
            "description" : "An array of data for each media channel",
            "items" : {
              "$ref" : "#/components/schemas/ChannelCosts"
            }
          }
        },
        "description" : "Array of data by days"
      },
      "ChannelCosts" : {
        "type" : "object",
        "properties" : {
          "mediaType" : {
            "type" : "string",
            "description" : "Media channel",
            "enum" : [ "email", "sms", "viber", "mobilepush", "webpush", "appinbox", "widget", "inapp", "telegrambot" ]
          },
          "totalSent" : {
            "type" : "integer",
            "description" : "The number of sent messages for a given day",
            "format" : "int32"
          },
          "totalParts" : {
            "type" : "integer",
            "description" : "The number of <i>parts</i> in sent messages<br>Relevant for <b>SMS messages</b>: they can contain one or more parts<br>For other media channels will be equal to totalSent.",
            "format" : "int32"
          },
          "bonusSpent" : {
            "type" : "integer",
            "description" : "Debited prepaid messages",
            "format" : "int32"
          },
          "fundsWithdrawal" : {
            "type" : "number",
            "description" : "Debited funds",
            "format" : "double"
          },
          "fundsRefund" : {
            "type" : "number",
            "description" : "Returned funds<br>May be relevant for <b>SMS</b> and/or <b>Viber</b> media channels",
            "format" : "double"
          },
          "bonusReceived" : {
            "type" : "integer",
            "description" : "Received prepaid messages. Accrued when subscription is connected/renewed",
            "format" : "int32"
          },
          "reservedFundsWithdrawal" : {
            "type" : "number",
            "description" : "Debited reserved funds.<br>May be relevant for <b>Viber</b> media channel only",
            "format" : "double"
          },
          "reservedFundsRefund" : {
            "type" : "number",
            "description" : "Returned reserved funds.<br>May be relevant for <b>Viber</b> media channel only",
            "format" : "double"
          }
        },
        "description" : "An array of data for each media channel"
      },
      "SubscriptionCategoryDto" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "format" : "int32"
          },
          "key" : {
            "type" : "string",
            "description" : "Organization’s unique subscription category key."
          },
          "groupId" : {
            "type" : "integer",
            "description" : "The group ID related to a subscription category.",
            "format" : "int64"
          },
          "contactsCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "createdDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "updatedDate" : {
            "type" : "string",
            "format" : "date-time"
          },
          "name" : {
            "type" : "string"
          }
        }
      },
      "Balance" : {
        "type" : "object",
        "properties" : {
          "currentBalance" : {
            "type" : "number",
            "format" : "double"
          },
          "creditLimit" : {
            "type" : "number",
            "description" : "Credit limit—the maximum outstanding balance.",
            "format" : "double"
          },
          "currency" : {
            "type" : "string",
            "description" : "Currency code in the <a href=\"https://en.wikipedia.org/wiki/ISO_4217\">ISO 4217</a> format"
          },
          "sendersReservedBalances" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "array",
              "description" : "Available balance by the media type and sender",
              "items" : {
                "$ref" : "#/components/schemas/SendersReservedBalance"
              }
            },
            "description" : "Available balance by the media type and sender"
          },
          "bonusEmails" : {
            "type" : "integer",
            "description" : "Prepaid emails count",
            "format" : "int32"
          },
          "bonusSmses" : {
            "type" : "integer",
            "description" : "Prepaid SMS count",
            "format" : "int32"
          }
        }
      },
      "SendersReservedBalance" : {
        "type" : "object",
        "properties" : {
          "senderId" : {
            "type" : "integer",
            "format" : "int32"
          },
          "balance" : {
            "type" : "number",
            "format" : "double"
          },
          "senderName" : {
            "type" : "string"
          }
        },
        "description" : "Available balance by the media type and sender"
      },
      "WebPushScript" : {
        "required" : [ "script", "serviceWorker" ],
        "type" : "object",
        "properties" : {
          "script" : {
            "type" : "string",
            "description" : "Script for web push notifications"
          },
          "serviceWorker" : {
            "type" : "string",
            "description" : "Service worker for web push notifications"
          }
        },
        "description" : "Web Push Script"
      },
      "PromoCodesCsvRequest" : {
        "type" : "object",
        "properties" : {
          "file" : {
            "type" : "string",
            "description" : "CSV file with promo codes",
            "format" : "binary"
          }
        }
      },
      "PromocodesPayloadDto" : {
        "required" : [ "discount", "expirationDate", "promocodes" ],
        "type" : "object",
        "properties" : {
          "promocodes" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "expirationDate" : {
            "type" : "string"
          },
          "discount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "type" : {
            "type" : "string"
          },
          "inUse" : {
            "type" : "boolean"
          }
        }
      },
      "MuteToken" : {
        "required" : [ "token" ],
        "type" : "object",
        "properties" : {
          "token" : {
            "type" : "string",
            "description" : "Application token.",
            "example" : "8256374910:BBGHQOp2J_Fk7mZyw34ty660nmHs5d7JKLP"
          },
          "duration" : {
            "type" : "integer",
            "description" : "Mute duration in seconds. If not set, notifications are muted permanently.<br><ul><li>Minimum value: 5</li><li>Maximum value: 31,536,000 (approximately 1 year)</li></ul>",
            "format" : "int64",
            "example" : 5
          }
        }
      },
      "FailedOrder" : {
        "required" : [ "error", "order" ],
        "type" : "object",
        "properties" : {
          "order" : {
            "$ref" : "#/components/schemas/Order"
          },
          "error" : {
            "type" : "string",
            "description" : "Error message"
          }
        }
      },
      "FailedOrders" : {
        "type" : "object",
        "properties" : {
          "failedOrders" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/FailedOrder"
            }
          }
        },
        "description" : "The list of orders that cannot be added or updated.<br/>The possible reasons for an order to fail:</br>- One or more required fields are empty, or the format is incorrect.</br>- All of the following optional fields are empty: <i>externalCustomerId</i>, <i>email</i>, <i>phone</i>. At least one of them is required for order creation."
      },
      "Order" : {
        "required" : [ "currency", "date", "externalOrderId", "status", "totalCost" ],
        "type" : "object",
        "properties" : {
          "externalOrderId" : {
            "type" : "string",
            "description" : "ID of an order in the external system",
            "example" : "BC12345678"
          },
          "externalCustomerId" : {
            "type" : "string",
            "description" : "External contact id. Required if email and phone are empty",
            "example" : "TV12790"
          },
          "totalCost" : {
            "type" : "number",
            "description" : "Total cost of the order"
          },
          "status" : {
            "type" : "string",
            "description" : "Order status",
            "enum" : [ "INITIALIZED", "IN_PROGRESS", "DELIVERED", "CANCELLED", "ABANDONED_SHOPPING_CART" ]
          },
          "date" : {
            "type" : "string",
            "description" : "Order date and time",
            "format" : "date-time",
            "example" : "2022-05-14T10:11:10.7022176+03:00"
          },
          "currency" : {
            "type" : "string",
            "description" : "Currency according to <a href=\"https://en.wikipedia.org/wiki/ISO_4217\">ISO 4217</a>"
          },
          "email" : {
            "type" : "string",
            "description" : "Required if externalCustomerId and phone are empty",
            "example" : "john.doe@example.com"
          },
          "phone" : {
            "type" : "string",
            "description" : "Required if email and externalCustomerId are empty"
          },
          "firstName" : {
            "type" : "string"
          },
          "lastName" : {
            "type" : "string"
          },
          "shipping" : {
            "type" : "number"
          },
          "discount" : {
            "type" : "number"
          },
          "taxes" : {
            "type" : "number"
          },
          "restoreUrl" : {
            "type" : "string"
          },
          "statusDescription" : {
            "type" : "string"
          },
          "storeId" : {
            "type" : "string",
            "description" : "Store ID (if you have several stores in one eSputnik account)"
          },
          "marketId" : {
            "type" : "string",
            "description" : "Customer market/region identifier. Optional parameter. Up to 64 characters. Allowed pattern: ^[a-zA-Z0-9_-]{1,64}$",
            "example" : "kyiv"
          },
          "source" : {
            "type" : "string",
            "description" : "Online | offline values for segmentation. If the field is empty or some other value, by default the order will be accepted as online"
          },
          "deliveryMethod" : {
            "type" : "string"
          },
          "paymentMethod" : {
            "type" : "string"
          },
          "deliveryAddress" : {
            "type" : "string"
          },
          "additionalInfo" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "object"
            }
          },
          "items" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OrderItem"
            }
          }
        }
      },
      "OrderItem" : {
        "required" : [ "externalItemId", "quantity" ],
        "type" : "object",
        "properties" : {
          "externalItemId" : {
            "type" : "string",
            "description" : "Product ID in the external system",
            "example" : "2345678"
          },
          "name" : {
            "type" : "string",
            "description" : "Product name",
            "example" : "Smart Watch Series 7"
          },
          "category" : {
            "type" : "string",
            "description" : "Product category",
            "example" : "Smart watches"
          },
          "quantity" : {
            "type" : "number",
            "description" : "Number of items",
            "format" : "double"
          },
          "cost" : {
            "type" : "number",
            "description" : "Product price"
          },
          "url" : {
            "type" : "string",
            "description" : "Link to the product page"
          },
          "imageUrl" : {
            "type" : "string",
            "description" : "Link to the product image"
          },
          "description" : {
            "type" : "string",
            "description" : "Short description of the product"
          }
        }
      },
      "Orders" : {
        "type" : "object",
        "properties" : {
          "orders" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Order"
            }
          }
        },
        "description" : "Order list (max <b>1000</b> orders per request)."
      },
      "EventDto" : {
        "required" : [ "eventTypeKey" ],
        "type" : "object",
        "properties" : {
          "eventTypeKey" : {
            "type" : "string",
            "description" : "Event type ID key. If no event type exists with this key, a new event is created.<br>\nAll characters are allowed except < ; ’ \\ / | \" ` ' ^ ? ! , > <br/>Max length: 100 symbols",
            "example" : "abandonedCart"
          },
          "keyValue" : {
            "type" : "string",
            "description" : "Event key. Determines event uniqueness.<br>\nThe key must contain a unique value for each contact (for example, email, phone number, external contact id, etc.)<br>\nIf this parameter is not set, params must contain one of the following contact identifiers:<br/>- contactId <br/>- externalCustomerId <br/>- email <br/>- phone <br/>- pushToken: web or mobile <br/>All characters are allowed except the following ones < ; ’ \\ / | \" ` ' ^ ? ! , > <br/>Max length: 300 symbols",
            "example" : "contact@mail.com"
          },
          "params" : {
            "type" : "array",
            "description" : "List of event parameters represented as an array of \"key\" - \"value\" pairs. The parameter keys are arbitrary. <br>\nUsed in campaigns and for creating dynamic content in messages.</div>",
            "example" : [ "discount", "12%" ],
            "items" : {
              "$ref" : "#/components/schemas/Parameter"
            }
          }
        }
      },
      "Parameter" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "value" : {
            "type" : "string"
          }
        },
        "description" : "The list of event parameters represented as an array of \"key\" - \"value\" pairs. The parameter keys are arbitrary. <br>\n\tUsed in campaigns and for creating dynamic content in messages."
      },
      "InteractionStatusChange" : {
        "type" : "object",
        "properties" : {
          "token" : {
            "type" : "string",
            "description" : "Device token",
            "example" : "f8a2b8c9-4e5f-41d3-9a7c-98b6aef22736"
          },
          "status" : {
            "type" : "string",
            "description" : "Message status",
            "enum" : [ "DELIVERED", "OPENED", "CLICKED", "UNDELIVERED" ]
          },
          "time" : {
            "type" : "string",
            "description" : "The status change date and time in the YYYY-MM-DDThh:mm:ssZ format",
            "example" : "2023-09-15T14:30:00+02:00"
          }
        }
      },
      "Period" : {
        "type" : "object",
        "properties" : {
          "from" : {
            "type" : "string",
            "description" : "Start date (inclusively).",
            "example" : "2023-08-14T10:25"
          },
          "to" : {
            "type" : "string",
            "description" : "End date (inclusively).",
            "example" : "2023-10-12T12:33"
          }
        }
      },
      "BaseContact" : {
        "type" : "object",
        "properties" : {
          "firstName" : {
            "type" : "string"
          },
          "lastName" : {
            "type" : "string"
          },
          "channels" : {
            "type" : "array",
            "description" : "List of media channels.<br/>You can add maximum two channels of the same type. It is necessary to specify at least one channel.",
            "items" : {
              "$ref" : "#/components/schemas/Channel"
            }
          },
          "fields" : {
            "type" : "array",
            "description" : "The values of the contact’s additional fields.",
            "items" : {
              "$ref" : "#/components/schemas/ContactField"
            }
          },
          "addressBookId" : {
            "type" : "integer",
            "description" : "Catalog ID.<br/>You can get the value using the <i> GET /v1/addressbooks</i> method.<br/>Optional parameter.",
            "format" : "int32"
          },
          "id" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "Workflow" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "description" : "Workflow ID",
            "format" : "int32",
            "example" : 200400
          },
          "name" : {
            "type" : "string",
            "description" : "Workflow name",
            "example" : "Contact confirmation"
          },
          "status" : {
            "type" : "string",
            "description" : "Possible values: active, inactive"
          },
          "tags" : {
            "type" : "array",
            "description" : "Workflow tags. If 1 element is found, 'tags' will be an object; if multiple elements are found, 'tags' will be an array.",
            "example" : "promo",
            "items" : {
              "type" : "string",
              "description" : "Workflow tags. If 1 element is found, 'tags' will be an object; if multiple elements are found, 'tags' will be an array.",
              "example" : "promo"
            }
          }
        },
        "description" : "Workflow"
      },
      "SendMessageResultDto" : {
        "type" : "object",
        "properties" : {
          "locator" : {
            "type" : "string",
            "description" : "The message recipient email address or phone number."
          },
          "status" : {
            "type" : "string",
            "description" : "Results:<br>\n\t <b>OK</b> - success to queue the message for sending. Get the message status using <b>requestId</b>.<br/>\n\t <b>ERROR</b> - failure to queue the message for sending."
          },
          "requestId" : {
            "type" : "string",
            "description" : "ID of the sent message. The field is present when a message has been successfully queued for sending."
          },
          "message" : {
            "type" : "string",
            "description" : "Error details. The field is present when the status is <b>ERROR</b>."
          }
        },
        "description" : "Result of sending one message."
      },
      "SendMessageResultsDto" : {
        "type" : "object",
        "properties" : {
          "results" : {
            "type" : "array",
            "description" : "The list of results. This is an object when results contain a single element, and an array when results contain multiple elements.",
            "items" : {
              "$ref" : "#/components/schemas/SendMessageResultDto"
            }
          }
        },
        "description" : "Messages sending results."
      },
      "OutgoingEmail" : {
        "required" : [ "emails", "from", "htmlText", "subject" ],
        "type" : "object",
        "properties" : {
          "from" : {
            "type" : "string",
            "description" : "Sender address (enter one of the valid sender addresses).\nAddress format: \"\\\"name\\\" &lt;test@mail.com&gt;\"",
            "example" : "john.smith@address.com"
          },
          "subject" : {
            "type" : "string",
            "description" : "Message subject",
            "example" : "Seasonal sale"
          },
          "htmlText" : {
            "type" : "string",
            "description" : "Message HTML code"
          },
          "plainText" : {
            "type" : "string",
            "description" : "Version of the message in plain text",
            "example" : "Explore our new collection"
          },
          "ampHtmlText" : {
            "type" : "string",
            "description" : "Message AMP HTML code"
          },
          "emails" : {
            "type" : "array",
            "description" : "The list of recipients",
            "items" : {
              "type" : "string",
              "description" : "The list of recipients"
            }
          },
          "tags" : {
            "type" : "array",
            "description" : "The list of tags assigned to the message",
            "items" : {
              "type" : "string",
              "description" : "The list of tags assigned to the message"
            }
          },
          "externalRequestId" : {
            "type" : "string",
            "description" : "External request ID. It is the same for all the recipients"
          },
          "skipPersonalisation" : {
            "type" : "boolean",
            "description" : "Skip the application of personalization to the message"
          },
          "subscriptionsKeys" : {
            "type" : "array",
            "description" : "Array of subscription category keys added to the message",
            "items" : {
              "type" : "string",
              "description" : "Array of subscription category keys added to the message"
            }
          },
          "trackUrls" : {
            "type" : "boolean",
            "description" : "The parameter determines whether to track links in the message or not. The default value is ‘true’"
          }
        }
      },
      "ExtendedPreparedMessageParameters" : {
        "required" : [ "recipients" ],
        "type" : "object",
        "properties" : {
          "recipients" : {
            "uniqueItems" : true,
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ParametrizedLocator"
            }
          },
          "email" : {
            "type" : "boolean",
            "description" : "Message type.<br><b>true</b> for email, <b>false</b> for other media-channels."
          },
          "fromName" : {
            "type" : "string",
            "description" : "Sender name.<br>\nFor email, indicate the sender name only, without an email address. The sender's email address selected in the message is used.<br>\nFor SMS, use the alphanumeric sender ID.<br>\nIf the parameter is not indicated, the sender name selected in the message is used."
          }
        }
      },
      "ParametrizedLocator" : {
        "type" : "object",
        "properties" : {
          "contactId" : {
            "type" : "integer",
            "description" : "Required parameter, if &quot;locator&quot; and &quot;externalCustomerId&quot; are not specified.",
            "format" : "int64"
          },
          "externalCustomerId" : {
            "type" : "string",
            "description" : "Required parameter, if &quot;locator&quot; and &quot;contactId&quot; are not specified."
          },
          "locator" : {
            "type" : "string",
            "description" : "Recipient's media-channel. <b>Required parameter</b>, if &quot;contactId&quot; and &quot;externalCustomerId&quot; are not specified.<br>\nFor example: email-address for email messages; phone number for SMS or Viber; token for Web or Mob-push messages; chat_id for Telegram bot."
          },
          "jsonParam" : {
            "type" : "string",
            "description" : "The set of parameters in JSON format. Used for the messages with the dynamic content."
          },
          "externalRequestId" : {
            "type" : "string"
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Desired message language for the contact. Used for the multilingual messages."
          }
        }
      },
      "EventsMigrationResult" : {
        "type" : "object",
        "properties" : {
          "status" : {
            "type" : "string",
            "description" : "<b>ACCEPTED</b> - the event added successfully to processing.<br/>\n<b>OCCURRED_DATE_IS_REQUIRED</b> - no event occurrence date present.<br/>\n<b>INCORRECT_OCCURRED_DATE_FORMAT</b> - incorrect date format. <br/>\n<b>OCCURRED_TIME_TOO_DEPTH</b> - the event occurrence time is beyond the limit for the past.<br/>\n<b>OCCURRED_TIME_IN_FUTURE</b> - the event occurrence time cannot be in the future.<br/>\n<b>EVENT_SEGMENTATION_DISABLED</b> - the segmentation for this event is disabled. More info at <a href=\"https://esputnik.com/en/support/how-to-use-event-segmentation\">How to use event segmentation</a> <br>\n<b>SERVER_ERROR</b> - failure to put the message in the queue for sending."
          }
        },
        "description" : "The result of the history events migration."
      },
      "EventsMigrationResults" : {
        "type" : "object",
        "properties" : {
          "results" : {
            "type" : "array",
            "description" : "The result of the history events migration.",
            "items" : {
              "$ref" : "#/components/schemas/EventsMigrationResult"
            }
          },
          "successCount" : {
            "type" : "integer",
            "format" : "int32"
          },
          "errorCount" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "BatchPastEvents" : {
        "type" : "object",
        "properties" : {
          "events" : {
            "type" : "array",
            "description" : "The list of the past events",
            "items" : {
              "$ref" : "#/components/schemas/PastEventDto"
            }
          }
        }
      },
      "PastEventDto" : {
        "required" : [ "eventTypeKey", "keyValue" ],
        "type" : "object",
        "properties" : {
          "eventTypeKey" : {
            "type" : "string",
            "description" : "Event type ID. If no such event type exists, a new one is created.<br>\nAll characters are allowed, except: < ; ’ \\ / | \" ` ' ^ ? ! , >",
            "example" : "orderCreated"
          },
          "keyValue" : {
            "type" : "string",
            "description" : "Event key. Determines event uniqueness.<br>\nThe key must contain a unique value for each contact (for example, email, phone number, external contact id, etc.)<br>\nAll characters are allowed, except < ; ’ \\ / | \" ` ' ^ ? ! , > <br>\nMax length: 300 symbols",
            "example" : "John@yourcompany.com"
          },
          "params" : {
            "type" : "array",
            "description" : "The list of event parameters represented as an array of \"key\" - \"value\" pairs. The parameter keys are arbitrary. <br>\n\tUsed in campaigns and for creating dynamic content in messages.",
            "items" : {
              "$ref" : "#/components/schemas/Parameter"
            }
          },
          "occurred" : {
            "type" : "string",
            "description" : "Event date and time.",
            "example" : "2023-03-22T14:30"
          }
        },
        "description" : "The list of the past events"
      },
      "OutgoingSMS" : {
        "required" : [ "from", "text" ],
        "type" : "object",
        "properties" : {
          "from" : {
            "type" : "string",
            "description" : "Sender name. Enter one of the valid sender names",
            "example" : "John Smith"
          },
          "text" : {
            "type" : "string",
            "description" : "Message text",
            "example" : "Thank you for subscribing to our Newsletters"
          },
          "phoneNumbers" : {
            "type" : "array",
            "description" : "<b>Required parameter</b>, if &quot;groupId&quot; is not specified.",
            "items" : {
              "type" : "string",
              "description" : "<b>Required parameter</b>, if &quot;groupId&quot; is not specified."
            }
          },
          "tags" : {
            "type" : "array",
            "description" : "The list of tags to be assigned to a message.",
            "items" : {
              "type" : "string",
              "description" : "The list of tags to be assigned to a message."
            }
          },
          "groupId" : {
            "type" : "integer",
            "description" : "<b>Required parameter</b>, if &quot;phoneNumbers&quot; is not specified. Segment ID to which the message will be sent",
            "format" : "int32",
            "example" : 201234567
          },
          "externalRequestId" : {
            "type" : "string",
            "description" : "External request ID. It is the same for all the recipients."
          },
          "subscriptionsKeys" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "trackUrls" : {
            "type" : "boolean",
            "description" : "The parameter determines whether to track links in a message or not. The default value is ‘false’."
          }
        }
      },
      "OutgoingViber" : {
        "required" : [ "text" ],
        "type" : "object",
        "properties" : {
          "text" : {
            "type" : "string",
            "description" : "Message text",
            "example" : "Subscribe to our channel"
          },
          "ttlSeconds" : {
            "type" : "integer",
            "description" : "Message lifetime in seconds, the default value is day.",
            "format" : "int32",
            "example" : 36000
          },
          "img" : {
            "type" : "string"
          },
          "caption" : {
            "type" : "string"
          },
          "action" : {
            "type" : "string",
            "description" : "A clickable link embedded in a picture or in a button.",
            "example" : "https://example.com/"
          },
          "phoneNumbers" : {
            "type" : "array",
            "description" : "The list of the recipient phone numbers. <b>Required parameter</b><br>, if &quot;groupId&quot; is not specified.",
            "items" : {
              "type" : "string",
              "description" : "The list of the recipient phone numbers. <b>Required parameter</b><br>, if &quot;groupId&quot; is not specified."
            }
          },
          "tags" : {
            "type" : "array",
            "description" : "The list of tags to be assigned to a message.",
            "items" : {
              "type" : "string",
              "description" : "The list of tags to be assigned to a message."
            }
          },
          "groupId" : {
            "type" : "integer",
            "description" : "<b>Required parameter</b><br>. If &quot;phoneNumbers&quot; are not specified.",
            "format" : "int32",
            "example" : 2345678
          },
          "externalRequestId" : {
            "type" : "string",
            "description" : "External request ID. It is the same for all the recipients.",
            "example" : "EXT-2023-ABC-12345"
          },
          "from" : {
            "type" : "string",
            "description" : "Sender's name. <b>Required parameter</b><br> if more than one sender is available.",
            "example" : "John Smith"
          },
          "trackUrls" : {
            "type" : "boolean",
            "description" : "The parameter determines whether to track links in a message or not. The default value is ‘true’."
          },
          "carouselItems" : {
            "type" : "array",
            "description" : "Carousel items (2-5 items). When provided, img/action/caption are used only for SMS fallback.",
            "items" : {
              "$ref" : "#/components/schemas/ViberCarouselItem"
            }
          },
          "subscriptionsKeys" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "ContactSubscriptionResult" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "integer",
            "format" : "int64"
          },
          "emailStatus" : {
            "type" : "string",
            "enum" : [ "NEED_CONFIRMATION", "SUBSCRIBED", "ALREADY_SUBSCRIBED", "BLACKLISTED" ]
          },
          "isNew" : {
            "type" : "boolean"
          }
        }
      },
      "SubscribeContact" : {
        "required" : [ "contact" ],
        "type" : "object",
        "properties" : {
          "contact" : {
            "$ref" : "#/components/schemas/Contact"
          },
          "groups" : {
            "type" : "array",
            "description" : "The list of segment names where a new/updated contact will be added.",
            "items" : {
              "type" : "string",
              "description" : "The list of segment names where a new/updated contact will be added."
            }
          },
          "subscriptions" : {
            "type" : "array",
            "description" : "Subscription categories added for a contact.",
            "items" : {
              "type" : "string",
              "description" : "Subscription categories added for a contact."
            }
          },
          "formType" : {
            "type" : "string",
            "description" : "The subscription form name. It allows you to use several independent subscription forms.<br/>\nAll characters are acceptable, except: < ; ’ \\ / | \" ` ' ^ ? ! , >",
            "example" : "Newsletter subscription"
          }
        },
        "description" : "The method for double opt-in implementation. A created contact is unconfirmed.<br/>\nIt is impossible to send bulk emails to such contacts until they confirm their subscription;\nhowever, they are available for receiving important trigger messages.<br/>\nAn event will be automatically generated after this method is called.<br/>\nSending a confirmation email can be implemented using the mechanism of events and campaigns.<br/>\nWhen clicking the link in the letter, a contact becomes confirmed and available for bulk emails sending."
      },
      "UnmuteToken" : {
        "required" : [ "token" ],
        "type" : "object",
        "properties" : {
          "token" : {
            "type" : "string",
            "description" : "Application token.",
            "example" : "8256374910:BBGHQOp2J_Fk7mZyw34ty660nmHs5d7JKLP"
          }
        }
      },
      "ContactUpdateRequestSchema" : {
        "type" : "object",
        "properties" : {
          "firstName" : {
            "type" : "string",
            "description" : "Contact's first name",
            "example" : "John"
          },
          "lastName" : {
            "type" : "string",
            "description" : "Contact's last name",
            "example" : "Smith"
          },
          "channels" : {
            "type" : "array",
            "description" : "You can add maximum two channels of the same type. It is necessary to specify at least one channel.",
            "items" : {
              "$ref" : "#/components/schemas/ContactWriteChannel"
            }
          },
          "address" : {
            "$ref" : "#/components/schemas/Address"
          },
          "fields" : {
            "type" : "array",
            "description" : "Values of the additional fields of a contact.",
            "items" : {
              "$ref" : "#/components/schemas/ContactField"
            }
          },
          "addressBookId" : {
            "type" : "integer",
            "description" : "Catalog ID.<br/>\nYou can get the value using the <i>/v1/addressbooks GET</i> method.<br/>\nOptional parameter.",
            "format" : "int32"
          },
          "id" : {
            "type" : "integer",
            "description" : "Contact ID",
            "format" : "int64",
            "example" : 1234567890
          },
          "contactKey" : {
            "type" : "string"
          },
          "externalCustomerId" : {
            "type" : "string"
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Language code. Optional parameter."
          },
          "timeZone" : {
            "type" : "string",
            "description" : "Time zone. Optional parameter. See <a href='https://en.wikipedia.org/wiki/List_of_tz_database_time_zones'>TZ database name</a>"
          },
          "marketId" : {
            "type" : "string",
            "description" : "Market ID. Optional parameter. Up to 64 characters. Allowed: [a–zA-Z0–9-_]"
          }
        }
      },
      "ContactUpdate" : {
        "type" : "object",
        "properties" : {
          "firstName" : {
            "type" : "string",
            "description" : "Contact's first name",
            "example" : "John"
          },
          "lastName" : {
            "type" : "string",
            "description" : "Contact's last name",
            "example" : "Smith"
          },
          "channels" : {
            "type" : "array",
            "description" : "You can add maximum two channels of the same type. It is necessary to specify at least one channel.",
            "items" : {
              "$ref" : "#/components/schemas/Channel"
            }
          },
          "address" : {
            "$ref" : "#/components/schemas/Address"
          },
          "fields" : {
            "type" : "array",
            "description" : "Values of the additional fields of a contact.",
            "items" : {
              "$ref" : "#/components/schemas/ContactField"
            }
          },
          "addressBookId" : {
            "type" : "integer",
            "description" : "Catalog ID.<br/>\nYou can get the value using the <i>/v1/addressbooks GET</i> method.<br/>\nOptional parameter.",
            "format" : "int32"
          },
          "id" : {
            "type" : "integer",
            "description" : "Contact ID",
            "format" : "int64",
            "example" : 1234567890
          },
          "contactKey" : {
            "type" : "string"
          },
          "externalCustomerId" : {
            "type" : "string"
          },
          "languageCode" : {
            "type" : "string",
            "description" : "Language code. Optional parameter."
          },
          "timeZone" : {
            "type" : "string",
            "description" : "Time zone. Optional parameter. See <a href='https://en.wikipedia.org/wiki/List_of_tz_database_time_zones'>TZ database name</a>"
          },
          "marketId" : {
            "type" : "string",
            "description" : "Market ID. Optional parameter. Up to 64 characters. Allowed: [a–zA-Z0–9-_]"
          }
        }
      },
      "PreprocessorFileUpdateResponse" : {
        "type" : "object",
        "properties" : {
          "message" : {
            "type" : "string"
          },
          "asyncSessionId" : {
            "type" : "string"
          },
          "valid" : {
            "type" : "boolean"
          }
        }
      },
      "PreProcessorFileUpdateRequest" : {
        "required" : [ "link" ],
        "type" : "object",
        "properties" : {
          "link" : {
            "type" : "string",
            "description" : "The link to the PreProcessor data file in an external repository.",
            "example" : "http://example.com/file.json"
          },
          "ttlHours" : {
            "type" : "integer",
            "description" : "File time to live in the system in hours. The default value is month.",
            "format" : "int32",
            "example" : 240
          }
        }
      },
      "PreProcessorDto" : {
        "required" : [ "link", "preprocessorType" ],
        "type" : "object",
        "properties" : {
          "link" : {
            "type" : "string",
            "description" : "The link to the PreProcessor data file in an external repository.",
            "example" : "http://example.com/file.json"
          },
          "preprocessorType" : {
            "type" : "string",
            "description" : "PreProcessor data type [Random, Key].",
            "example" : "Key"
          },
          "ttlHours" : {
            "type" : "integer",
            "description" : "File time to live in the system in hours. The default value is 1 month.",
            "format" : "int32",
            "example" : 240
          }
        }
      },
      "ContactActivity" : {
        "type" : "object",
        "properties" : {
          "iid" : {
            "type" : "string",
            "description" : "ID of the sent message."
          },
          "externalRequestId" : {
            "type" : "string",
            "description" : "External request ID."
          },
          "contactId" : {
            "type" : "integer",
            "description" : "Contact ID.",
            "format" : "int64"
          },
          "externalCustomerId" : {
            "type" : "string",
            "description" : "External contact ID."
          },
          "email" : {
            "type" : "string",
            "description" : "Contact's email address."
          },
          "webPushToken" : {
            "type" : "string",
            "description" : "Web push token."
          },
          "mobPushToken" : {
            "type" : "string",
            "description" : "Mob push token."
          },
          "sms" : {
            "type" : "string",
            "description" : "Contact's phone number."
          },
          "mediaType" : {
            "type" : "string",
            "description" : "Media type: Email, SMS, Viber.",
            "enum" : [ "email", "sms", "viber", "mobilepush", "webpush", "appinbox", "widget", "inapp", "telegrambot" ]
          },
          "activityStatus" : {
            "type" : "string",
            "description" : "Activity status<br/><br/>\n<b>DELIVERED</b> - message delivered<br/>\n<b>UNDELIVERED</b> - message not delivered<br/>\n<b>READ</b> - message read<br/>\n<b>UNSUBSCRIBED</b> - contact unsubscribed from mailing<br/>\n<b>SUBSCRIPTION_CHANGED</b> - contact changed subscription categories<br/>\n<b>CLICKED</b> - contact followed the links in the message<br/>\n<b>SPAM</b> - contact complained about spam"
          },
          "messageId" : {
            "type" : "integer",
            "description" : "Message ID.",
            "format" : "int32"
          },
          "messageInstanceId" : {
            "type" : "integer",
            "description" : "Message instance ID.",
            "format" : "int32"
          },
          "messageName" : {
            "type" : "string",
            "description" : "Message name."
          },
          "messageTag" : {
            "type" : "string",
            "description" : "Email message label."
          },
          "activityDateTime" : {
            "type" : "string",
            "description" : "Activity date and time."
          },
          "statusDescription" : {
            "type" : "string",
            "description" : "This field is returned only if the status is UNDELIVERED,<br/>\nContains the cause of the delivery failure.<br/>\nThis may be a response from the recipient's server, a system's response about inability to send the message, etc."
          },
          "viewMessageLink" : {
            "type" : "string",
            "description" : "Contains a link to the message. For emails only."
          },
          "clickEventLink" : {
            "type" : "string",
            "description" : "Contains the link clicked by the contact."
          },
          "subscriptions" : {
            "type" : "array",
            "description" : "Subscription category keys",
            "items" : {
              "type" : "string",
              "description" : "Subscription category keys"
            }
          },
          "offset" : {
            "type" : "string",
            "description" : "Contains the bias result. Used to continue the previous search."
          },
          "messageLanguageCode" : {
            "type" : "string",
            "description" : "Message language code."
          },
          "sourceEventKey" : {
            "type" : "string",
            "description" : "Source event key."
          },
          "sourceEventTypeKey" : {
            "type" : "string",
            "description" : "Source event type key."
          },
          "workflowBlockId" : {
            "type" : "string",
            "description" : "Workflow block ID."
          },
          "workflowId" : {
            "type" : "integer",
            "description" : "Workflow ID.",
            "format" : "int32"
          },
          "workflowInstanceId" : {
            "type" : "string",
            "description" : "The ID of a particular workflow launch."
          },
          "broadcastId" : {
            "type" : "integer",
            "description" : "Broadcast ID.",
            "format" : "int32"
          },
          "from" : {
            "type" : "string",
            "description" : "Sender"
          },
          "telegramToken" : {
            "type" : "string",
            "description" : "TelegramToken"
          },
          "osType" : {
            "type" : "string",
            "description" : "Device operation system type. Possible values: Desktop, Mobile."
          },
          "osName" : {
            "type" : "string",
            "description" : "Device operation system name. Example values: Windows NT, iOS, Mac OS."
          },
          "imid" : {
            "type" : "integer",
            "description" : "Immediate message id.",
            "format" : "int64"
          },
          "smsParts" : {
            "type" : "integer",
            "description" : "Number of SMS message parts. Returned for SMS activities only.",
            "format" : "int32",
            "example" : 3
          }
        }
      },
      "ContactMessage" : {
        "type" : "object",
        "properties" : {
          "contactId" : {
            "type" : "integer",
            "format" : "int64"
          },
          "email" : {
            "type" : "string"
          },
          "phone" : {
            "type" : "string"
          },
          "messageId" : {
            "type" : "integer",
            "description" : "Message ID. <br> 0 for test messages or those sent using the following methods:<i>/v1/message/email</i> <i>/v1/message/sms</i> <i>/v1/message/viber</i>",
            "format" : "int64"
          },
          "messageInstanceId" : {
            "type" : "integer",
            "description" : "ID of the message instance. <br> 0 for test messages or those sent using the following methods: <i>/v1/message/email</i> <i>/v1/message/sms</i> <i>/v1/message/viber</i>",
            "format" : "int64"
          },
          "messageTags" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "channelType" : {
            "type" : "string",
            "enum" : [ "email", "sms", "viber", "mobilepush", "webpush", "appinbox", "widget", "inapp", "telegrambot", "email", "sms", "viber" ]
          },
          "sentDateTime" : {
            "type" : "string"
          },
          "activityStatus" : {
            "type" : "string",
            "description" : "Activity status<br/><br/>\n<b>DELIVERED</b> - message delivered<br/>\n<b>UNDELIVERED</b> - message not delivered<br/>\n<b>READ</b> - message read<br/>\n<b>UNSUBSCRIBED</b> - contact unsubscribed from mailing<br/>\n<b>SUBSCRIPTION_CHANGED</b> - contact changed subscription categories<br/>\n<b>CLICKED</b> - contact followed the links in the message<br/>\n<b>SPAM</b> - contact complained about spam",
            "enum" : [ "DELIVERED", "UNDELIVERED", "READ", "UNSUBSCRIBED", "SUBSCRIPTION_CHANGED", "CLICKED", "SPAM" ]
          },
          "from" : {
            "type" : "string",
            "description" : "Message sender."
          },
          "subject" : {
            "type" : "string",
            "description" : "Message subject. Only for emails."
          },
          "text" : {
            "type" : "string",
            "description" : "Message text. Only for Viber/SMS."
          },
          "viewMessageLink" : {
            "type" : "string",
            "description" : "Contains the link to a message. Only for emails."
          }
        }
      },
      "ContactRecom" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string",
            "description" : "The product’s unique identifier."
          },
          "name" : {
            "type" : "string",
            "description" : "The product name."
          },
          "url" : {
            "type" : "string",
            "description" : "The product landing page."
          },
          "price" : {
            "type" : "number",
            "format" : "double"
          },
          "descr" : {
            "type" : "string"
          },
          "brand" : {
            "type" : "string"
          },
          "category" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "isInStock" : {
            "type" : "integer",
            "description" : "Product availability.",
            "format" : "int32"
          }
        }
      },
      "Event" : {
        "required" : [ "eventTypeKey" ],
        "type" : "object",
        "properties" : {
          "eventTypeKey" : {
            "type" : "string",
            "description" : "Unique identifier for the event type, e.g., PageViewed. <a href=\"${v2genevent_eventtypekey.post.link}\">Read more...</a>",
            "example" : "EventName"
          },
          "params" : {
            "type" : "array",
            "description" : "An array of objects — lists with key-value pairs containing contact identifiers (required) and event-specific parameters (optional).<a href=\"${v2genevent_valevntprmts.post.link}\">Read more...</a>",
            "items" : {
              "$ref" : "#/components/schemas/EventParameter"
            }
          }
        }
      },
      "EventParameter" : {
        "type" : "object",
        "properties" : {
          "name" : {
            "type" : "string"
          },
          "value" : {
            "type" : "object",
            "oneOf" : [ {
              "$ref" : "#/components/schemas/String"
            }, {
              "$ref" : "#/components/schemas/Object"
            } ]
          }
        },
        "description" : "The list of event parameters represented as an array of \"key\" - \"value\" pairs. The parameter keys are arbitrary. <br>\n\tUsed in campaigns and for dynamic content creation in messages."
      },
      "BatchPastEventsV2" : {
        "type" : "object",
        "properties" : {
          "events" : {
            "type" : "array",
            "description" : "The list of the past events",
            "items" : {
              "$ref" : "#/components/schemas/PastEvent"
            }
          }
        }
      },
      "PastEvent" : {
        "required" : [ "eventTypeKey", "keyValue" ],
        "type" : "object",
        "properties" : {
          "eventTypeKey" : {
            "type" : "string",
            "description" : "Event type ID. If no such event type exists, a new one is created.<br>\nAll characters are allowed, except < ; ’ \\ / | \" ` ' ^ ? ! , >",
            "example" : "example-key"
          },
          "keyValue" : {
            "type" : "string",
            "description" : "Event key. Determines event uniqueness.<br>\nThe key must contain a unique value for each contact (for example, email, phone number, external contact id, etc.)<br>\nAll characters are allowed, except < ; ’ \\ / | \" ` ' ^ ? ! , > <br>\nMax length: 300 symbols"
          },
          "params" : {
            "type" : "array",
            "description" : "The list of event parameters represented as an array of \"key\" - \"value\" pairs. The parameter keys are arbitrary. <br>\n\tUsed in campaigns and for dynamic content creation in messages.",
            "items" : {
              "$ref" : "#/components/schemas/EventParameter"
            }
          },
          "occurred" : {
            "type" : "string",
            "description" : "Event date and time."
          }
        },
        "description" : "The list of the past events"
      },
      "FlatEvent" : {
        "required" : [ "eventTypeKey" ],
        "type" : "object",
        "properties" : {
          "eventTypeKey" : {
            "type" : "string",
            "description" : "Unique identifier for the event type, e.g., PageViewed. <a href=\"${v2genevent_eventtypekey.post.link}\">Read more...</a>",
            "example" : "EventName"
          },
          "params" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : "An objects — key-value pairs containing contact identifiers (required) and event-specific parameters (optional).<a href=\"${v2genevent_valevntprmts.post.link}\">Read more...</a>"
          }
        }
      },
      "BatchPastEventsV3" : {
        "type" : "object",
        "properties" : {
          "events" : {
            "type" : "array",
            "description" : "The list of the past events",
            "items" : {
              "$ref" : "#/components/schemas/FlatPastEvent"
            }
          }
        }
      },
      "FlatPastEvent" : {
        "required" : [ "eventTypeKey", "keyValue" ],
        "type" : "object",
        "properties" : {
          "eventTypeKey" : {
            "type" : "string",
            "description" : "Event type ID. If no such event type exists, a new one is created.<br>\nAll characters are allowed, except < ; ’ \\ / | \" ` ' ^ ? ! , >",
            "example" : "example-key"
          },
          "keyValue" : {
            "type" : "string",
            "description" : "Event key. Determines event uniqueness.<br>\nThe key must contain a unique value for each contact (for example, email, phone number, external contact id, etc.)<br>\nAll characters are allowed, except < ; ’ \\ / | \" ` ' ^ ? ! , > <br>\nMax length: 300 symbols"
          },
          "params" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "object",
              "description" : "The list of event parameters represented of \"key\" - \"value\" pairs. The parameter keys are arbitrary. <br>\n\tUsed in campaigns and for dynamic content creation in messages."
            },
            "description" : "The list of event parameters represented of \"key\" - \"value\" pairs. The parameter keys are arbitrary. <br>\n\tUsed in campaigns and for dynamic content creation in messages."
          },
          "occurred" : {
            "type" : "string",
            "description" : "Event date and time."
          }
        },
        "description" : "The list of the past events"
      },
      "Object" : {
        "type" : "object"
      },
      "String" : {
        "type" : "string"
      },
      "Boolean" : {
        "type" : "boolean"
      },
      "Integer" : {
        "type" : "integer",
        "format" : "int32"
      },
      "Long" : {
        "type" : "integer",
        "format" : "int64"
      },
      "Float" : {
        "type" : "number",
        "format" : "float"
      },
      "Double" : {
        "type" : "number",
        "format" : "double"
      }
    },
    "securitySchemes" : {
      "basicAuth" : {
        "type" : "http",
        "scheme" : "basic"
      }
    }
  }
}