<?php
$page_lang = 'ru';
$page_title = 'REST API: интеграция для enterprise клиентов | Corp-Merch.MX';
$page_description = 'REST API: коммерческие предложения, заказы, статусы, счета и webhooks. Bearer-токен, базовый URL, JSON, примеры на curl, Python и Node.js.';
$og_image = '/assets/images/og-sdk.png';
$page_section = 'sdk';
$page_slug    = 'api-integration';

$labels = [
    'name' => 'Имя', 'name_placeholder' => 'Ваше имя',
    'contact' => 'Рабочий email', 'contact_placeholder' => 'имя@компания.com',
    'company' => 'Компания', 'company_placeholder' => 'Юридическое лицо',
    'message' => 'Бриф', 'message_placeholder' => 'Операционный стек, ожидаемый объём, необходимые интеграции...',
    'submit' => 'Запросить доступ к SDK', 'sending' => 'Отправляется...',
    'turnstile_error' => 'Подтвердите, что вы не робот'
];

require __DIR__ . '/../../../includes/header.php';
?>
<link rel="alternate" hreflang="es" href="https://corp-merch.com.mx/es/pages/sdk/api-integration">
<link rel="alternate" hreflang="en" href="https://corp-merch.com.mx/en/pages/sdk/api-integration">
<link rel="alternate" hreflang="ru" href="https://corp-merch.com.mx/ru/pages/sdk/api-integration">
<nav class="breadcrumbs"><a href="/ru/">Главная</a><span class="sep">&rsaquo;</span><a href="/ru/pages/sdk/">SDK</a><span class="sep">&rsaquo;</span><span>REST API</span></nav>

<section class="hero">
  <div class="container">
    <div class="hero-content">
      <p class="eyebrow">REST · JSON · Bearer · OpenAPI 3.0</p>
      <h1>REST API для enterprise клиентов</h1>
      <p class="hero-subtitle">REST API, позволяющий вам подключить коммерческие предложения, заказы, статус производства, поставки и счета к вашему собственному операционному стеку — ERP, клиентский портал, сервис-деск. Документировано в OpenAPI 3.0 с примерами на curl, Python и Node.js. Доступ предоставляется клиентам с действующей программой и подписанным соглашением об использовании.</p>
      <div class="hero-cta"><a href="#contact-form" class="btn btn-primary">Запросить доступ к SDK</a></div>
    </div>
  </div>
</section>

<section class="section"><div class="container">
  <h2>Основы: аутентификация, базовый URL, формат</h2>
  <p>API аутентитируется с bearer-токеном, который мы выдаём вам вместе с программой. Токен ротируется каждые девяносто дней или по вашему запросу. Базовый URL производственной среды — <code>https://api.corp-merch.com.mx/v1</code>. Базовый URL песочницы — <code>https://sandbox.api.corp-merch.com.mx/v1</code>. Песочница содержит фиктивные данные и обнуляется каждый понедельник в ноль часов GMT-6.</p>
  <p>Формат обмена — JSON с UTF-8. Даты и время обрабатываются в ISO 8601 с таймзоной — мы предпочитаем <code>YYYY-MM-DDTHH:MM:SS-06:00</code> для времени Мехико. Суммы в центах MXN — чтобы представить пятьдесят песо пятьдесят сентаво, вы отправляете <code>5050</code>. Коды стран — ISO 3166-1 alpha-2 — <code>MX</code> для Мексики, <code>US</code> для США, <code>CA</code> для Канады.</p>
</div></section>

<section class="section section-alt"><div class="container">
  <h2>Основные эндпоинты</h2>
  <p>API выставляет шесть блоков эндпоинтов. Блок предложений: <code>POST /quotes</code> для создания предложения, <code>GET /quotes/{id}</code> для деталей, <code>POST /quotes/{id}/approve</code> для одобрения, <code>POST /quotes/{id}/reject</code> для отклонения с обоснованием. Блок заказов: <code>POST /orders</code> для создания заказа из одобренного предложения, <code>GET /orders/{id}</code> для деталей, <code>PATCH /orders/{id}</code> для обновления разрешённых полей до производства, <code>POST /orders/{id}/cancel</code> для отмены до производства.</p>
  <p>Блок статусов: <code>GET /orders/{id}/status</code> для полного статуса, <code>GET /orders/{id}/status/history</code> для истории с временными метками, <code>GET /orders/{id}/documents</code> для связанных документов. Блок отгрузок: <code>GET /orders/{id}/shipments</code> для списка отгрузок, <code>GET /shipments/{id}</code> для деталей, <code>POST /shipments/{id}/confirm</code> для подтверждения получения, когда клиент подписывает акт. Блок счетов: <code>GET /orders/{id}/invoices</code> для списка, <code>GET /invoices/{id}</code> для деталей с XML CFDI 4.0 и PDF. Блок каталога: <code>GET /catalog/products</code> для списка продуктов, <code>GET /catalog/products/{id}</code> для деталей с ценами и наличием.</p>
</div></section>

<section class="section"><div class="container">
  <h2>Пример: создание коммерческого предложения</h2>
  <p>Для создания предложения отправляется <code>POST</code> запрос на <code>/v1/quotes</code> с bearer-токеном в заголовке <code>Authorization</code> и JSON-телом с продуктами, количествами, методом нанесения и сроками. Эндпоинт возвращает идентификатор предложения и деталь с ценами в центах MXN до НДС, разбитым НДС, итогом и сроком по линейке.</p>
  <p>Минимальное тело предложения включает массив линеек с <code>product_id</code>, <code>quantity</code>, <code>decoration</code> с методомом — <code>screen</code>, <code>dtf</code>, <code>embroidery</code>, <code>laser</code> — и <code>delivery_address</code> с полным адресом. Для линеек с переменной персонализацией — номер сотрудника, индивидуальный размер — включается массив <code>variables</code> на линейку. Предложение выдаётся в течение минуты, когда каталог распознаёт продукт и адрес попадает в зону покрытия.</p>
