npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

saferoute-api

v0.2.2

Published

Пакет для работы с API агрегатора служб доставки SafeRoute.

Downloads

145

Readme

Пакет для работы с API SafeRoute.

Документация к API

Установка

NPM

npm i saferoute-api

Yarn

yarn add saferoute-api

Работа с API

Описание типов APIDataResponse и APIBoolResponse

APIDataResponse

Тип для запросов, в которых сервер возвращает какие-либо данные без постраничной навигации.

type APIDataResponse<D> =
  // Получен успешный ответ от сервера
  | {
      status: SuccessStatuses; // HTTP-статус ответа сервера
      data: D; // Полученные данные
      error: null;
    }
  // От сервера получены код и текстовое описание ошибки
  | {
      status: ErrorWithCodeStatuses;
      data: null;
      error: {
        code: ERROR_CODES;
        message: string;
      };
    }
  // Запрос завершился ошибкой, сервер не отдал код ошибки
  | {
      status: ErrorWithoutCodeStatuses;
      data: null;
      error: null;
    };

APIDataPaginatedResponse

Тип для запросов, в которых сервер возвращает список с постраничной навигацией.

type APIDataPaginatedResponse<D> =
  // Получен успешный ответ от сервера
  | {
      status: SuccessStatuses; // HTTP-статус ответа сервера
      data: D[]; // Полученный список
      pagination: {
        currentPage: number; // Текущая запрошенная страница
        pageCount: number; // Общее количество страниц в текущем списке
        perPage: number; // Количество выводимых на страницу результатов
        totalCount: number; // Общее количество результатов в списке
      };
      error: null;
    }
  // От сервера получены код и текстовое описание ошибки
  | {
      status: ErrorWithCodeStatuses;
      data: null;
      pagination: null;
      error: {
        code: ERROR_CODES;
        message: string;
      };
    }
  // Запрос завершился ошибкой, сервер не отдал код ошибки
  | {
      status: ErrorWithoutCodeStatuses;
      data: null;
      pagination: null;
      error: null;
    };

APIBoolResponse

Тип для запросов, в которых требуется вернуть результат выполнения запроса "успешно" / "не успешно".

type APIBoolResponse =
  // Успешное выполнение запроса
  | {
      status: SuccessStatuses;
      success: true;
      error: null;
    }
  // Неуспешное выполнение запроса с кодом ошибки
  | {
      status: ErrorWithCodeStatuses;
      success: false;
      error: {
        code: ERROR_CODES;
        message: string;
      };
    }
  // Неуспешное выполнение запроса без кода ошибки
  | {
      status: ErrorWithoutCodeStatuses;
      success: false;
      error: null;
    };

Авторизация, профиль и настройки

Авторизация по E-mail и паролю

В разработке

Получение данных и настроек пользователя по токену

В разработке

Калькулятор доставки

Расчёт стоимости доставки

В разработке

Расчёт стоимости доставки для отдельной транспортной компании

В разработке

Получение списка ID транспортных компаний, доставка которыми доступна в выбранный населённый пункт

В разработке

Заказы

Получение списка заказов

В разработке

Получение отдельного заказа

В разработке

Создание заказа

В разработке

Редактирование заказа

В разработке

Частичное редактирование заказа

В разработке

Подтверждение заказов

В разработке

Отмена заказов

В разработке

Дублирование заказов

В разработке

Дублирование заказа для возврата

В разработке

Возврат заказов

В разработке

Продление хранения на ПВЗ

В разработке

Комплектация заказов

В разработке

Раскомплектация заказов

В разработке

Получение параметров забора для создания заказа без склада и магазина

В разработке

Заборы

Документация к API заборов

Получение списка заборов

Пример использования.

import api, { APIDataPaginatedResponse, GetPickupsParams, Pickup } from 'saferoute-api';

const token = '******************';
const params: GetPickupsParams = { archive: true };

const res: APIDataPaginatedResponse<Pickup> = await api.pickups.getPickups(token, params);

Создание забора

Пример использования.

import api, { APIDataResponse, PickupCreateParams, PICKUP_TYPES } from 'saferoute-api';

const token = '******************';
const params: PickupCreateParams = {
  date: '2024-02-01',
  type: PICKUP_TYPES.COURIER_MERGED,
  companyId: 1,
  warehouseId: 2,
  comment: null,
};

const res: APIDataResponse<{ id: number }> = await api.pickups.createPickup(token, params);

Отмена забора

Пример использования.

import api, { APIBoolResponse } from 'saferoute-api';

const token = '******************';
const id = 15; // ID забора

const res: APIBoolResponse = await api.pickups.cancelPickup(token, id);

