Добавить группу сертификатов

 

POST

/organization/certificate_group/add

 

Заголовки

token // Токен доступа выданный при авторизации

 

Входной JSON

{

   "id":  "1",

//[Необязательный]. Идентификатор. Если не передан - генерируется сервисом.

 

   "name": "2",

//[Необязательный]. Наименование

 

   "description": "3",

//[Необязательный]. Дополнительное описание

 

   "start_date":  1583084146659,

//[Необязательный]. Дата начала действия. Нельзя оплачивать сертификатами раньше этого срока и продавать его.

 

  "end_date":  1611596146659,

//[Необязательный]. Дата окончания действия. Нельзя оплачивать сертификатами раньше этого срока и продавать его.

 

  "start_sale_date":  1583948146659,

//[Необязательный]. Дата начала продажи сертификатов

Нельзя продавать сертификаты раньше этого срока. Оплачивать можно.

 

  "end_sale_date":  1602956146659,

//[Необязательный]. Дата начала продажи сертификатов

Нельзя продавать сертификаты позже этого срока. Оплачивать можно.

 

  "period_type":  0,

//[Обязательный]. Вариант действия серийного номера

//0 -  Совпадает с периодом действия сертификата

//1 -  Относительно даты активации сертификата

 

  "use_days":  0,

//[Необязательный]. Сколько дней действует сертификат

//Если «относительно даты активации сертификата» тогда выбираем сколько дней будет доступен сертификат

 

  "value":500.5,

//[Необязательный]. Номинал сертификата

//Если выбран абсолютный номинал используем это значение.

//Если 0, тогда это значит, что сертификат Плавающий.

 

  "use_method":  0,

//[Необязательный]. Гашение сертификата

// 0 -только полная сумма может быть списана, даже если сумма чека меньше; Когда использовали в чеке, а потом тот чек возвращают - на сертификат средства не возвращаются

// 1 - может списываться по кусочкам, пока полность. не кончится;

 

  "exclude_shop_items": 

  [

"shop_1111",

"shop_2222" 

  ],

//[Необязательный].Магазины в которых нельзя использовать и продавать сертификат

 

  "include_shop_items": 

  [

"shop_1",

"shop_2" 

  ]

//[Необязательный]. Магазины в которых можно использовать и продавать сертификат

 

}

 

Выходной JSON

{
"code": 0,
"message": "Операция выполнена",
"id": "eeaedde5-5c71-4a7a-bc2d-5e04bdb8671e" //Идентификатор созданной группы
}

 

 

Изменить группу сертификатов

POST

/organization/certificate_group/{id}

 

Параметры URI

id // Идентификатор существующей группы

 

Заголовки

token // Токен доступа выданный при авторизации

 

Входной JSON

{

 

   "name": "2",

//[Необязательный]. Наименование

 

   "description": "3",

//[Необязательный]. Дополнительное описание

 

   "start_date":  1583084146659,

//[Необязательный]. Дата начала действия. Нельзя оплачивать сертификатами раньше этого срока и продавать его.

 

  "end_date":  1611596146659,

//[Необязательный]. Дата окончания действия. Нельзя оплачивать сертификатами раньше этого срока и продавать его.

 

  "start_sale_date":  1583948146659,

//[Необязательный]. Дата начала продажи сертификатов

Нельзя продавать сертификаты раньше этого срока. Оплачивать можно.

 

  "end_sale_date":  1602956146659,

//[Необязательный]. Дата начала продажи сертификатов

Нельзя продавать сертификаты позже этого срока. Оплачивать можно.

 

  "period_type":  0,

//[Обязательный]. Вариант действия серийного номера

//0 -  Совпадает с периодом действия сертификата

//1 -  Относительно даты активации сертификата

 

  "use_days":  0,

//[Необязательный]. Сколько дней действует сертификат

//Если «относительно даты активации сертификата» тогда выбираем сколько дней будет доступен сертификат

 

  "value":500.5,

//[Необязательный]. Номинал сертификата

//Если выбран абсолютный номинал используем это значение.

//Если 0, тогда это значит, что сертификат Плавающий.

 

  "use_method":  0,

//[Необязательный]. Гашение сертификата

// 0 -только полная сумма может быть списана, даже если сумма чека меньше; Когда использовали в чеке, а потом тот чек возвращают - на сертификат средства не возвращаются

// 1 - может списываться по кусочкам, пока полность. не кончится;

 

}

 

Выходной JSON

{
"code": 0,
"message": "Операция выполнена"
}

 

 

Удалить группу сертификатов

Все входящие в группу сертификаты будут аннулированы.

POST

/organization/certificate_group/{id}/delete

 

Параметры URI

id // Идентификатор существующей группы

 

Заголовки

token // Токен доступа выданный при авторизации

 

Входной JSON

