CountdownMail API

Это руководство поможет вам начать использовать API CountdownMail. Оно охватывает настройку, аутентификацию, обработку ошибок и работу с таймерами обратного отсчёта.

Быстрый старт

Этот раздел подготовит вас к использованию API CountdownMail и покажет, как сделать первый API-запрос.

  1. Получите свой API-ключ:
    • Войдите в свою учётную запись CountdownMail.
    • Перейдите в Профиль » API.
    • Скопируйте свой API-ключ.
  2. Сделайте первый API-запрос:
    • Мы используем эндпоинт «Создать таймер» в качестве примера.
    • Используйте инструмент вроде cURL или Postman для отправки POST-запроса на https://countdownmail.com/api/create.
    • Добавьте свой API-ключ в заголовок Authorization.
    • Включите необходимые данные таймера в тело запроса (в формате JSON).

Вот пример с использованием cURL:

Запрос

POST
https://countdownmail.com/api/create

curl -H "Content-Type: application/json" \
-H "Authorization: YOUR_API_KEY" \
-X POST "https://countdownmail.com/api/create" \
-d '{
    "skin_id": 1,
    "name": "Big Sale!",
    "time_end": "2025-04-21 20:00:00",
    "time_zone": "America/Los_Angeles",
    "font_family": "Roboto-Bold",
    "color_primary": "FF3A43",
    "color_text": "FFFFFF",
    "color_bg": "000000"
}'
                                    
  • Замените YOUR_API_KEY на ваш настоящий API-ключ.
  • Если всё работает, вы получите ответ вроде:

Ответ


{
    "status": "success",
    "message": {
        "id": 1057,
        "code": "td",
        "src": "http://i.countdownmail.com/td.gif"
    }
}
                                    

Этот ответ включает код таймера (например, "td") и URL изображения таймера.


Аутентификация

Для использования API CountdownMail необходимо аутентифицировать каждый запрос с помощью API-ключа. Вот как:

  • Добавьте заголовок Authorization к запросу. Значение — ваш API-ключ.
  • Альтернативно используйте базовую аутентификацию: установите API-ключ как имя пользователя и оставьте пароль пустым.

Пример с заголовком Authorization (cURL):

Запрос

GET
https://countdownmail.com/api/some_endpoint

curl -H "Content-Type: application/json" \
-H "Authorization: YOUR_API_KEY" \
-X GET "https://countdownmail.com/api/some_endpoint"
                                    
  • Замените YOUR_API_KEY на ваш настоящий API-ключ.
  • Всегда включайте аутентификацию, иначе получите ошибку 401 Unauthorized.

Использование Postman

Если вы используете Postman, это упрощает тестирование API-запросов. Чтобы использовать его с CountdownMail:

  • Нажмите, чтобы импортировать коллекцию API CountdownMail. Запустить в Postman
  • Добавьте API-ключ в настройки аутентификации коллекции, и вы готовы отправлять запросы.

Ошибки

Иногда API-запросы не удаются. API CountdownMail использует коды состояния HTTP, чтобы сообщить о проблеме. Вот список возможных ошибок, их значение и что делать:

КодНазвание статусаОписаниеРекомендуемое действие
400Неверный запросЧто-то не так с вашим запросом.Проверьте, что запрос соответствует документации и использует правильный синтаксис.
401Не авторизованУ вас нет разрешения на этот запрос. Убедитесь, что используете действительный API-ключ в заголовке Authorization.
404Не найденоСервер не может найти запрошенное. Проверьте, что URL соответствует действительному эндпоинту API.
405Метод не разрешёнЭндпоинт не поддерживает этот метод. Используйте правильный HTTP-метод (например, GET, POST) согласно документации.
429Слишком много запросовКлиент отправил слишком много запросов за 1 минуту. Вы можете использовать заголовки, отправляемые с каждым ответом, чтобы определить текущий статус лимита запросов.
Имя заголовкаОписание
X-RateLimit-LimitМаксимальное количество запросов в минуту
X-RateLimit-RemainingКоличество оставшихся запросов в текущем лимите
X-RateLimit-ResetВремя сброса текущего лимита в секундах UTC epoch
500Внутренняя ошибка сервераЧто-то сломалось на стороне CountdownMail.Попробуйте позже. Если проблема повторяется, обратитесь в поддержку.
503Сервис недоступенСервер сейчас слишком загружен.Подождите немного и попробуйте снова.

Пример ответа с ошибкой (401 Unauthorized):

Ответ


{
    "status": "error",
    "message": "Unauthorized"
}
                                    

Если видите ошибку, проверьте код статуса и сообщение, затем выполните рекомендуемое действие.


Модель таймера

Ресурс Timer содержит всю информацию о таймере обратного отсчёта. Вот доступные поля для определения таймера:

