Перейти к содержанию

Создание, редактирование операции по расписанию


Описание

Используется для создания и редактирования операции по расписанию.

POST (Уровень доступа: Базовый)

https://api.intellectmoney.ru/personal/scheduler/setScheduledOperationData

Заголовки запроса

Параметр Свойства Описание
Accept STRING OPTIONAL application/json Заголовок, указывающий формат данных, которые клиент хочет получить от сервера.
Content-Type STRING OPTIONAL application/json application/xml Заголовок, указывающий формат данных в теле запроса.
Authorization STRING REQUIRED Bearer {token} Заголовок, используемый для авторизации клиента с помощью Bearer-токена.
Подробнее об использование Bearer-токена.
Sign STRING REQUIRED Заголовок с подписью для авторизации запроса.
Подробнее об использовании контрольной подписи.

Сигнатура подписи:
UserToken::::::Operation::ObjectId::ObjectTypeVal::ParamsJson::RepeatPlan::RetryOnFailPlan::RetryOnFailCount::IsSingle::FireOnSkip::State::::::EndExecDate::SignSecretKey

Тело запроса

Параметр Свойства Описание
UserToken STRING REQUIRED Токен-пользователя.
Для получения использовать метод GetUserToken.
Operation STRING CONDITION guid Номер операции по расписанию.
Используется для редактирования операции, если параметр не передать - создается новая операция.
Условия:
  • Передается обязательно при редактировании операции.
  • Не передается в остальных случаях.
ObjectId STRING CONDITION 3xxxxxxxxx Номер исходного СКО.
Для получения использовать:Условия:
  • Передается обязательно при создание операции.
  • Передается по усмотрению при редактирование операции.
  • Не передается в остальных случаях.
ObjectTypeVal STRING REQUIRED 1 Тип операции по расписанию.
Всегда единица.
ParamsJson OBJECT REQUIRED Параметры СКО.
Параметры необходимые операции по расписанию для создания СКО.
RepeatPlan STRING OPTIONAL План выполнения.
Задается в одном из двух форматов:
  1. Cron-выражение позволяет задавать сложные периоды выполнения операции.
    Пример запуска операции каждый день в 12:00 часов: 0 0 12 1/1 * ? *
    Для создания можно использовать онлайн-инструмент CronMaker.
  2. JSON поддерживает указание даты начала и периодов выполнения операции в удобочитаемом формате.
    Пример первого списания в 18:50 22 ноября 2023 года, последующие списания раз в 30 дней: { "StartAt": "2023-11-22T18:50:00+03:00", "PeriodLength": 30, "PeriodType": "Day" }
    Допустимые значения: Day, Week, Month.
Запуск по требованию.
Если параметр не передан, то план выполнения отменяется, операция запускается один раз текущей датой и временем, после чего статус операции меняется на "Выключен".
RetryOnFailPlan STRING CONDITION План выполнения при ошибке.
Определяет, с какой частотой система будет автоматически повторять операцию в случае её неудачного выполнения.
Например, если указать значение 5 минут, система будет пытаться повторить операцию каждые 5 минут до тех пор, пока она не завершится успешно или не достигнет лимита параметра RetryOnFailCount.
Форматы:
  • Cron-выражение: 0 0/5 * 1/1 * ? *
  • JSON: { "PeriodLength": 5, "PeriodType": "Minute" }
    Допустимые значения: Minute, Hour, Day, Week, Month.
Условия:
  • Передается обязательно, если передан параметр RepeatPlan.
  • Не передается в остальных случаях.
RetryOnFailCount STRING CONDITION number Количество повторов выполнения при ошибке.
Условия:
  • Передается обязательно, если передан параметр RepeatPlan.
  • Не передается в остальных случаях.
IsSingle STRING CONDITION 0-1 Флаг, указывающий возможность параллельного выполнения операции.
Допустимые значения:
  • 0 - новая запланированная операция не будет запущена, пока не закончена предыдущая.
  • 1 - запланированная операция запускается независимо от статуса предыдущей.
Условия:
  • Передается обязательно, если передан параметр RepeatPlan.
  • Не передается в остальных случаях.
FireOnSkip STRING CONDITION 0-1 Флаг, указывающий необходимость создания всех запланированных операций, в случае непредвиденного пропуска операции.
Допустимые значения:
  • 0 - не создавать пропущенные, ранее запланированные операции.
  • 1 - создать пропущенные, ранее запланированные операции.
Условия:
  • Передается обязательно, если передан параметр RepeatPlan.
  • Не передается в остальных случаях.
State STRING REQUIRED 0-1 Флаг, указывающий статус активности операции.
Допустимые значения:
  • 0 - операция выполняется.
  • 1 - операция не выполняется.
    Ранее запланированные операции будут выполнены.