{

}

 

Выходной JSON

{
    "code": 0,

         "message": "Операция выполнена"
}

 

 

Получить группу  сертификатов

GET

/organization/certificate_group/{id}

 

Параметры URI

id // Идентификатор существующей группы

 

Заголовки

token // Токен доступа выданный при авторизации

 

Выходной JSON

{
       "code": 0,
       "message": "Операция выполнена",


"certificate_group": 

  {

   "id":  "1",

//[Необязательный]. Идентификатор. Если не передан - генерируется сервисом.

 

   "name": "2",

//[Необязательный]. Наименование

 

   "description": "3",

//[Необязательный]. Дополнительное описание

 

   "start_date":  1583084146659,

//[Необязательный]. Дата начала действия. Нельзя оплачивать сертификатами раньше этого срока и продавать его.

 

  "end_date":  1611596146659,

//[Необязательный]. Дата окончания действия. Нельзя оплачивать сертификатами раньше этого срока и продавать его.

 

  "start_sale_date":  1583948146659,

//[Необязательный]. Дата начала продажи сертификатов

Нельзя продавать сертификаты раньше этого срока. Оплачивать можно.

 

  "end_sale_date":  1602956146659,

//[Необязательный]. Дата начала продажи сертификатов

Нельзя продавать сертификаты позже этого срока. Оплачивать можно.

 

  "period_type":  0,

//[Обязательный]. Вариант действия серийного номера

//0 -  Совпадает с периодом действия сертификата

//1 -  Относительно даты активации сертификата

 

  "use_days":  0,

//[Необязательный]. Сколько дней действует сертификат

//Если «относительно даты активации сертификата» тогда выбираем сколько дней будет доступен сертификат

 

  "value":500.5,

//[Необязательный]. Номинал сертификата

//Если выбран абсолютный номинал используем это значение.

//Если 0, тогда это значит, что сертификат Плавающий.

 

  "use_method":  0,

//[Необязательный]. Гашение сертификата

// 0 -только полная сумма может быть списана, даже если сумма чека меньше; Когда использовали в чеке, а потом тот чек возвращают - на сертификат средства не возвращаются

// 1 - может списываться по кусочкам, пока полность. не кончится;

 

  "exclude_shop_items": 

  [

      {

        "id":"37615a36-5893-11e6-8caa-0050568b35ac",

        "name":"Западный склад"     

      }

  ],

//[Необязательный].Магазины в которых нельзя использовать и продавать сертификат

 

  "include_shop_items": 

  [

     {

        "id":"37615a36-5893-11e6-8caa-0050568b35ac",

        "name":"Западный склад"     

      }

  ]

//[Необязательный]. Магазины в которых можно использовать и продавать сертификат

 

  }
}

 

 

 

Получить список групп сертификатов

GET

/organization/certificate_group

 

Параметры в строке запроса

name_filter //[Необязательный]. Полнотекстовый поиск по наименованию группы

page //[Необязательный]. Номер страницы которую нужно получить

per_page //[Необязательный]. Количество строк на страницу

calculate_count //[Необязательный]. Рассчитывать ли пагинацию по всей таблице?

 

Заголовки

token // Токен доступа выданный при авторизации

 

Выходной JSON

{
       "code": 0,
       "message": "Операция выполнена",


       "certificate_groups":[ // Список групп
        {

      "row_number":      1,

      "id":"cert_gr_03",

      "name":"cert_gr_03 вручную",

      "description":"УЛК вручную",

      "start_date":      1583183400000,

      "end_date":      0,

      "start_sale_date":      1583787600000,

      "end_sale_date":      1588194000000,

      "period_type":      0,

      "use_days":      0,

      "value":0,

      "use_method":      0,

      "deleted":false,

      "include_shop_items":     

      [

        {

          "id":"eeafbd10-0cf4-11ea-ba8a-5404a6b11b7d",

          "name":"Магазин1"       

        }     

      ]   

    },

    {

      "row_number":      2,

      "id":"58764bba-a040-4b6e-a6c0-95fbf1019947",

      "name":"cert_TSB",

      "description":"buy sale test",

      "start_date":      1583182801000,

      "end_date":      1585026000000,

      "start_sale_date":      1583614800000,

      "end_sale_date":      1585256400000,

      "period_type":      1,

      "use_days":      0,

      "value":0,

      "use_method":      1,

      "deleted":false   

    } 

     ],

 

     "pagination": 

       {

         "per_page":    10,    // Количество строк на страницу

         "page"    :    1,     // Номер текущей страницы

         "items"   :    15275, // Всего записей

         "pages"   :    1528   // Всего страниц

      }
}

 

 

Добавить сертификат

POST

/organization/certificate/add

 

Заголовки

token // Токен доступа выданный при авторизации

 

Входной JSON