</div></section>

<section class="section section-alt"><div class="container">
  <h2>Пример: проверка статуса заказа</h2>
  <p>Для проверки статуса отправляется <code>GET</code> на <code>/v1/orders/{id}/status</code> с bearer-токеном. Эндпоинт возвращает текущий статус — <code>created</code>, <code>approved</code>, <code>in_production</code>, <code>quality_check</code>, <code>packed</code>, <code>shipped</code>, <code>delivered</code>, <code>invoiced</code>, <code>closed</code>, <code>canceled</code> — и процент продвижения по стадии. Ответ включает расчётную дату поставки на основе календаря клиента и мастерской.</p>
  <p>Для тиражей с несколькими стадиями — раскрой, пошив, нанесение, упаковка, отгрузка, доставка — клиент получает разбивку по стадиям с процентом продвижения. Когда стадия задерживается, статус возвращает причину — нехватка сырья, несоответствие, ожидание подтверждения клиента — и обновлённую расчётную дату. Интеграция остаётся согласованной с webhooks, которые срабатывают при изменении статуса.</p>
</div></section>

<section class="section"><div class="container">
  <h2>Обработка ошибок и повторы</h2>
  <p>Ошибки возвращаются со стандартными HTTP-кодами — <code>400</code> для неверного запроса, <code>401</code> для отсутствующего или неверного токена, <code>403</code> для запрещённого ресурса, <code>404</code> для ненайденного resource, <code>409</code> для конфликта состояния, <code>422</code> для ошибки валидации, <code>429</code> для превышения лимита, <code>500</code> для внутренней ошибки. Тело ошибки включает <code>code</code> с машиночитаемым кодом, <code>message</code> с человекочитаемым описанием и <code>details</code> с массивом полей в ошибке, где применимо.</p>
  <p>Лимит частоты — шестьдесят запросов в минуту на токен и тысяча запросов в час на токен. Когда лимит превышен, эндпоинт возвращает <code>429</code> с заголовком <code>Retry-After</code>, указывающим секунды ожидания. Мы реализуем экспоненциальный бэкофф на клиенте с джиттером, чтобы избежать эффекта стада. Для клиентов с большим объёмом договариваемся о повышенном лимите в начале программы.</p>
</div></section>

<section class="section section-alt"><div class="container">
  <h2>Лучшие практики интеграции</h2>
  <p>Мы рекомендуем три практики. Во-первых, используйте песочницу для разработки и тестирования перед выходом в продакшн. Песочница содержит фиктивные данные и обнуляется каждый понедельник. Во-вторых, подпишитесь на webhooks вместо опроса статуса — webhooks срабатывают при изменении статуса, без необходимости клиенту опрашивать. В-третьих, валидируйте подписи HMAC SHA-256 webhook'ов перед обработкой тела, чтобы подтвердить, что webhook приходит из API.</p>
  <p>Для клиентов на serverless-стеках webhook'и подписывают тело и доставляются с заголовками временной метки и идентификатора события. Клиент должен валидировать подпись, временную метку — с допуском пять минут — и идентификатор, чтобы избежать дубликатов при повторе. Полная документация включает справочный раздел с доступными событиями и форматом тела.</p>
</div></section>

<section class="section"><div class="container">
  <h2>Поддержка и наблюдаемость</h2>
  <p>Для клиентов с продуктовой интеграцией мы назначаем технического руководителя мастерской, который отвечает на вопросы интеграции в течение четырёх рабочих часов и участвует в сессиях парного программирования, когда требуется. Технический руководитель также обрабатывает инциденты — пропущенный webhook, расхождение между порталом и API, неожиданные ответы.</p>
  <p>API публикует операционные метрики — доступность, латентность p95, частоту ошибок — на дашборде статуса, на который клиенты могут подписаться. Для клиентов со строгим SLA — банки, финтех, государство — мы предоставляем выделенный дашборд с метриками реального времени и прямым каналом коммуникации для критических инцидентов. Страница статуса доступна без аутентификации.</p>
</div></section>

<section id="contact-form" class="section section-alt"><div class="container">
  <h2>Запросите доступ к SDK</h2>
  <p>Если вашей технической команде нужен доступ к SDK для интеграции коммерческих предложений, заказов, статусов, поставок или счетов с вашим операционным стеком, давайте поговорим. Мы предоставим bearer-токен, доступ к песочнице и полную документацию в вашем формате.</p>
  <?php require __DIR__ . '/../../../includes/form.php'; ?>
</div></section>

<section class="section role-note"><div class="container">
  <p class="role-note-text">REST API и SDK предоставляются клиентам с действующей программой и подписанным соглашением об использовании. Документация может обновляться без предварительного уведомления; о мажорных версиях сообщается за тридцать дней. Corp-Merch.MX — мексиканская мастерская корпоративного мерча; мы работаем независимо.</p>
</div></section>

<script type="application/ld+json">
{"@context":"https://schema.org","@type":"WebPage","name":"REST API Corp-Merch.MX","description":"REST API для enterprise-интеграции: предложения, заказы, статусы, счета и webhooks. Документировано в OpenAPI 3.0.","publisher":{"@type":"Organization","name":"Corp-Merch.MX"}}
</script>
<?php require __DIR__ . '/../../../includes/footer.php'; ?>