СвойствоТипОписаниеОбязательноПримечания
skin_idintegerСтиль дизайна таймера (шаблон).ДаДолжно быть числом от 1 до 23.
namestringНазвание таймера.ДаМаксимум 100 символов. Пример: Big Sale!
time_endstringКогда таймер заканчивается (YYYY-MM-DD HH:MM:SS). ДаПример: 2025-04-09 04:57:16
time_zonestringЧасовой пояс таймера.ДаПример: America/Los_Angeles. Посмотреть все доступные значения time_zone.
font_familystringШрифт текста таймера.НетПример: Roboto-Bold. Посмотреть все доступные значения font_family.
label_font_familystringШрифт меток таймера.НетПример: Roboto-Bold. Посмотреть все доступные значения font_family.
color_primarystringОсновной цвет (hex-код).ДаПример: FF3A43 (красный).
color_textstringЦвет текста (hex-код).ДаПример: FFFFFF (белый).
color_bgstringЦвет фона (hex-код).ДаПример: 000000 (чёрный).
font_sizeintegerРазмер текста таймера.НетОт 14 до 73.
label_font_sizeintegerРазмер текста метки.НетОт 0 до 50.
dayintegerПоказывать дни (0 = нет, 1 = да).НетДолжно быть 0 или 1.
langstringКод языка (ISO 2-буквенный).НетПример: en (английский). Посмотреть все 54 поддерживаемых языка.
transparentintegerФон: 0 = сплошной, 1 = прозрачный.НетДолжно быть 0 или 1.
expired_mes_onintegerПоказывать сообщение об истечении (0 = нет, 1 = да).НетДолжно быть 0 или 1.
expired_messtringСообщение при истечении таймера.НетМаксимум 100 символов. Пример: This offer has expired
labelsintegerИспользовать свои метки (0 = нет, 1 = да).НетДолжно быть 0 или 1.
daysstringМетка для дней.НетМаксимум 15 символов. Пример: days
hoursstringМетка для часов.НетМаксимум 15 символов. Пример: hours
minutesstringМетка для минут.НетМаксимум 15 символов. Пример: minutes
secondsstringМетка для секунд.НетМаксимум 15 символов. Пример: seconds
timer_typeintegerТип таймера: 1 = Таймер с общей датой, 2 = Персональный таймер, 3 = Таймер по ссылке.НетДолжно быть 1, 2 или 3. По умолчанию 1 (Таймер с общей датой).
durationintegerДлительность таймера в секундах (для Персональных таймеров).НетОбязательно, когда timer_type = 2 (Персональный таймер). Пример: 86400 (24 часа).
advanced_paramsobjectДополнительные настройки (напр., цвет разделителя).Нет

Пример


{
    "separator_color"  : "4275BC",
    "separator_size" : 1.3,
    "separator_style" : 6,
    "labels_color" : "A3A3A3"
}
                                    

Создать таймер

Этот эндпоинт позволяет создать таймер. Для создания нового таймера необходимо указать все обязательные свойства.

Пример запроса:

Запрос

POST
https://countdownmail.com/api/create

curl -H "Content-Type: application/json" \
-H "Authorization: YOUR_API_KEY" \
-X POST "https://countdownmail.com/api/create" \
-d '{
    "skin_id":3,
    "name":"Big Sale!",
    "time_end":"2026-02-02 20:00:00",
    "time_zone":"America\/Los_Angeles",
    "font_family":"Roboto-Bold",
    "color_primary":"FF3A43",
    "color_text":"FFFFFF",
    "color_bg":"000000",
    "transparent":"0",
    "font_size":"38",
    "lang":"en",
    "expired_mes_on":"1",
    "expired_mes":"This offer has expired",
    "labels":"1",
    "days":"days",
    "hours":"hours",
    "minutes":"minutes",
    "seconds":"seconds"
}'
                                    

Ответ


{
    "status": "success",
    "message": {
        "id": 1057,
        "code": "td",
        "src": "http://i.countdownmail.com/td.gif"
    }
}
                                    

Обновить таймер

Этот эндпоинт позволяет обновить любой атрибут таймера. Для обновления таймера отправьте PUT-запрос на /update/{code} с полями для обновления. Замените {code} на код таймера (напр., "td").

Пример запроса:

Запрос

PUT
https://countdownmail.com/api/update/{code}

curl -H "Content-Type: application/json" \
-H "Authorization: YOUR_API_KEY" \
-X PUT "https://countdownmail.com/api/update/{code}" \
-d '{
    "skin_id":6,
    "name":"Flash Sale!",
    "time_end":"2026-02-02 20:00:00"
}'
                                    

Ответ


{
    "status": "success",
    "message": {
        "id": 1057,
        "code": "td",
        "src": "http://i.countdownmail.com/td.gif"
    }
}
                                    

Дублировать таймер

Чтобы скопировать существующий таймер, отправьте POST-запрос на /duplicate/{code}. Замените {code} на уникальный код таймера для копирования. Это создаст новый таймер с теми же настройками, что и оригинал.

Вы можете обновить детали нового таймера, добавив JSON-объект в тело запроса. Это позволяет изменять определённые атрибуты, такие как время окончания или название, сохраняя остальное как в оригинале. Атрибуты для обновления те же, что и при создании нового таймера (полный список в разделе Модель таймера). Если атрибут не указан, он остаётся как в оригинальном таймере.

Важно: Оригинальный таймер не изменяется. Только новый таймер получает обновления из запроса.

Пример запроса:

Запрос

POST
https://countdownmail.com/api/duplicate/{code}

curl -H "Content-Type: application/json" \
-H "Authorization: YOUR_API_KEY" \
-X POST "https://countdownmail.com/api/duplicate/{code}" \
-d '{
    "skin_id":6,
    "name":"Flash Sale!",
    "time_end":"2026-02-02 20:00:00"
}'
                                    

Ответ


{
    "status": "success",
    "message": {
        "id": 1057,
        "code": "td",
        "src": "http://i.countdownmail.com/td.gif"
    }
}
                                    

Деактивировать таймер

Чтобы остановить таймер (архивировать), отправьте GET-запрос на /deactivate/{code}. Замените {code} на код таймера.


Активировать таймер

Чтобы снова активировать таймер, отправьте GET-запрос на /activate/{code}. Замените {code} на код таймера.


Удалить таймер

Чтобы удалить таймер, отправьте DELETE-запрос на /delete/{code}. Замените {code} на код таймера.


Это руководство даёт всё необходимое для начала работы с API CountdownMail. Храните API-ключ в безопасности и обращайтесь к официальной документации за подробностями о полях, таких как часовые пояса или шрифты!