{

  "id":"certificate_1",

 //[Необязательный] Идентификатор (код) сертификата

 

  "group_id":"fa323281-1c16-446d-9d1a-85db4e92dd77",

 //[Необязательный] идентификатор группы сертификатов

 

  "description":"Сертификат certificate_1",

 //[Необязательный] Описание сертификата

 

  "status":  0,

 //[Необязательный]

 // Деактивирован (0),

 // Активирован (1),

 // Потрачен (2),

 // Аннулирован (3),

 // Истек (4)

 

  "status_description":"Пояснение к статусу",

 //[Необязательный]

 

  "status_date":  1585735857114,

 //[Необязательный] Дата изменения статуса

 

  "activation_date":  1585735857114

 //[Необязательный] Дата активации

}

 

Выходной JSON

{
"code": 0,
"message": "Операция выполнена"
}

 

 

Аннулировать сертификат

POST

/organization/certificate/{id}/delete

 

Параметры URI

id // Идентификатор существующего сертификата

 

Заголовки

token // Токен доступа выданный при авторизации

 

Входной JSON

{

}

 

Выходной JSON

{
    "code": 0,

         "message": "Операция выполнена"
}

 

 

Получить сертификат

При продаже:

Проверяем

1 certificate.status

Пояснение: сертификат активирован;

 

2 certificate.certificate_group.start_date < certificate.status_date"

Пояснение: дата активации сертификата больше, чем дата начала действия сертификата. На тот случай, если кто то в группе сертификатов отредактирует поле "Действует с", а из этой группы сертификаты уже были активированы

 

3

Если в этом массиве есть записи certificate.certificate_group.exclude_shop_items, то shop_id из которого ведется продажа - нед должно быть в нем;

 

Если в этом массиве есть записи certificate.certificate_group.include_shop_items, то shop_id из которого ведется продажа - должен быть в нем;

 

Пояснение: группу сертификатов можно настроить таким образом, что сертификаты можно продавать или оплачивать ими только из определенных магазинов (применений, исключений) - проверяем, что текущий магазин входит в множество применений и не входит в множество исключений.

4 certificate.status_date < текущей даты

Пояснение: у нас активация может быть будущим числом - поэтому нужно проверить, что активация уже наступила.

 

 

GET

/organization/certificate/{id}?full_info=True

 

Параметры URI

id // Идентификатор существующей карты

full_info // если в истине - то вместе с сертификатом получается его группа

 

Заголовки

token // Токен доступа выданный при авторизации

 

Выходной JSON

{

  "certificate": 

  {

    "row_number":    1,

    "id":"certificate_1",

    "group_id":"certificate_group_1",

    "description":"Сертификат обновлен certificate_1",

    "status":    3,

// Деактивирован (0), Активирован (1),

// Потрачен (2),

// Аннулирован (3),

// Истек (4)

 

    "status_date":    1583131949683,

    "status_description":"Аннулирован",

    "activation_date":    1582798366510,

    "value":0,

    "nominal":500.5,

    "balance":0, // Текущие доступные средства на счету сертификата

    "certificate_group":   

    {

      "row_number":      1,

      "id":"certificate_group_1",

      "name":"Группа сертификатов certificate_group_1",

      "description":"Описание группы сертификатов certificate_group_1",

      "start_date":      1580206362000,

//Когда можно продавать и оплачивать сертификатом

 

      "end_date":      1608729162000,

//Когда можно продавать и оплачивать сертификатом

 

      "start_sale_date":      1581070362000,

// Когда можно продавать сертификат

 

      "end_sale_date":      1600078362000,

// Когда можно продавать сертификат

 

      "period_type":      0,

// 0 - Совпадает с периодом действия сертификата

// 1 - Относительно даты активации сертификата

 

      "use_days":      0,

// Если «относительно даты активации сертификата» тогда выбираем сколько дней будет доступен сертификат

 

      "value":500.5,

// Если выбран абсолютный номинал используем это значение.

// Если 0, тогда это значит, что сертификат Плавающий.

 

      "use_method":      0,

// 0 -только полная сумма может быть списана, даже если сумма чека меньше; Когда использовали в чеке, а потом тот чек возвращают - на сертификат средства не возвращаются
// 1 - может списываться по кусочкам, пока полность. не кончится;

 

      "deleted":false,   

 

      "include_shop_items":     

      [

        {

          "id":"abf58710-f5c8-11e2-802f-0015e9b8c48d",

          "name":"Магазин 1"       

        }     

      ],

// Магазины применений

 

      "exclude_shop_items":     

      [

        {

          "id":"abf58710-f6c8-11e2-802f-0015e9b8c48d",

          "name":"Магазин 2"       

        }     

      ]   

// Магазины исключений

    } 

  },

  "code":  0,

  "message":"Операция выполнена"

}

 

 