Получение списка компаний забора

Пример использования.

import api, { APIDataResponse, GetPickupCompaniesParams, PickupCompany, PICKUP_TYPES } from 'saferoute-api';

const token = '******************';
const params: GetPickupCompaniesParams = {
  type: PICKUP_TYPES.COURIER_MERGED,
  warehouseId: 1,
};

const res: APIDataResponse<PickupCompany> = await api.pickups.getPickupCompanies(token, params);

Товары

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

В разработке

Получение отдельного товара

В разработке

Создание нового товара

В разработке

Редактирование товара

В разработке

Частичное редактирование товара

В разработке

Удаление товара

В разработке

Импорт товаров

В разработке

Комплекты товаров

Получение списка комплектов

В разработке

Получение отдельного комплекта

В разработке

Создание нового комплекта

В разработке

Редактирование комплекта

В разработке

Удаление комплекта

В разработке

Склады

Получение списка складов

В разработке

Получение отдельного склада

В разработке

Создание нового склада

В разработке

Редактирование склада

В разработке

Удаление склада

В разработке

Магазины

Получение списка магазинов

В разработке

Получение отдельного магазина

В разработке

Создание нового магазина

В разработке

Редактирование магазина

В разработке

Удаление магазина

В разработке

Коробки

Получение списка коробок

В разработке

Получение отдельной коробки

В разработке

Создание новой коробки

В разработке

Редактирование коробки

В разработке

Частичное редактирование коробки

В разработке

Удаление коробки

В разработке

Документы

Список актов приёма товаров

В разработке

Формирование акта приёма товаров

В разработке

Список актов передачи заказов

В разработке

Создание актов передачи заказов

В разработке

Генерация сборочной ведомости

В разработке

Формирование отчёта по движению товаров

В разработке

Список стикеров

В разработке

Формирование стикеров

В разработке

Отчёты

Документация к API отчётов

Список счетов

Пример использования.

import api, { APIDataPaginatedResponse, GetBillsParams, Bill } from 'saferoute-api';

const token = '******************';
const params: GetBillsParams = { from: '2023-01-01', to: '2023-03-01' };

const res: APIDataPaginatedResponse<Bill> = await api.reports.getBills(token, params);

Список отчётов агента/исполнителя

Пример использования.

import api, { APIDataPaginatedResponse, GetAgentReportsParams, AgentReport, REPORTS_TYPES } from 'saferoute-api';

const token = '******************';
const params: GetAgentReportsParams = { from: '2023-01-01', to: '2023-03-01', type: REPORTS_TYPES.DAILY };

const res: APIDataPaginatedResponse<AgentReport> = await api.reports.getAgentReports(token, params);

Подтверждение отчёта агента

Пример использования.

import api, { APIBoolResponse } from 'saferoute-api';

const token = '******************';
const id = 15; // ID отчёта

const res: APIBoolResponse = await api.reports.confirmAgentReport(token, id);

Список аналитических отчётов

Пример использования.

import api, { APIDataPaginatedResponse, GetAnalyticalReportsParams, AnalyticalReport, ANALYTICAL_REPORTS_TYPES } from 'saferoute-api';

const token = '******************';
const params: GetAnalyticalReportsParams = { from: '2023-01-01', to: '2023-03-01', type: ANALYTICAL_REPORTS_TYPES.CONSOLIDATED };

const res: APIDataPaginatedResponse<AnalyticalReport> = await api.reports.getAnalyticalReports(token, params);

Генерация аналитических отчётов

Пример использования.

import api, { APIDataResponse, AnalyticalReportGenerateParams, ANALYTICAL_REPORTS_TYPES } from 'saferoute-api';

const token = '******************';
const params: AnalyticalReportGenerateParams = {
  date: { from: '2023-01-01', to: '2023-03-01' },
  type: ANALYTICAL_REPORTS_TYPES.BY_ORDERS,
};

const res: APIDataResponse<{ file: string }> = await api.reports.generateAnalyticalReport(token, params);

Маркетплейсы

Список маркетплейсов

В разработке

Редактирование настроек маркетплейса

В разработке

Другое

Список дополнительных услуг

В разработке

Информация об интервалах курьерской доставки

В разработке

Список компаний доставки (кроме возвратных)

В разработке

Список компаний возврата

В разработке

Список всех ПВЗ

В разработке

Список маркетплейсов со складами

В разработке

Список статусов заказа

В разработке

Трекинг заказа

В разработке

Данные по доступным вариантам отгрузки

В разработке

Виджеты

Функции для помощи в интеграции виджетов.

apiScript

