-
Авторизация
Авторизация по токену. В заголовке HTTP ожидает нечто вроде:
Authorization: Token 43j2h5tb8453345
Если токен передать как GET-параметр (?token=43j2h5tb8453345), то это значение перекроет заголовок Authorization.
-
Материалы
GET /api/materials/
Возвращает список материалов
[... {"id": 9, "name": "\u0421.....\u043b", "description": "<p>\u0412.....\u0415!</p>", "price": 73.1, "max_size_x": 310.0, "max_size_y": 240.0, "max_size_z": 190.0, "min_thickness": 0.8}, ...]
-
Модели
GET /api/models/[?material=<MaterialID>[&scale=<scale>]]
Возвращает список моделей авторизованного пользователя.
Если параметр material присутствует в запросе, то рассчитывается цена (price).
-
GET /api/models/<ModelID>/[?material=<MaterialID>[&scale=<scale>]]
Возвращает модель.
Если модель не принадлежит пользователю: 404 NOT FOUND
Если параметр material присутствует в запросе, то рассчитывается цена (price).
-
POST /api/models/
Создает новую модель. При успехе возвращает 201 CREATED, сериализованный объект модели в теле ответа и ссылку на объект в заголовке ответа Location. Параметр file может содержать содержимое файла либо ссылку на скачивание. Ссылка должна указываться с протоколом и именем файла.
Пример формы запроса:
<form class="upload-form" method="POST" action="http://localhost:8000/api/models/?token=43j2h5tb8453345" enctype="multipart/form-data"> <input name="file" type="input" placeholder="file URL"/> <input name="file" type="file"/> <input name="name" id="id_name" class="i-file-name" type="text"> <select class="select-replaced" id="id_category" name="category"> <option value="1">Cat 1</option> <option value="2">cat 2</option> </select> <select class="select-replaced" id="id_units" name="units"> <option value="mm" selected="selected">Миллиметры</option> <option value="sm">Сантиметры</option> <option value="m">Метры</option> <option value="inches">Дюймы</option> </select> <input type="submit" value="submit"> </form>
-
Заказы
Пример структуры заказа:
{ "id": 47, "time": "2014-07-17T09:29:54.875Z", "items_cost": 109, "delivery_cost": 0, "payment_type": 2, "status": 3, "items": [ { "model": 1528, "material": 4, "scale": 2.5, "quantity": 1, "cost": 109 } ] }
-
DELETE /api/models/<ModelID>/
Удаляет модель пользователя с заданным ID. При успехе возвращает 204 NO CONTENT
-
GET /api/orders/
Возвращает список заказов пользователя
-
GET /api/orders/<OrderID>/
Возвращает заказ пользователя
Если заказ не принадлежит пользователю: 404 NOT FOUND
-
POST /api/orders/
Создание заказа.
-
PUT /api/orders/<OrderID>/
Обновление заказа с передачей полного состояния.
Метод попытается привести *весь* заказ к виду, который был передан в запросе. Т.о., если в запросе был передан список items, содержащий не все(или ни одного) элементы, которые уже есть в заказе, то неуказанные элементы будут удалены из заказа, новые элементы будут добавлены, существующим будет обновлено количество. Если в запросе не было указано обязательное поле, будет получена ошибка 400 BAD REQUEST.
Работа с полем status
Изменения поля status в это запросе запрещены, используйте методы CANCEL, PAY, PATCH (deprecated)
-
PATCH /api/orders/<OrderID>/
Обновление заказа с передачей частичного состояния.
Метод попытается привести *поля* заказа к тем данным, что пришли в запросе. Т.о. если в запросе был передан список items, содержащий не все элементы, которые уже есть в заказе, то неуказанные элементы останутся неизмененными, новые элементы будут добавлены, существующим будет обновлено количество.
Если в запросе не было указано обязательное поле, оно останется с прежним значением.
Работа с полем status
DEPRECATED: Оставлен из-за возможных проблем с HTTP-proxy. Используйте методы CANCEL, PAY. Изменение поля status выполняется отдельным запросом, в котором никакой информации о других полях присутствовать не должно. Доступные значения поля:
«CANCELED»: см. метод CANCEL
«PAID»: см. метод PAY
-
CANCEL /api/orders/<OrderID>/
Отмена заказа. Если заказ был оплачен, средства будут возвращены на счет. Невозможно выполнить, если заказ на стадии производства.
-
PAY /api/orders/<OrderID>/
Попытка оплаты заказа с личного счета. Если на счету не хватает средств, вернется ошибка 402 PAYMENT REQUIRED.
-
Доставка
-
PATCH /api/orders/<OrderID>/
Указание адреса доставки для заказов со статусом WAITING_ADDRESS. После успешного сохранения адреса меняется статус заказа на WAITING_SHIPPING_TYPE или WAITING_PAYMENT
Список передаваемых полей зависит от типа доставки.
Для самовывоза:
type: 0, phone: обязательное, номер телефона
Для доставки по РФ:
type: 1, phone: обязательное, номер телефона street: обязательное, улица postcode: обязательное, почтовый индекс city_code: обязательное, код города согласно справочнику house: обязательное, номер дома apt: номер квартиры/офиса
Для доставки по миру:
type: 2, phone: обязательное, номер телефона street: обязательное, улица postcode: обязательное, почтовый индекс city: обязательное, название города country_code: обязательное, код страны согласно справочнику house: обязательное, номер дома apt: номер квартиры/офиса
Пример:
PATCH /api/orders/47/ { "address": { "type": 1, "city_code":1, "phone": "+74722123456", "street": "Ленина", "postcode": "308000", "house": 8, "apt": 1 } }
-
GET /api/orders/<OrderID>/delivery_options/
Получение тарифов и способов доставки для указанного в заказе адреса.
Пример ответа:
[ { "name": "Почта России (отправление 1-го класса со страховкой)", "id": 1, "price": 519, "delivery_time": "", "insurance": 1 }, { "name": "СПСР Экспресс (пеликан-стандарт)", "id": 5, "price": 836, "delivery_time": "2-4 дня", "insurance": 0 }, { "name": "PickPoint (постаматы и пункты выдачи)", "id": 29, "price": 697, "delivery_time": "3-4 дня", "insurance": 0 } ]
-
POST /api/deliverycalc/
Калькулятор доставки. Возвращает варианты доставки со стоимостью для указанной модели и адреса.
В отличие от расчета стоимости доставки для заказа можно указать только одну модель.
Пример запроса:
{ "postcode": "308000", "material": 1, "model": 8, "city": 1, "scale": 1 }
postcode - почтовый индекс, Для РФ - 6 цифр
material - код материала
model - код модели
city - код города согласно справочнику городов
country - код страны согласно справочнику
scale - маштаб, больше 0Все поля обязательны за исключением city и country. В запросе должен присутствовать или город, или страна.
-
PATCH /api/orders/<OrderID>/
Указание способа доставки для заказов со статусом WAITING_ADDRESS. У заказа необходимо установить свойство delivery_code равное ID выбранного способа доставки. После успешного сохранения статус заказа меняется на WAITING_PAYMENT. В возвращаемую информацию о заказе добавляются поля delivery_cost со стоимостью доставки, delivery_name в котором выводится текстовое название способа доставки и delivery_code с кодом доставки.
Пример:
PATCH /api/orders/47/ { "delivery_code": 1 } Ответ: { "id": 47, ... "status": "WAITING_PAYMENT", "delivery_cost": 697, "delivery_code": 29, "delivery_name": "PickPoint (постаматы и пункты выдачи)"} "items": [...], "address": {...}, }
-
Справочники
-
GET /api/countries/[?name=<name>]
Получение списка стран для доставки. При указании параметра name выводит страны, начинающиеся на name (без учета регистра)
-
GET /api/countries/<code>/
Возвращает страну с кодом code
-
GET /api/cities/[?name=<name>]
Получение списка городов РФ для доставки. При указании параметра name выводит города, начинающиеся на name (без учета регистра)
-
GET /api/cities/<code>/
Возвращает город с кодом code