Получить список сертификатов

GET

/organization/certificate

 

Параметры в строке запроса

group_id //[Необязательный]. Идентификатор группы в котором выполняется поиск

status=0 //[Необязательный].

 //[Необязательный]

 // Деактивирован (0),

 // Активирован (1),

 // Потрачен (2),

 // Аннулирован (3),

 // Истек (4)

 

page //[Необязательный]. Номер страницы которую нужно получить

per_page //[Необязательный]. Количество строк на страницу

calculate_count //[Необязательный]. Рассчитывать ли пагинацию по всей таблице?

 

Заголовки

token // Токен доступа выданный при авторизации

 

Выходной JSON

{

  "certificates": 

  [

    {

      "row_number":      1,

      "id":"certificate_1_1",

      "group_id":"certificate_group_1",

      "description":"",

      "status":      0,

      "status_date":      1583501098350,

      "status_description":"",

      "activation_date":      0,

      "value":0,

      "nominal":500.5,

      "balance":0   

    },

    {

      "row_number":      2,

      "id":"certificate_2",

      "group_id":"certificate_group_1",

      "description":"Сертификат обновлен certificate_2",

      "status":      0,

      "status_date":      1583152738533,

      "status_description":"Пояснение к статусу",

      "activation_date":      1583152738533,

      "value":0,

      "nominal":500.5,

      "balance":0   

    } 

  ],

  "pagination": 

  {

    "per_page":    2,

    "page":    1,

    "items":    2,

    "pages":    1 

  },

  "code":  0,

  "message":"Операция выполнена"

}

 

 

 

Ручная активация сертификата

POST

/organization/certificate/activate

 

Параметры URI

 

 

Заголовки

token // Токен доступа выданный при авторизации

 

Входной JSON

{

  "id":"certificate_1",

 

  "sum":  100,

// Нужна если сумма сертификата плавающая

 

  "doc_id":""

}

 

 

Выходной JSON

{
    "code": 0,

         "message": "Операция выполнена"
}

 

Зарезервировать / снять сертификат с резерва

POST

/organization/certificate/activate

 

Параметры URI

 

 

Заголовки

token // Токен доступа выданный при авторизации

 

Входной JSON

{

// Необязательный используется если нужно зарезервировать конкретный сертификат. Будет обязательным, если не заполнен group_id. Так же обязательный, если снимаем резерв (reserved=false)

   "id":"a91ea309-41f4-45f5-b8b2-eceb4027125a",

 

// Необязательный используется если нужно зарезервировать случайный деактивированный сертификат из группы. Будет обязательным, если не заполнен id

  "group_id":"a91ea309-41f4-45f5-b8b2-eceb4027125a",

 

// Действие над сертификатом. true - резервируем. false - снимаем с резерва.

  "reserved":true

}

 

 

 

Выходной JSON

{

"id":"0000000000018",
    "code": 0,

         "message": "Операция выполнена"
}

 

 

 

Пакетная обработка сертификатов

           

POST

/organization/certificate/batch/{operation}

 

Параметры

operation = [add,update,delete, reserve] // Обязательный. Одно из перечисленных значений.

 

Заголовки

token // Токен доступа выданный при авторизации

 

Входной JSON

// Если используется reserve, тогда поведение сводится к описанному в методе ”Зарезервировать / снять сертификат с резерва”. Операция выполняется в транзакции.

{

  "certificates": 

  [

    {

      "id":"c_1",

      "group_id":"certificate_group_1",

      "description":"Сертификат c_1",

      "reserved":true

    },

    {

      "id":"c_2",

      "group_id":"certificate_group_1",

      "description":"Сертификат c_2",

      "reserved":true

     } 

  ]

}

 

Выходной JSON

{
       "code": 0,
       "message": "Операция выполнена"

}

 

 

Получить продажи по сертификатам

GET

/organization/certificate/sale_info

 

Параметры в строке запроса

group_id //[Необязательный]. Идентификатор группы в котором выполняется поиск

id //[Необязательный]. Идентификатор сертификата по которому выполняется поиск

page //[Необязательный]. Номер страницы которую нужно получить

per_page //[Необязательный]. Количество строк на страницу

calculate_count //[Необязательный]. Рассчитывать ли пагинацию по всей таблице?

 

Заголовки

token // Токен доступа выданный при авторизации

 

Выходной JSON

{

"certificate_sales": 

  [

    {

      "row_number":      1,

      "group_id":"certificate_group_1",

      "id":"certificate_1",

      "date":      1580135545000,

      "doc_id":"3",

      "operation":      0,

      "sum":50   

    } 

  ]

,

  "pagination": 

  {

    "per_page":    2,

    "page":    1,

    "items":    2,

    "pages":    1 

  },

  "code":  0,

  "message":"Операция выполнена"

}