Реализация API-скрипта виджетов для nodejs.

Пример подключения с использованием NestJS.

import { Body, Controller, Get, Post, Query, HttpCode, HttpStatus, Ip } from '@nestjs/common';

import api, { WidgetsApiResponse } from 'saferoute-api';

const token = '******************';
const shopId = 777777;

@Controller('widgets')
export default class WidgetsController {
  @Get('api')
  getApiRequest(@Query() query, @Ip() ip: string): Promise<WidgetsApiResponse> {
    return api.widgets.widgetApi(query.url, 'GET', query.data, { token, shopId }, ip);
  }

  @Post('api')
  @HttpCode(HttpStatus.OK)
  postApiRequest(@Body('url') url: string, @Body('data') data, @Ip() ip: string): Promise<WidgetsApiResponse> {
    return api.widgets.widgetApi(url, 'POST', data, { token, shopId }, ip);
  }
}

widgets/update-order

Функция обновления данных заказа, созданного корзинным виджетом.

См. изменение параметров заказа после его создания.

Пример использования.

import api, { WidgetsUpdateOrderResponse } from 'saferoute-api';

const token = '******************';
const shopId = 777777;

// ID заказа, полученный из виджета, либо возвращённый предыдущим вызовом api.widgets.updateOrder() в data.cabinetId
const orderId = '';

const res: Promise<WidgetsUpdateOrderResponse> = api.widgets.updateOrder(orderId, {
  status: 'confirmed',  // Код статуса заказа
  paymentMethod: 'cod', // Код способа оплаты заказа
  COD: true,            // Наличие наложенного платежа (nppOption из документации к виджету)
  cmsId: '656565',      // ID заказа в CMS
  payment: false,       // Флаг совершения оплаты
}, { token, shopId });

Описание ответа WidgetsUpdateOrderResponse.

type WidgetsUpdateOrderResponse =
  // Заказ обновлён успешно
  // Если заказ был отправлен в Личный кабинет, data.cabinetId будет содержать его ID в Личном кабинете
  | {
      status: WIDGETS_RESPONSE_STATUS_CODES.SUCCESS;
      data: {
        cabinetId: number | null;
      };
    }
  // Ошибка
  // data.code содержит код ошибки (см. документацию к виджету), data.message - текстовую расшифровку (опционально)
  | {
      status: WIDGETS_RESPONSE_STATUS_CODES.REQUEST_ERROR;
      data: {
        code: WIDGETS_UPDATE_ORDER_ERRORS;
        message: string;
      };
    }
  // Ошибка авторизации - передан некорректный токен
  | {
      status: WIDGETS_RESPONSE_STATUS_CODES.AUTH_ERROR;
    }
  // Ошибка сервера - обратитесь в техподдержку
  | {
      status: WIDGETS_RESPONSE_STATUS_CODES.SERVER_ERROR;
    };

widgets/confirm-order

Функция подтверждения оформления заказа на сайте при оплате через эквайринг корзинного виджета.

См. встроенный эквайринг.

Пример использования.

import api, { WidgetsConfirmOrderResponse } from 'saferoute-api';

const token = '******************';
const shopId = 777777;

// ID сессии чекаута, полученный из виджета после оформления заказа
const checkoutSessId = '';

const res: Promise<WidgetsConfirmOrderResponse> = api.widgets.confirmOrder(checkoutSessId, { token, shopId });

Описание ответа WidgetsConfirmOrderResponse.

type WidgetsConfirmOrderResponse =
  // Заказ успешно подтверждён
  | {
      status: WIDGETS_RESPONSE_STATUS_CODES.SUCCESS;
    }
  // Ошибка, data.code содержит код ошибки (см. документацию к виджету)
  | {
      status: WIDGETS_RESPONSE_STATUS_CODES.REQUEST_ERROR;
      data: {
        code: WIDGETS_CONFIRM_ORDER_ERRORS;
      };
    }
  // Ошибка авторизации - передан некорректный токен
  | {
      status: WIDGETS_RESPONSE_STATUS_CODES.AUTH_ERROR;
    }
  // Ошибка сервера - обратитесь в техподдержку
  | {
      status: WIDGETS_RESPONSE_STATUS_CODES.SERVER_ERROR;
    };

Константы

Общие

  • ERROR_CODES - Коды ошибок API

Заборы

  • PICKUP_TYPES - Типы заборов
  • PICKUP_STATUSES - Статусы заборов

Отчёты

  • BILLS_STATUSES - Статусы счетов
  • REPORTS_TYPES - Типы отчётов
  • ANALYTICAL_REPORTS_TYPES - Типы аналитических отчётов

Виджеты