EndExecDate STRING CONDITION yyyy-MM-dd HH:mm:ss Дата окончания.
По достижению данной даты операция выполняться не будет.
Параметр State изменит значение на 1.
Условия:
  • Передается обязательно, если передан параметр RepeatPlan.
  • Не передается в остальных случаях.

Тело ответа

Поле Тип Описание
OperationState OperationState Статус выполнения операции.
OperationId GUID Идентификатор операции.
EshopId INT Номер магазина.
Result SetScheduledOperationData Результат выполнения запроса.
Примеры кода
C#
var client = new HttpClient();

var request = new HttpRequestMessage(HttpMethod.Post, "https://api.intellectmoney.ru/personal/scheduler/setScheduledOperationData");

request.Headers.Add("Accept", "application/json");
request.Headers.Add("Content-Type", "application/json");
request.Headers.Add("Authorization", "Bearer 9d97820c61424eb6ac0db414ccb7ac60");
request.Headers.Add("Sign", "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855");

var collection = new List<KeyValuePair<string, string>>();
collection.Add(new("UserToken", "YdUlqkFcVo62XmY6B9VLJfwUODqE9ODk8/q/s1uXguWmiiPUo+R8YpiYt6g/s/IM"));
collection.Add(new("ObjectId", "3000000000"));
collection.Add(new("ObjectTypeVal", "1"));
collection.Add(new("ParamsJson", "{    \"Amount\": 1.00,    \"ServiceName\": \"Наименование\",    \"OrderId\": \"Номер заказа\",    \"MerchantReceipt\": null}"));
collection.Add(new("RepeatPlan", "0 0 12 1/1 * ? *"));
collection.Add(new("RetryOnFailPlan", "{ "PeriodLength": 5, "PeriodType": "Minute" }"));
collection.Add(new("RetryOnFailCount", "10"));
collection.Add(new("IsSingle", "0"));
collection.Add(new("FireOnSkip", "0"));
collection.Add(new("State", "0"));
collection.Add(new("EndExecDate", "2025-01-01 12:00:00"));
var content = new FormUrlEncodedContent(collection);
request.Content = content;
var response = await client.SendAsync(request);
response.EnsureSuccessStatusCode();
Console.WriteLine(await response.Content.ReadAsStringAsync());
PHP
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
    CURLOPT_URL => 'https://api.intellectmoney.ru/personal/scheduler/setScheduledOperationData',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => '',
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 0,
    CURLOPT_FOLLOWLOCATION => true,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_POSTFIELDS => 'UserToken=YdUlqkFcVo62XmY6B9VLJfwUODqE9ODk8/q/s1uXguWmiiPUo+R8YpiYt6g/s/IM&ObjectId=3000000000&ObjectTypeVal=1&ParamsJson={    \"Amount\": 1.00,    \"ServiceName\": \"Наименование\",    \"OrderId\": \"Номер заказа\",    \"MerchantReceipt\": null}&RepeatPlan=0 0 12 1/1 * ? *&RetryOnFailPlan={ "PeriodLength": 5, "PeriodType": "Minute" }&RetryOnFailCount=10&IsSingle=0&FireOnSkip=0&State=0&EndExecDate=2025-01-01 12:00:00',
    CURLOPT_HTTPHEADER => array(
        'Accept: application/json',
        'Content-Type: application/json',
        'Authorization: Bearer 9d97820c61424eb6ac0db414ccb7ac60',
        'Sign: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
   ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;
Пример ответов
JSON
{
    "OperationState": {
        "Code": 0,
        "Desc": "Успешно обработан"
    },
    "Result": {
        "State": {
            "Code": 0,
            "Desc": "Успешно обработан"
        },
        "ScheduledOperation": {
            "CronOperationId": "aaaaaaaa-bbbb-4ccc-8ddd-eeeeeeeeeeee",
            "ObjectId": 3000000000,
            "CronOperationType": "Recurring",
            "Params": "{    \"Amount\": 1.00,    \"ServiceName\": \"Наименование\",    \"OrderId\": \"Номер заказа\",    \"MerchantReceipt\": null}",
            "CreationDate": "2025-01-01T12:00:00.000000+03:00",
            "ChangeDate": "2025-01-01T12:00:00.000000+03:00",
            "LastExecDate": "2025-01-01T12:00:00.000000+03:00",
            "FireOnSkip": false,
            "IsSingle": false,
            "CronOperationState": "Disable"
        }
    }
}
JSON
{
    "OperationState": {
        "Code": 2,
        "Desc": "Ошибка"
    },
    "Result": {
        "State": {
            "Code": 3,
            "Desc": "ParamsJson: Неверное значение параметра ParamsJson."
        }
    }
}