{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","docs_url":"https://expri-server.ru/dev","base_url":"https://api.expri.space/api/public/v1","domain_migration":{"status":"retired","enabled":true,"from_host":"expri-server.ru","to_host":"api.expri.space","from_origin":"https://expri-server.ru","to_origin":"https://api.expri.space","from_base_url":"https://expri-server.ru/api/public/v1","to_base_url":"https://api.expri.space/api/public/v1","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","retired_http_status":410,"message":"Публичное API переносится с expri-server.ru на api.expri.space. Старые адреса отключаются 13.10.2026 в 23:59:59 МСК, кроме методов расширения Ozon: они продолжают работать на обоих доменах. Пути методов и ключи доступа сохраняются."},"lifecycle":{"statuses":["active","deprecated","retired"],"retired_status":410,"sunset_time":"00:00 Europe/Moscow","headers":["Deprecation","Sunset","Link"]},"auth":{"header":"X-Public-Api-Key: sorld_core_live_...","alternative":"Authorization: Bearer sorld_core_live_...","token_lifecycle":"Полный токен показывается один раз при выпуске. Токен ограничен организацией и scopes.","new_scopes":"Ранее выданные токены не получают новые разрешения автоматически. Выпустите токен с нужным набором scopes."},"transport":{"methods":["GET","OPTIONS"],"options_status":204,"content_type":"application/json","cors":"*"},"pagination":{"resources":["orders","print-queues","stock","ink","products","production-plan","stock-movements","supplies","supply-items","ink-measurements","marketplaces/wb/prices","marketplaces/wb/stocks","marketplaces/wb/orders","marketplaces/wb/sales","marketplaces/wb/spp","marketplaces/wb/spp-groups","marketplaces/wb/funnel","marketplaces/wb/ads","marketplaces/ozon/products","marketplaces/ozon/stocks","marketplaces/ozon/analytics","marketplaces/ozon/postings","marketplaces/ozon/posting-items","marketplaces/ozon/finance"],"limit_default":100,"limit_max":250,"request_cursor":"cursor","response_cursor":"next_cursor","filter_policy":"Сохраняйте фильтры между страницами.","snapshot_consistency":false},"period":{"default":"Текущий месяц сервера.","priority":"Полная пара date_from/date_to имеет приоритет над month/segment.","inclusive":true,"segments":{"first":"1–15","second":"16–последний день","all":"Весь месяц"}},"collection_period":{"resources":"Методы с date_from/date_to в parameters.","default":"Вся сохранённая история.","format":"YYYY-MM-DD","requires_pair":true,"inclusive":true,"month_segment_supported":false},"rate_limits":{"account_scope":"Одна организация, все ключи и методы чтения Core.","policy":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true},"headers":["X-RateLimit-Limit","X-RateLimit-Remaining","X-RateLimit-Reset","Retry-After"],"limit_header":"Ёмкость всплеска.","reset_header":"Unix-время полного восстановления всплеска.","retry_after":"Секунды до следующей попытки.","options_and_docs_counted":false},"errors":{"401":["public_api_key_required","public_api_key_invalid","tenant_inactive","public_api_scope_denied:scope"],"405":["method_not_allowed"],"410":["method_retired","api_address_retired"],"422":["invalid_limit","invalid_cursor","invalid_updated_since","invalid_warehouse","invalid_active","invalid_date_from","invalid_date_to","invalid_date_range","invalid_<filter>"],"429":["rate_limit_exceeded"],"500":["storage_failed"],"503":["rate_limit_unavailable"]},"additional_services":{"ozon":{"base_url":"https://api.expri.space/api/public/v1/ozon","docs_url":"https://api.expri.space/api/public/v1/ozon/docs","auth":"Authorization: Bearer <shop key ozs2.… or Core connection code ozs1.…>","note":"Отдельный API цен и СПП. Доступ определяется ключом магазина; обычный Public API-токен не принимается."}},"scopes":{"stock_write":"Складские движения и перемещения","payroll_write":"Ставки, авансы, премии и штрафные часы","ink_write":"Регистрация измерений чернил","employees_write":"Создание и изменение сотрудников","materials_write":"Создание, изменение и удаление материалов","products_write":"Создание и изменение продукции","orders_write":"Создание и изменение производственных заказов","schedule_write":"Изменение графика сотрудников","defects_write":"Создание и изменение карточек брака","bugs_write":"Создание и изменение баг-репортов","summary":"Сводка по tenant и базовым метрикам","analytics":"Аналитика по печати, часам и начислениям","employees":"Сотрудники и роли","materials":"Материалы и складские остатки","archive":"Архив печати и событий","schedule":"Общий график сотрудников","defects":"Карточки брака","bugs":"Баг-репорты","payroll":"Расчёт выплат","orders":"Производственные заказы и статусы","print_queues":"Очереди печати и состав рулонов","stock":"Остатки готовой продукции по внутренним складам","ink":"Расход чернил по SKU","products":"Каталог продукции","production_plan":"План производства FBO","stock_movements":"Движения готовой продукции","supplies":"Поставки FBO и их состав","ink_history":"История измерений чернил","wb_prices":"WB: цены продавца","wb_stocks":"WB: остатки по складам","wb_orders":"WB: заказы","wb_sales":"WB: продажи и возвраты","wb_spp":"История СПП WB по товарам и распределение по группам","wb_analytics":"WB: воронка продаж","wb_ads":"WB: рекламная аналитика","ozon_products":"Ozon: каталог и цены продавца","ozon_stocks":"Ozon: остатки по складам","ozon_analytics":"Ozon: аналитика по дням","ozon_postings":"Ozon: отправления","ozon_finance":"Ozon: финансовые операции"},"endpoints":[{"method":"GET","path":"/api/public/v1/ping","scope":null,"title":"Проверка публичного токена","description":"Проверяет токен, организацию и разрешения доступа.","note":"Не требует отдельного scope. last_used_at содержит значение, прочитанное до обновления отметки текущим запросом.","params":[],"parameters":[],"example":"https://api.expri.space/api/public/v1/ping","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/ping'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/ping\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/ping\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/ping');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"token.scopes","desc":"Разрешения, доступные именно этому токену."},{"name":"tenant.id","desc":"Организация определяется токеном; передавать tenant_id для Public API не требуется."},{"name":"generated_at","desc":"Время формирования ответа сервера."}],"responses":{"200":{"title":"Успешно · пример данных","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации","status":"active"},"token":{"name":"Интеграция","prefix":"sorld_core_live_example...","scopes":["summary","analytics"],"last_used_at":"2026-11-08 19:08:31"}}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_key_invalid"}},"405":{"title":"Неверный HTTP-метод","body":{"ok":false,"error":"method_not_allowed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/ping","replacement_url":"https://api.expri.space/api/public/v1/ping","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/summary","scope":"summary","title":"Сводка организации","description":"Возвращает количество сотрудников, материалы, расходники и накопленные события.","note":"Сводка показывает текущее состояние; archive_events_total и attendance_events_total — количество сохранённых событий, без фильтра по периоду.","params":[],"parameters":[],"example":"https://api.expri.space/api/public/v1/summary","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/summary'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/summary\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/summary\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/summary');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"summary.employees_total","desc":"Количество записей сотрудников."},{"name":"summary.materials_length_m","desc":"Суммарный остаток материалов, м."},{"name":"summary.inks_total / boxes_total / supplies_total","desc":"Суммарные количества расходников."},{"name":"summary.archive_events_total / attendance_events_total","desc":"Количество событий в соответствующих журналах."}],"responses":{"200":{"title":"Успешно · пример данных","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"summary":{"employees_total":1,"materials_total":1,"materials_length_m":25.3,"inks_total":4,"boxes_total":20,"supplies_total":10,"archive_events_total":80,"attendance_events_total":20}}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_key_invalid"}},"405":{"title":"Неверный HTTP-метод","body":{"ok":false,"error":"method_not_allowed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/summary","replacement_url":"https://api.expri.space/api/public/v1/summary","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/analytics","scope":"analytics","title":"Производственная аналитика","description":"Возвращает площадь печати, плановые часы, начисления по сотрудникам и остатки материалов.","note":"Площадь рассчитывается по производственному архиву; scheduled_hours — часы по графику. stock отражает текущие остатки, а не состояние склада на конец выбранного периода.","params":["date_from","date_to","month","segment"],"parameters":[{"name":"date_from","desc":"Начало периода, YYYY-MM-DD. Работает вместе с date_to."},{"name":"date_to","desc":"Конец периода, YYYY-MM-DD. Обе даты включены в выборку."},{"name":"month","desc":"Месяц YYYY-MM; по умолчанию текущий месяц сервера."},{"name":"segment","desc":"all — весь месяц; first — 1–15; second — 16–последний день. По умолчанию all."}],"example":"https://api.expri.space/api/public/v1/analytics?month=2026-11&segment=all","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/analytics?month=2026-11&segment=all'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/analytics?month=2026-11&segment=all\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/analytics?month=2026-11&segment=all\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/analytics?month=2026-11&segment=all');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"period","desc":"Фактически выбранные границы периода, month и segment."},{"name":"summary","desc":"Площадь, число дней печати, пиковый день, часы и выплаты."},{"name":"print_area_by_day","desc":"Объект: дата → площадь, м²."},{"name":"hours_by_employee","desc":"Объект: имя сотрудника → часы по графику."},{"name":"payroll_by_employee","desc":"Объект: имя → часы, ставка, начисления, корректировки и статус выплаты. При совпадающих именах ключи могут совпасть; для учёта по emp_id используйте payroll."},{"name":"stock","desc":"Текущая складская сводка."}],"responses":{"200":{"title":"Успешно · пример данных","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"period":{"month":"2026-11","segment":"all","date_from":"2026-11-01","date_to":"2026-11-30"},"summary":{"print_area_total_m2":120.5,"print_days_count":1,"peak_day":"2026-11-01","peak_day_area_m2":120.5,"scheduled_hours_total":120,"payroll_total":36500,"average_pay_per_hour":304.17},"print_area_by_day":{"2026-11-01":120.5},"hours_by_employee":{"Сотрудник":120},"payroll_by_employee":{"Сотрудник":{"scheduled_hours":120,"gross_amount":36000,"adjustments_amount":500,"net_amount":36500,"current_rate":300,"payout_status":"unpaid"}},"stock":{"materials_count":1,"materials_length_m":25.3,"inks_total":4,"boxes_total":20,"supplies_total":10,"wall_map_count":2}}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_key_invalid"}},"405":{"title":"Неверный HTTP-метод","body":{"ok":false,"error":"method_not_allowed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/analytics","replacement_url":"https://api.expri.space/api/public/v1/analytics","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/employees","scope":"employees","title":"Сотрудники","description":"Возвращает сотрудников, роли, RFID и порядок отображения.","note":"Список содержит все записи, которые возвращает справочник сотрудников организации.","params":[],"parameters":[],"example":"https://api.expri.space/api/public/v1/employees","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/employees'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/employees\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/employees\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/employees');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"employees[].emp_id","desc":"Идентификатор сотрудника для фильтров и связей."},{"name":"employees[].name / role","desc":"Имя и роль."},{"name":"employees[].rfid_uid","desc":"RFID-идентификатор из справочника."},{"name":"employees[].sort_order / updated_at","desc":"Порядок и время обновления записи."}],"responses":{"200":{"title":"Успешно · пример данных","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"employees":[{"emp_id":"emp_example","name":"Сотрудник","role":"Печать","rfid_uid":"EXAMPLE","sort_order":10,"updated_at":"2026-11-08 19:08:31"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_key_invalid"}},"405":{"title":"Неверный HTTP-метод","body":{"ok":false,"error":"method_not_allowed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/employees","replacement_url":"https://api.expri.space/api/public/v1/employees","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/materials","scope":"materials","title":"Материалы и расходники","description":"Возвращает рулоны материалов и агрегированные остатки чернил, коробок и расходников.","note":"materials содержит материалы поштучно; остальные виды расходников представлены суммарными количествами в overview.","params":[],"parameters":[],"example":"https://api.expri.space/api/public/v1/materials","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/materials'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/materials\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/materials\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/materials');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"overview","desc":"Количество материалов, длина, чернила, коробки, расходники и число QR-привязок wall_map_count."},{"name":"materials[].material_id / mat_type","desc":"Идентификатор и тип материала."},{"name":"materials[].length_m / cell_qr","desc":"Остаток в метрах и QR ячейки."},{"name":"materials[].created_at / updated_at","desc":"Время создания и обновления."}],"responses":{"200":{"title":"Успешно · пример данных","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"overview":{"materials_count":1,"materials_length_m":25.3,"inks_total":4,"boxes_total":20,"supplies_total":10,"wall_map_count":2},"materials":[{"material_id":"mat_example","mat_type":"Обои","length_m":25.3,"cell_qr":"CELL_EXAMPLE","created_at":"2026-11-08 19:08:31","updated_at":"2026-11-08 19:08:31"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_key_invalid"}},"405":{"title":"Неверный HTTP-метод","body":{"ok":false,"error":"method_not_allowed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/materials","replacement_url":"https://api.expri.space/api/public/v1/materials","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/schedule","scope":"schedule","title":"График и фактические отметки","description":"Возвращает график за месяц: строки сотрудников и дни с планом, примечаниями и фактом.","note":"schedule.rows — массив, а ключи days — номера дней месяца. worked означает наличие отметки прихода или ухода; это не отдельный расчёт оплаченных часов.","params":["month"],"parameters":[{"name":"month","desc":"Месяц YYYY-MM. По умолчанию текущий месяц сервера."}],"example":"https://api.expri.space/api/public/v1/schedule?month=2026-11","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/schedule?month=2026-11'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/schedule?month=2026-11\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/schedule?month=2026-11\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/schedule?month=2026-11');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"schedule.days_in_month","desc":"Количество дней в месяце."},{"name":"schedule.rows[].employee","desc":"Запись сотрудника из справочника."},{"name":"schedule.rows[].days","desc":"Объект: номер дня → сведения о смене. Пример показывает один день; в ответе присутствуют все дни месяца."},{"name":"days.N.value / note / staff_note","desc":"План смены и примечания."},{"name":"days.N.worked / fact","desc":"Признак фактической отметки и её данные."}],"responses":{"200":{"title":"Успешно · пример данных","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"month":"2026-11","schedule":{"days_in_month":30,"rows":[{"employee":{"emp_id":"emp_example","name":"Сотрудник","role":"Печать","rfid_uid":"EXAMPLE","sort_order":10,"updated_at":"2026-11-08 19:08:31"},"days":{"1":{"value":"09:00-21:00","note":"","staff_note":"","worked":false,"fact":[]}}}]}}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_key_invalid"}},"405":{"title":"Неверный HTTP-метод","body":{"ok":false,"error":"method_not_allowed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/schedule","replacement_url":"https://api.expri.space/api/public/v1/schedule","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/archive","scope":"archive","title":"Архив производственных событий","description":"Возвращает события с фильтром по периоду и сотруднику.","note":"По умолчанию до 100 событий, максимум 250. offset и cursor не поддерживаются; для объёмных выгрузок делите период. event_type и payload зависят от вида события.","params":["date_from","date_to","month","segment","emp_id","limit"],"parameters":[{"name":"date_from","desc":"Начало периода, YYYY-MM-DD. Работает вместе с date_to."},{"name":"date_to","desc":"Конец периода, YYYY-MM-DD. Обе даты включены в выборку."},{"name":"month","desc":"Месяц YYYY-MM; по умолчанию текущий месяц сервера."},{"name":"segment","desc":"all — весь месяц; first — 1–15; second — 16–последний день. По умолчанию all."},{"name":"emp_id","desc":"Необязательный идентификатор сотрудника."},{"name":"limit","desc":"По умолчанию 100, максимум 250. Значения меньше 1 заменяются на 100."}],"example":"https://api.expri.space/api/public/v1/archive?month=2026-11&segment=all&limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/archive?month=2026-11&segment=all&limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/archive?month=2026-11&segment=all&limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/archive?month=2026-11&segment=all&limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/archive?month=2026-11&segment=all&limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"archive[].ts / date_key","desc":"Время события и нормализованная дата."},{"name":"archive[].emp_id / employee_name","desc":"Сотрудник, связанный с событием."},{"name":"archive[].event_type / area_m2","desc":"Тип события и площадь, если она присутствует."},{"name":"archive[].payload","desc":"Нормализованные данные исходного события."}],"responses":{"200":{"title":"Успешно · пример данных","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"period":{"date_from":"2026-11-01","date_to":"2026-11-30"},"archive":[{"ts":"2026-11-08 19:08:31","date_key":"2026-11-01","emp_id":"emp_example","employee_name":"Сотрудник","event_type":"print","area_m2":12.4,"payload":{"type":"print","emp_id":"emp_example","area_m2":12.4}}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_key_invalid"}},"405":{"title":"Неверный HTTP-метод","body":{"ok":false,"error":"method_not_allowed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/archive","replacement_url":"https://api.expri.space/api/public/v1/archive","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/defects","scope":"defects","title":"Карточки брака","description":"Производственный брак за период с фильтром по статусу.","note":"Выборка ограничена limit; сводка считается по возвращённым карточкам, после фильтра и ограничения. Статус сравнивается без учёта регистра. Пагинация offset/cursor не поддерживается.","params":["date_from","date_to","month","segment","status","limit"],"parameters":[{"name":"date_from","desc":"Начало периода, YYYY-MM-DD. Работает вместе с date_to."},{"name":"date_to","desc":"Конец периода, YYYY-MM-DD. Обе даты включены в выборку."},{"name":"month","desc":"Месяц YYYY-MM; по умолчанию текущий месяц сервера."},{"name":"segment","desc":"all — весь месяц; first — 1–15; second — 16–последний день. По умолчанию all."},{"name":"status","desc":"Необязательное точное значение статуса, без учёта регистра."},{"name":"limit","desc":"По умолчанию 100, максимум 250."}],"example":"https://api.expri.space/api/public/v1/defects?month=2026-11&segment=all&limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/defects?month=2026-11&segment=all&limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/defects?month=2026-11&segment=all&limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/defects?month=2026-11&segment=all&limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/defects?month=2026-11&segment=all&limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"defects[]","desc":"Карточки с ключом, статусом, датой, описанием и данными автора; содержимое зависит от карточки."},{"name":"summary.count","desc":"Количество карточек в возвращённой выборке."},{"name":"summary.photos","desc":"Количество фото или вложений в этой выборке."},{"name":"summary.status_counts","desc":"Количество карточек по статусам; для пустой выборки пустой массив."}],"responses":{"200":{"title":"Успешно · пример данных","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"period":{"month":"2026-11","segment":"all","date_from":"2026-11-01","date_to":"2026-11-30"},"summary":{"count":0,"photos":0,"today_count":0,"status_counts":[]},"defects":[]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_key_invalid"}},"405":{"title":"Неверный HTTP-метод","body":{"ok":false,"error":"method_not_allowed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/defects","replacement_url":"https://api.expri.space/api/public/v1/defects","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/bugs","scope":"bugs","title":"Сообщения об ошибках","description":"Сообщения об ошибках за период с фильтром по статусу.","note":"Выборка ограничена limit; сводка считается по возвращённым карточкам, после фильтра и ограничения. Статус сравнивается без учёта регистра. Пагинация offset/cursor не поддерживается.","params":["date_from","date_to","month","segment","status","limit"],"parameters":[{"name":"date_from","desc":"Начало периода, YYYY-MM-DD. Работает вместе с date_to."},{"name":"date_to","desc":"Конец периода, YYYY-MM-DD. Обе даты включены в выборку."},{"name":"month","desc":"Месяц YYYY-MM; по умолчанию текущий месяц сервера."},{"name":"segment","desc":"all — весь месяц; first — 1–15; second — 16–последний день. По умолчанию all."},{"name":"status","desc":"Необязательное точное значение статуса, без учёта регистра."},{"name":"limit","desc":"По умолчанию 100, максимум 250."}],"example":"https://api.expri.space/api/public/v1/bugs?month=2026-11&segment=all&limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/bugs?month=2026-11&segment=all&limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/bugs?month=2026-11&segment=all&limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/bugs?month=2026-11&segment=all&limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/bugs?month=2026-11&segment=all&limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"bugs[]","desc":"Карточки с ключом, статусом, датой, описанием и данными автора; содержимое зависит от карточки."},{"name":"summary.count","desc":"Количество карточек в возвращённой выборке."},{"name":"summary.attachments","desc":"Количество фото или вложений в этой выборке."},{"name":"summary.status_counts","desc":"Количество карточек по статусам; для пустой выборки пустой массив."}],"responses":{"200":{"title":"Успешно · пример данных","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"period":{"month":"2026-11","segment":"all","date_from":"2026-11-01","date_to":"2026-11-30"},"summary":{"count":0,"attachments":0,"new_count":0,"status_counts":[]},"bugs":[]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_key_invalid"}},"405":{"title":"Неверный HTTP-метод","body":{"ok":false,"error":"method_not_allowed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/bugs","replacement_url":"https://api.expri.space/api/public/v1/bugs","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/payroll","scope":"payroll","title":"Расчёт выплат","description":"Возвращает расчёт выплат по сотрудникам, часам, ставкам и корректировкам.","note":"Метод только читает расчёт. scheduled_hours — план по графику; net_amount — итог с корректировками. Связывайте строки по emp_id, а не по имени.","params":["date_from","date_to","month","segment"],"parameters":[{"name":"date_from","desc":"Начало периода, YYYY-MM-DD. Работает вместе с date_to."},{"name":"date_to","desc":"Конец периода, YYYY-MM-DD. Обе даты включены в выборку."},{"name":"month","desc":"Месяц YYYY-MM; по умолчанию текущий месяц сервера."},{"name":"segment","desc":"all — весь месяц; first — 1–15; second — 16–последний день. По умолчанию all."}],"example":"https://api.expri.space/api/public/v1/payroll?month=2026-11&segment=all","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/payroll?month=2026-11&segment=all'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/payroll?month=2026-11&segment=all\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/payroll?month=2026-11&segment=all\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/payroll?month=2026-11&segment=all');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"payroll[].emp_id / name / role","desc":"Сотрудник."},{"name":"scheduled_days / scheduled_hours / penalty_hours / required_hours","desc":"Плановые дни и часы, штрафные и требуемые часы."},{"name":"current_rate","desc":"Ставка расчёта."},{"name":"gross_amount / adjustments_amount / net_amount","desc":"Начисления, корректировки и итоговая сумма."},{"name":"payout_status","desc":"Статус выплаты."},{"name":"summary","desc":"Суммы scheduled_hours, required_hours, gross_amount, adjustments_amount и net_amount."}],"responses":{"200":{"title":"Успешно · пример данных","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"period":{"month":"2026-11","segment":"all","date_from":"2026-11-01","date_to":"2026-11-30"},"summary":{"scheduled_hours":120,"required_hours":120,"gross_amount":36000,"adjustments_amount":500,"net_amount":36500},"payroll":[{"emp_id":"emp_example","name":"Сотрудник","role":"Печать","scheduled_days":10,"scheduled_hours":120,"penalty_hours":0,"required_hours":120,"current_rate":300,"gross_amount":36000,"adjustments_amount":500,"net_amount":36500,"payout_status":"unpaid"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_key_invalid"}},"405":{"title":"Неверный HTTP-метод","body":{"ok":false,"error":"method_not_allowed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/payroll","replacement_url":"https://api.expri.space/api/public/v1/payroll","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/orders","scope":"orders","title":"Производственные заказы","description":"Заказы Core, количество, статусы и производственные идентификаторы.","note":"Источник — сохранённые записи Core, без обращения к API маркетплейсов. Фильтры совпадают со значениями полей записи. По умолчанию включает все source_type, в том числе ручные и складские записи. Сортировка: updated_at и order_key по убыванию. Изменения во время обхода могут переместить запись; для синхронизации используйте updated_since с перекрытием и объединяйте по order_key.","params":["marketplace","source_type","status","sku","updated_since","limit","cursor"],"parameters":[{"name":"marketplace","desc":"Точное значение marketplace, например WB или OZON."},{"name":"source_type","desc":"Точный тип исходной записи Core."},{"name":"status","desc":"Точный текущий статус Core."},{"name":"sku","desc":"Точный SKU."},{"name":"updated_since","desc":"Изменения с указанного времени включительно, ISO 8601 с часовым поясом, например 2026-10-01T00:00:00+05:00."},{"name":"limit","desc":"Размер страницы: 1–250, по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Фильтры должны совпадать; limit можно изменить."}],"example":"https://api.expri.space/api/public/v1/orders?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/orders?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/orders?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/orders?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/orders?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"orders[].order_key","desc":"Стабильный ключ записи внутри Core."},{"name":"marketplace / source_type / sku / title","desc":"Маркетплейс, тип, SKU и название."},{"name":"order_no / external_order_id / posting_number","desc":"Идентификаторы исходного заказа."},{"name":"status / qty","desc":"Статус Core и количество."},{"name":"production_code / production_date / production_printer","desc":"Код изделия, дата производства и ключ принтера; могут быть пустыми."},{"name":"warehouse_target / created_at / updated_at","desc":"Целевой склад и время записи."},{"name":"count / limit","desc":"Количество записей на этой странице и запрошенный размер страницы."},{"name":"has_more / next_cursor","desc":"Если has_more=true, передайте next_cursor в следующий запрос; на последней странице next_cursor=null."}],"responses":{"200":{"title":"Успешно · пример данных","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"count":1,"limit":100,"has_more":false,"next_cursor":null,"orders":[{"order_key":"order_example","marketplace":"OZON","source_type":"wallpaper","sku":"EXAMPLE_312х270","title":"Пример изделия","order_no":"example","external_order_id":"example","posting_number":"example","status":"печатается","qty":1,"production_code":"P26EXAMPLE","production_date":"20261108","production_printer":"sakura","warehouse_target":"","created_at":"2026-11-08 19:08:31","updated_at":"2026-11-08 19:08:31"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_key_invalid"}},"405":{"title":"Неверный HTTP-метод","body":{"ok":false,"error":"method_not_allowed"}},"422":{"title":"Некорректный параметр","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/orders","replacement_url":"https://api.expri.space/api/public/v1/orders","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/print-queues","scope":"print_queues","title":"Очереди печати","description":"Принтеры, рулоны и состав заданий в очередях Core.","note":"Метод только читает очередь. Он не выдаёт задание агенту и не запускает печать. Сортировка jobs: created_at и id по убыванию. Включает прямые задания и ещё не выданные артефакты; archived=true для completed/superseded. Состояние обработки агентом не заменяет подтверждение фактической печати.","params":["printer","state","limit","cursor"],"parameters":[{"name":"printer","desc":"Необязательный ключ зарегистрированного принтера, например sakura."},{"name":"state","desc":"Точное состояние: pending, received, processing, completed, failed, uncertain, superseded."},{"name":"limit","desc":"Размер страницы: 1–250, по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Фильтры должны совпадать; limit можно изменить."}],"example":"https://api.expri.space/api/public/v1/print-queues?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/print-queues?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/print-queues?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/print-queues?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/print-queues?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"printers[]","desc":"Ключ, название и цвет доступных принтеров; архивные принтеры исключены."},{"name":"jobs[].id / roll_id / printer","desc":"Ключ задания, номер рулона и принтер. До прямой выдачи id может иметь префикс artifact:."},{"name":"jobs[].state / archived","desc":"Состояние доставки/обработки и принадлежность к архиву."},{"name":"jobs[].layouts[]","desc":"article, code, strips, marketplace, source — состав рулона."},{"name":"jobs[].content_error","desc":"Описание отсутствующего состава; пустая строка при успешном разборе."},{"name":"count / limit","desc":"Количество записей на этой странице и запрошенный размер страницы."},{"name":"has_more / next_cursor","desc":"Если has_more=true, передайте next_cursor в следующий запрос; на последней странице next_cursor=null."}],"responses":{"200":{"title":"Успешно · пример данных","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"count":1,"limit":100,"has_more":false,"next_cursor":null,"printers":[{"printer":"sakura","name":"Sakura","color":"#5865f2"}],"jobs":[{"id":"dispatch_example","roll_id":"roll_example","printer":"sakura","state":"pending","archived":false,"created_at":"2026-11-08 19:08:31","updated_at":"2026-11-08 19:08:31","layouts":[{"article":"EXAMPLE_312х270","code":"P26EXAMPLE","strips":"1-3","marketplace":"OZON","source":"order"}],"content_error":""}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_key_invalid"}},"405":{"title":"Неверный HTTP-метод","body":{"ok":false,"error":"method_not_allowed"}},"422":{"title":"Некорректный параметр","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/print-queues","replacement_url":"https://api.expri.space/api/public/v1/print-queues","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/stock","scope":"stock","title":"Остатки готовой продукции","description":"Количество изделий по внутренним складам Core и количество в производстве.","note":"Источник — внутренний учёт движений и заказов Core. Это не остатки FBO на складах маркетплейсов. Учитывает Склад, Склад WB и Склад OZON; картины объединяются на локальном Складе. Отрицательные остатки сохраняются. Нулевые строки без производства не возвращаются. Сортировка: warehouse и sku по возрастанию. updated_at — последняя отметка учёта, а generated_at — время чтения.","params":["warehouse","sku","limit","cursor"],"parameters":[{"name":"warehouse","desc":"Склад, Склад WB или Склад OZON. Без фильтра — все три склада."},{"name":"sku","desc":"Точный SKU."},{"name":"limit","desc":"Размер страницы: 1–250, по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Фильтры должны совпадать; limit можно изменить."}],"example":"https://api.expri.space/api/public/v1/stock?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/stock?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/stock?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/stock?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/stock?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"stock[].warehouse / sku","desc":"Склад и SKU; составляют ключ строки."},{"name":"qty","desc":"Учтённый остаток изделий, шт."},{"name":"in_production_qty","desc":"Количество в производстве, учтённое складским расчётом Core."},{"name":"updated_at","desc":"Время последнего изменения, использованного в расчёте."},{"name":"count / limit","desc":"Количество записей на этой странице и запрошенный размер страницы."},{"name":"has_more / next_cursor","desc":"Если has_more=true, передайте next_cursor в следующий запрос; на последней странице next_cursor=null."}],"responses":{"200":{"title":"Успешно · пример данных","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"count":1,"limit":100,"has_more":false,"next_cursor":null,"stock":[{"warehouse":"Склад OZON","sku":"EXAMPLE_312х270","qty":10,"in_production_qty":3,"updated_at":"2026-11-08 19:08:31"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_key_invalid"}},"405":{"title":"Неверный HTTP-метод","body":{"ok":false,"error":"method_not_allowed"}},"422":{"title":"Некорректный параметр","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/stock","replacement_url":"https://api.expri.space/api/public/v1/stock","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/ink","scope":"ink","title":"Расход чернил по SKU","description":"Актуальный расход CMYK, площадь и расход на квадратный метр из справочника Core.","note":"Источник — сохранённый расход SKU: замеры, импорт или ручной учёт. Новые измерения запрос не выполняет. Сортировка: updated_at и внутренний ключ SKU по убыванию. Для синхронизации используйте updated_since с перекрытием и объединяйте строки по sku. Метод возвращает текущее значение; историю отдельных измерений не выдаёт.","params":["sku","category","active","updated_since","limit","cursor"],"parameters":[{"name":"sku","desc":"Точный SKU."},{"name":"category","desc":"Точная категория: wallpaper, picture или poster."},{"name":"active","desc":"1 — активные SKU (по умолчанию); 0 — неактивные; all — все."},{"name":"updated_since","desc":"Изменения с указанного времени включительно, ISO 8601 с часовым поясом, например 2026-10-01T00:00:00+05:00."},{"name":"limit","desc":"Размер страницы: 1–250, по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Фильтры должны совпадать; limit можно изменить."}],"example":"https://api.expri.space/api/public/v1/ink?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/ink?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/ink?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/ink?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/ink?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"ink[].sku / category / source / ink_mode","desc":"SKU, категория и источник сохранённого расхода."},{"name":"width_cm / height_cm / area_m2","desc":"Размеры в сантиметрах и площадь в м²."},{"name":"ink_c_ml / ink_m_ml / ink_y_ml / ink_k_ml / ink_total_ml","desc":"CMYK и полный расход в мл."},{"name":"ink_ml_m2","desc":"Расход в мл/м²."},{"name":"strip_count / box_size / media_name / passes","desc":"Полосы, короб, материал и число проходов."},{"name":"review_status / active / last_measured_at / updated_at","desc":"Статус проверки, активность и временные отметки."},{"name":"count / limit","desc":"Количество записей на этой странице и запрошенный размер страницы."},{"name":"has_more / next_cursor","desc":"Если has_more=true, передайте next_cursor в следующий запрос; на последней странице next_cursor=null."}],"responses":{"200":{"title":"Успешно · пример данных","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"count":1,"limit":100,"has_more":false,"next_cursor":null,"ink":[{"sku":"EXAMPLE_416х270","category":"wallpaper","source":"measurement","ink_mode":"measurement","width_cm":416,"height_cm":270,"area_m2":11.232,"strip_count":4,"box_size":"4,16","ink_c_ml":1.2,"ink_m_ml":1.3,"ink_y_ml":1.1,"ink_k_ml":0.9,"ink_total_ml":4.5,"ink_ml_m2":0.400641,"media_name":"Пример материала","passes":4,"review_status":"ok","active":true,"last_measured_at":"2026-11-08 19:08:31","updated_at":"2026-11-08 19:08:31"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_key_invalid"}},"405":{"title":"Неверный HTTP-метод","body":{"ok":false,"error":"method_not_allowed"}},"422":{"title":"Некорректный параметр","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/ink","replacement_url":"https://api.expri.space/api/public/v1/ink","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/products","scope":"products","title":"Каталог продукции","description":"Каталог продукции. Постраничная выгрузка для внешней интеграции.","note":"Каталог производственных товаров Core. Размеры в миллиметрах; ml_per_unit — сохранённая норма, а не отдельное измерение чернил. По умолчанию active=1; active=all включает архивные позиции. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по updated_at, product_key. Между страницами состояние может измениться.","params":["limit","cursor","marketplace","source_type","sku","active","updated_since"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"marketplace","desc":"Точное совпадение. Маркетплейс позиции в Core."},{"name":"source_type","desc":"Точное совпадение. Категория или тип продукции в источнике."},{"name":"sku","desc":"Точное совпадение. Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id."},{"name":"active","desc":"0 или 1; по умолчанию 1. all включает неактивные позиции."},{"name":"updated_since","desc":"ISO 8601 с часовым поясом. Фильтр по updated_at включительно; допускает повторные записи при синхронизации."}],"example":"https://api.expri.space/api/public/v1/products?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/products?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/products?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/products?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/products?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: core. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"products[].product_key","desc":"Ключ записи для сопоставления и объединения выгрузок. Тип: text. NULL источника сохраняется как null."},{"name":"products[].source_type","desc":"Категория или тип продукции в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"products[].marketplace","desc":"Маркетплейс позиции в Core. Тип: text. NULL источника сохраняется как null."},{"name":"products[].sku","desc":"Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id. Тип: text. NULL источника сохраняется как null."},{"name":"products[].title","desc":"Название товара в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"products[].article_mp","desc":"Артикул продавца в соответствующем источнике. Тип: text. NULL источника сохраняется как null."},{"name":"products[].width_mm","desc":"Размер продукции в миллиметрах. Тип: int. NULL источника сохраняется как null."},{"name":"products[].height_mm","desc":"Размер продукции в миллиметрах. Тип: int. NULL источника сохраняется как null."},{"name":"products[].strips","desc":"Количество полос. Тип: int. NULL источника сохраняется как null."},{"name":"products[].ml_per_unit","desc":"Сохранённая норма расхода чернил на единицу, мл. Тип: int. NULL источника сохраняется как null."},{"name":"products[].priority","desc":"Сохранённый приоритет обработки. Тип: int. NULL источника сохраняется как null."},{"name":"products[].active","desc":"Признак активной позиции, boolean. Тип: bool. NULL источника сохраняется как null."},{"name":"products[].created_at","desc":"Время создания записи в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"products[].updated_at","desc":"Время последнего сохранённого обновления записи. Тип: text. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"core","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"products":[{"product_key":"Пример","source_type":"Пример","marketplace":"OZON","sku":"SKU-001","title":"Пример","article_mp":"SKU-001","width_mm":1,"height_mm":1,"strips":1,"ml_per_unit":1,"priority":1,"active":true,"created_at":"2026-11-08 19:08:31","updated_at":"2026-11-08 19:08:31"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:products"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/products","replacement_url":"https://api.expri.space/api/public/v1/products","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/production-plan","scope":"production_plan","title":"План производства FBO","description":"План производства FBO. Постраничная выгрузка для внешней интеграции.","note":"Сохранённый план FBO. Метод не запускает пересчёт потребности и не создаёт задания на печать. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по updated_at, plan_key. Между страницами состояние может измениться.","params":["limit","cursor","marketplace","sku","updated_since"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"marketplace","desc":"Точное совпадение. Маркетплейс позиции в Core."},{"name":"sku","desc":"Точное совпадение. Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id."},{"name":"updated_since","desc":"ISO 8601 с часовым поясом. Фильтр по updated_at включительно; допускает повторные записи при синхронизации."}],"example":"https://api.expri.space/api/public/v1/production-plan?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/production-plan?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/production-plan?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/production-plan?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/production-plan?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: core. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"production_plan[].plan_key","desc":"Ключ записи для сопоставления и объединения выгрузок. Тип: text. NULL источника сохраняется как null."},{"name":"production_plan[].marketplace","desc":"Маркетплейс позиции в Core. Тип: text. NULL источника сохраняется как null."},{"name":"production_plan[].sku","desc":"Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id. Тип: text. NULL источника сохраняется как null."},{"name":"production_plan[].product_key","desc":"Ключ записи для сопоставления и объединения выгрузок. Тип: text. NULL источника сохраняется как null."},{"name":"production_plan[].print_priority","desc":"Сохранённый приоритет обработки. Тип: int. NULL источника сохраняется как null."},{"name":"production_plan[].need_print","desc":"Количество в сохранённом плане производства. Тип: int. NULL источника сохраняется как null."},{"name":"production_plan[].remaining_qty","desc":"Количество в сохранённом плане производства. Тип: int. NULL источника сохраняется как null."},{"name":"production_plan[].in_production_m2","desc":"Площадь продукции в производстве, м². Тип: float. NULL источника сохраняется как null."},{"name":"production_plan[].not_printed_m2","desc":"Оставшаяся непечатанная площадь, м². Тип: float. NULL источника сохраняется как null."},{"name":"production_plan[].not_printed_qty","desc":"Количество в сохранённом плане производства. Тип: int. NULL источника сохраняется как null."},{"name":"production_plan[].updated_at","desc":"Время последнего сохранённого обновления записи. Тип: text. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"core","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"production_plan":[{"plan_key":"Пример","marketplace":"OZON","sku":"SKU-001","product_key":"Пример","print_priority":1,"need_print":1,"remaining_qty":1,"in_production_m2":12.5,"not_printed_m2":12.5,"not_printed_qty":1,"updated_at":"2026-11-08 19:08:31"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:production_plan"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/production-plan","replacement_url":"https://api.expri.space/api/public/v1/production-plan","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/stock-movements","scope":"stock_movements","title":"Движения готовой продукции","description":"Движения готовой продукции. Постраничная выгрузка для внешней интеграции.","note":"qty возвращается в исходном виде; направление движения определяется kind. Не суммируйте qty без учёта типа движения. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по ts, id. Между страницами состояние может измениться.","params":["limit","cursor","marketplace","warehouse","sku","kind","date_from","date_to","updated_since"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"marketplace","desc":"Точное совпадение. Маркетплейс позиции в Core."},{"name":"warehouse","desc":"Точное совпадение. Название склада источника."},{"name":"sku","desc":"Точное совпадение. Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id."},{"name":"kind","desc":"Точное совпадение. Тип движения; определяет приход или расход."},{"name":"date_from","desc":"Начало периода YYYY-MM-DD включительно по полю ts. Задаётся вместе с date_to. Без пары дат — вся сохранённая история."},{"name":"date_to","desc":"Конец периода YYYY-MM-DD включительно. Даты должны существовать; date_from ≤ date_to. month/segment здесь не используются."},{"name":"updated_since","desc":"ISO 8601 с часовым поясом. Фильтр по updated_at включительно; допускает повторные записи при синхронизации."}],"example":"https://api.expri.space/api/public/v1/stock-movements?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/stock-movements?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/stock-movements?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/stock-movements?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/stock-movements?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: core. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"stock_movements[].id","desc":"Числовой идентификатор записи в Core. Тип: int. NULL источника сохраняется как null."},{"name":"stock_movements[].ts","desc":"Время складского движения. Тип: text. NULL источника сохраняется как null."},{"name":"stock_movements[].kind","desc":"Тип движения; определяет приход или расход. Тип: text. NULL источника сохраняется как null."},{"name":"stock_movements[].marketplace","desc":"Маркетплейс позиции в Core. Тип: text. NULL источника сохраняется как null."},{"name":"stock_movements[].warehouse","desc":"Название склада источника. Тип: text. NULL источника сохраняется как null."},{"name":"stock_movements[].sku","desc":"Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id. Тип: text. NULL источника сохраняется как null."},{"name":"stock_movements[].qty","desc":"Количество в исходной записи; направление движения задаётся kind. Тип: int. NULL источника сохраняется как null."},{"name":"stock_movements[].area_m2","desc":"Площадь в квадратных метрах. Тип: float. NULL источника сохраняется как null."},{"name":"stock_movements[].order_key","desc":"Связанный ключ производственного заказа, если задан. Тип: text. NULL источника сохраняется как null."},{"name":"stock_movements[].updated_at","desc":"Время последнего сохранённого обновления записи. Тип: text. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"core","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"stock_movements":[{"id":1,"ts":"2026-11-08 19:08:31","kind":"приход","marketplace":"OZON","warehouse":"Пример","sku":"SKU-001","qty":10,"area_m2":12.5,"order_key":"Пример","updated_at":"2026-11-08 19:08:31"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:stock_movements"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/stock-movements","replacement_url":"https://api.expri.space/api/public/v1/stock-movements","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/supplies","scope":"supplies","title":"Поставки FBO","description":"Поставки FBO. Постраничная выгрузка для внешней интеграции.","note":"Поставки, заведённые в Core. Состав доступен в supply-items по supply_key. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по updated_at, supply_key. Между страницами состояние может измениться.","params":["limit","cursor","marketplace","status","supply_key","date_from","date_to","updated_since"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"marketplace","desc":"Точное совпадение. Маркетплейс позиции в Core."},{"name":"status","desc":"Точное совпадение. Статус или подстатус в сохранённом источнике."},{"name":"supply_key","desc":"Точное совпадение. Ключ записи для сопоставления и объединения выгрузок."},{"name":"date_from","desc":"Начало периода YYYY-MM-DD включительно по полю created_at. Задаётся вместе с date_to. Без пары дат — вся сохранённая история."},{"name":"date_to","desc":"Конец периода YYYY-MM-DD включительно. Даты должны существовать; date_from ≤ date_to. month/segment здесь не используются."},{"name":"updated_since","desc":"ISO 8601 с часовым поясом. Фильтр по updated_at включительно; допускает повторные записи при синхронизации."}],"example":"https://api.expri.space/api/public/v1/supplies?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/supplies?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/supplies?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/supplies?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/supplies?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: core. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"supplies[].supply_key","desc":"Ключ записи для сопоставления и объединения выгрузок. Тип: text. NULL источника сохраняется как null."},{"name":"supplies[].marketplace","desc":"Маркетплейс позиции в Core. Тип: text. NULL источника сохраняется как null."},{"name":"supplies[].supply_no","desc":"Номер поставки в Core. Тип: text. NULL источника сохраняется как null."},{"name":"supplies[].status","desc":"Статус или подстатус в сохранённом источнике. Тип: text. NULL источника сохраняется как null."},{"name":"supplies[].shipped_at","desc":"Время отправки поставки, если отмечено. Тип: text. NULL источника сохраняется как null."},{"name":"supplies[].accepted_at","desc":"Время приёмки поставки, если отмечено. Тип: text. NULL источника сохраняется как null."},{"name":"supplies[].created_at","desc":"Время создания записи в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"supplies[].updated_at","desc":"Время последнего сохранённого обновления записи. Тип: text. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"core","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"supplies":[{"supply_key":"Пример","marketplace":"OZON","supply_no":"Пример","status":"draft","shipped_at":"","accepted_at":"","created_at":"2026-11-08 19:08:31","updated_at":"2026-11-08 19:08:31"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:supplies"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/supplies","replacement_url":"https://api.expri.space/api/public/v1/supplies","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/supply-items","scope":"supplies","title":"Состав поставок FBO","description":"Состав поставок FBO. Постраничная выгрузка для внешней интеграции.","note":"Строки поставок Core. qty — заявлено, accepted_qty — принято, transit_qty — в пути. Все поставки можно выгрузить постранично; supply_key ограничивает выборку одной поставкой. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по updated_at, id. Между страницами состояние может измениться.","params":["limit","cursor","supply_key","marketplace","warehouse","sku","updated_since"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"supply_key","desc":"Точное совпадение. Ключ записи для сопоставления и объединения выгрузок."},{"name":"marketplace","desc":"Точное совпадение. Маркетплейс позиции в Core."},{"name":"warehouse","desc":"Точное совпадение. Название склада источника."},{"name":"sku","desc":"Точное совпадение. Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id."},{"name":"updated_since","desc":"ISO 8601 с часовым поясом. Фильтр по updated_at включительно; допускает повторные записи при синхронизации."}],"example":"https://api.expri.space/api/public/v1/supply-items?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/supply-items?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/supply-items?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/supply-items?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/supply-items?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: core. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"supply_items[].id","desc":"Числовой идентификатор записи в Core. Тип: int. NULL источника сохраняется как null."},{"name":"supply_items[].supply_key","desc":"Ключ записи для сопоставления и объединения выгрузок. Тип: text. NULL источника сохраняется как null."},{"name":"supply_items[].marketplace","desc":"Маркетплейс позиции в Core. Тип: text. NULL источника сохраняется как null."},{"name":"supply_items[].warehouse","desc":"Название склада источника. Тип: text. NULL источника сохраняется как null."},{"name":"supply_items[].sku","desc":"Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id. Тип: text. NULL источника сохраняется как null."},{"name":"supply_items[].qty","desc":"Заявленное количество в строке поставки Core. Тип: int."},{"name":"supply_items[].accepted_qty","desc":"Количество, отмеченное принятым в поставке Core. Тип: int. NULL источника сохраняется как null."},{"name":"supply_items[].transit_qty","desc":"Количество, отмеченное в пути в поставке Core. Тип: int. NULL источника сохраняется как null."},{"name":"supply_items[].created_at","desc":"Время создания записи в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"supply_items[].updated_at","desc":"Время последнего сохранённого обновления записи. Тип: text. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"core","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"supply_items":[{"id":1,"supply_key":"Пример","marketplace":"OZON","warehouse":"Пример","sku":"SKU-001","qty":10,"accepted_qty":1,"transit_qty":1,"created_at":"2026-11-08 19:08:31","updated_at":"2026-11-08 19:08:31"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:supplies"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/supply-items","replacement_url":"https://api.expri.space/api/public/v1/supply-items","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/ink-measurements","scope":"ink_history","title":"История измерений чернил","description":"История измерений чернил. Постраничная выгрузка для внешней интеграции.","note":"Отдельные сохранённые измерения, включая предыдущие значения. Актуальный расход по SKU доступен в ink. Локальные пути, подписи устройств и комментарии операторов не передаются. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по measured_at, id. Между страницами состояние может измениться.","params":["limit","cursor","sku","category","source","date_from","date_to"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"sku","desc":"Точное совпадение. Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id."},{"name":"category","desc":"Точное совпадение. Категория или тип продукции в источнике."},{"name":"source","desc":"Точное совпадение. Источник появления записи или измерения."},{"name":"date_from","desc":"Начало периода YYYY-MM-DD включительно по полю measured_at. Задаётся вместе с date_to. Без пары дат — вся сохранённая история."},{"name":"date_to","desc":"Конец периода YYYY-MM-DD включительно. Даты должны существовать; date_from ≤ date_to. month/segment здесь не используются."}],"example":"https://api.expri.space/api/public/v1/ink-measurements?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/ink-measurements?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/ink-measurements?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/ink-measurements?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/ink-measurements?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: core. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"ink_measurements[].id","desc":"Числовой идентификатор записи в Core. Тип: int. NULL источника сохраняется как null."},{"name":"ink_measurements[].event_id","desc":"Уникальный идентификатор измерения чернил. Тип: text. NULL источника сохраняется как null."},{"name":"ink_measurements[].sku","desc":"Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id. Тип: text. NULL источника сохраняется как null."},{"name":"ink_measurements[].category","desc":"Категория или тип продукции в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"ink_measurements[].source","desc":"Источник появления записи или измерения. Тип: text. NULL источника сохраняется как null."},{"name":"ink_measurements[].measured_at","desc":"Время измерения чернил. Тип: text. NULL источника сохраняется как null."},{"name":"ink_measurements[].ink_c_ml","desc":"Расход соответствующего канала CMYK, мл. Тип: float. NULL источника сохраняется как null."},{"name":"ink_measurements[].ink_m_ml","desc":"Расход соответствующего канала CMYK, мл. Тип: float. NULL источника сохраняется как null."},{"name":"ink_measurements[].ink_y_ml","desc":"Расход соответствующего канала CMYK, мл. Тип: float. NULL источника сохраняется как null."},{"name":"ink_measurements[].ink_k_ml","desc":"Расход соответствующего канала CMYK, мл. Тип: float. NULL источника сохраняется как null."},{"name":"ink_measurements[].ink_total_ml","desc":"Общий расход чернил, мл. Тип: float. NULL источника сохраняется как null."},{"name":"ink_measurements[].ink_ml_m2","desc":"Расход чернил на квадратный метр, мл/м². Тип: float. NULL источника сохраняется как null."},{"name":"ink_measurements[].width_cm","desc":"Размер измеренного макета в сантиметрах. Тип: float. NULL источника сохраняется как null."},{"name":"ink_measurements[].height_cm","desc":"Размер измеренного макета в сантиметрах. Тип: float. NULL источника сохраняется как null."},{"name":"ink_measurements[].area_m2","desc":"Площадь в квадратных метрах. Тип: float. NULL источника сохраняется как null."},{"name":"ink_measurements[].strip_count","desc":"Количество полос. Тип: int. NULL источника сохраняется как null."},{"name":"ink_measurements[].box_size","desc":"Сохранённое обозначение размера продукции. Тип: text. NULL источника сохраняется как null."},{"name":"ink_measurements[].media_name","desc":"Название материала печати. Тип: text. NULL источника сохраняется как null."},{"name":"ink_measurements[].passes","desc":"Количество проходов печати. Тип: int. NULL источника сохраняется как null."},{"name":"ink_measurements[].created_at","desc":"Время создания записи в источнике. Тип: text. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"core","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"ink_measurements":[{"id":1,"event_id":"Пример","sku":"SKU-001","category":"Пример","source":"Пример","measured_at":"2026-11-08 19:08:31","ink_c_ml":12.5,"ink_m_ml":12.5,"ink_y_ml":12.5,"ink_k_ml":12.5,"ink_total_ml":12.5,"ink_ml_m2":12.5,"width_cm":12.5,"height_cm":12.5,"area_m2":12.5,"strip_count":1,"box_size":"Пример","media_name":"Пример","passes":1,"created_at":"2026-11-08 19:08:31"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:ink_history"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/ink-measurements","replacement_url":"https://api.expri.space/api/public/v1/ink-measurements","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/wb/prices","scope":"wb_prices","title":"WB: цены продавца","description":"WB: цены продавца. Постраничная выгрузка для внешней интеграции.","note":"Сохранённые цены продавца и скидки по размерам. discounted_price и club_discounted_price не означают цену витрины после СПП; цена карточки и СПП доступны отдельно, если собраны. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по snapshot_at, row_key. Между страницами состояние может измениться.","params":["limit","cursor","nm_id","vendor_code","size_id","updated_since"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"nm_id","desc":"Точное совпадение. Числовой артикул товара WB."},{"name":"vendor_code","desc":"Точное совпадение. Артикул продавца в соответствующем источнике."},{"name":"size_id","desc":"Точное совпадение. Идентификатор размера WB."},{"name":"updated_since","desc":"ISO 8601 с часовым поясом. Фильтр по snapshot_at включительно; допускает повторные записи при синхронизации."}],"example":"https://api.expri.space/api/public/v1/marketplaces/wb/prices?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/wb/prices?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/wb/prices?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/wb/prices?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/wb/prices?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: wb. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"prices[].row_key","desc":"Ключ записи для сопоставления и объединения выгрузок. Тип: text. NULL источника сохраняется как null."},{"name":"prices[].snapshot_at","desc":"Время сохранения снимка источника; не время текущего запроса. Тип: text. NULL источника сохраняется как null."},{"name":"prices[].nm_id","desc":"Числовой артикул товара WB. Тип: int. NULL источника сохраняется как null."},{"name":"prices[].vendor_code","desc":"Артикул продавца в соответствующем источнике. Тип: text. NULL источника сохраняется как null."},{"name":"prices[].size_id","desc":"Идентификатор размера WB. Тип: int. NULL источника сохраняется как null."},{"name":"prices[].tech_size_name","desc":"Название размера WB. Тип: text. NULL источника сохраняется как null."},{"name":"prices[].price","desc":"Цена из соответствующего источника; смысл указан в описании метода. Тип: float. NULL источника сохраняется как null."},{"name":"prices[].discounted_price","desc":"Цена продавца WB после скидки продавца; без гарантии совпадения с витриной. Тип: float. NULL источника сохраняется как null."},{"name":"prices[].discount","desc":"Скидка продавца WB, проценты. Тип: float. NULL источника сохраняется как null."},{"name":"prices[].club_discount","desc":"Скидка WB Клуба, проценты. Тип: float. NULL источника сохраняется как null."},{"name":"prices[].club_discounted_price","desc":"Цена WB с клубной скидкой из сохранённого отчёта цен. Тип: float. NULL источника сохраняется как null."},{"name":"prices[].currency","desc":"Валюта денежного показателя в источнике. Тип: text. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"wb","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"prices":[{"row_key":"Пример","snapshot_at":"2026-11-08 19:08:31","nm_id":1,"vendor_code":"SKU-001","size_id":1,"tech_size_name":"Пример","price":12.5,"discounted_price":12.5,"discount":12.5,"club_discount":12.5,"club_discounted_price":12.5,"currency":"RUB"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:wb_prices"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/marketplaces/wb/prices","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/wb/prices","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/wb/stocks","scope":"wb_stocks","title":"WB: остатки по складам","description":"WB: остатки по складам. Постраничная выгрузка для внешней интеграции.","note":"Сохранённые остатки WB по складам и размерам. Это отдельный источник от внутренних складов Core. При отсутствии детализации по складам ответ может быть пустым; данные не подменяются суммарными остатками. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по snapshot_at, row_key. Между страницами состояние может измениться.","params":["limit","cursor","nm_id","warehouse_id","supplier_article","updated_since"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"nm_id","desc":"Точное совпадение. Числовой артикул товара WB."},{"name":"warehouse_id","desc":"Точное совпадение. Идентификатор склада; WB — число, Ozon — строка."},{"name":"supplier_article","desc":"Точное совпадение. Артикул продавца в соответствующем источнике."},{"name":"updated_since","desc":"ISO 8601 с часовым поясом. Фильтр по snapshot_at включительно; допускает повторные записи при синхронизации."}],"example":"https://api.expri.space/api/public/v1/marketplaces/wb/stocks?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/wb/stocks?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/wb/stocks?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/wb/stocks?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/wb/stocks?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: wb. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"stocks[].row_key","desc":"Ключ записи для сопоставления и объединения выгрузок. Тип: text. NULL источника сохраняется как null."},{"name":"stocks[].snapshot_at","desc":"Время сохранения снимка источника; не время текущего запроса. Тип: text. NULL источника сохраняется как null."},{"name":"stocks[].warehouse_id","desc":"Идентификатор склада; WB — число, Ozon — строка. Тип: int. NULL источника сохраняется как null."},{"name":"stocks[].warehouse_name","desc":"Название склада источника. Тип: text. NULL источника сохраняется как null."},{"name":"stocks[].region_name","desc":"Регион склада WB. Тип: text. NULL источника сохраняется как null."},{"name":"stocks[].chrt_id","desc":"Идентификатор размера WB. Тип: int. NULL источника сохраняется как null."},{"name":"stocks[].nm_id","desc":"Числовой артикул товара WB. Тип: int. NULL источника сохраняется как null."},{"name":"stocks[].barcode","desc":"Штрихкод позиции. Тип: text. NULL источника сохраняется как null."},{"name":"stocks[].supplier_article","desc":"Артикул продавца в соответствующем источнике. Тип: text. NULL источника сохраняется как null."},{"name":"stocks[].quantity","desc":"Количество в исходном отчёте. Тип: int. NULL источника сохраняется как null."},{"name":"stocks[].in_way_to_client","desc":"Количество WB в пути к покупателям. Тип: int. NULL источника сохраняется как null."},{"name":"stocks[].in_way_from_client","desc":"Количество WB в пути от покупателей. Тип: int. NULL источника сохраняется как null."},{"name":"stocks[].quantity_full","desc":"Полное количество из отчёта WB; передаётся без пересчёта. Тип: int. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"wb","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"stocks":[{"row_key":"Пример","snapshot_at":"2026-11-08 19:08:31","warehouse_id":1,"warehouse_name":"Пример","region_name":"Пример","chrt_id":1,"nm_id":1,"barcode":"Пример","supplier_article":"SKU-001","quantity":1,"in_way_to_client":1,"in_way_from_client":1,"quantity_full":1}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:wb_stocks"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/marketplaces/wb/stocks","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/wb/stocks","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/wb/orders","scope":"wb_orders","title":"WB: заказы","description":"WB: заказы. Постраничная выгрузка для внешней интеграции.","note":"Исходные заказы WB из сохранённой аналитики, включая отмены. Это не производственные op_orders. Поля сумм и spp передаются как сохранены в отчёте; свежий расчёт СПП по ним не выполняется. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по order_date, row_key. Между страницами состояние может измениться.","params":["limit","cursor","nm_id","supplier_article","is_cancel","date_from","date_to","updated_since"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"nm_id","desc":"Точное совпадение. Числовой артикул товара WB."},{"name":"supplier_article","desc":"Точное совпадение. Артикул продавца в соответствующем источнике."},{"name":"is_cancel","desc":"Точное совпадение. Признак отменённого заказа WB, boolean. Передавайте 0 или 1."},{"name":"date_from","desc":"Начало периода YYYY-MM-DD включительно по полю order_date. Задаётся вместе с date_to. Без пары дат — вся сохранённая история."},{"name":"date_to","desc":"Конец периода YYYY-MM-DD включительно. Даты должны существовать; date_from ≤ date_to. month/segment здесь не используются."},{"name":"updated_since","desc":"ISO 8601 с часовым поясом. Фильтр по snapshot_at включительно; допускает повторные записи при синхронизации."}],"example":"https://api.expri.space/api/public/v1/marketplaces/wb/orders?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/wb/orders?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/wb/orders?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/wb/orders?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/wb/orders?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: wb. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"orders[].row_key","desc":"Ключ записи для сопоставления и объединения выгрузок. Тип: text. NULL источника сохраняется как null."},{"name":"orders[].snapshot_at","desc":"Время сохранения снимка источника; не время текущего запроса. Тип: text. NULL источника сохраняется как null."},{"name":"orders[].order_date","desc":"Дата и время заказа WB. Тип: text. NULL источника сохраняется как null."},{"name":"orders[].last_change_date","desc":"Время изменения операции WB по данным отчёта. Тип: text. NULL источника сохраняется как null."},{"name":"orders[].srid","desc":"Идентификатор заказа WB для связи заказов и продаж. Тип: text. NULL источника сохраняется как null."},{"name":"orders[].warehouse_name","desc":"Название склада источника. Тип: text. NULL источника сохраняется как null."},{"name":"orders[].warehouse_type","desc":"Тип склада или вида запаса в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"orders[].supplier_article","desc":"Артикул продавца в соответствующем источнике. Тип: text. NULL источника сохраняется как null."},{"name":"orders[].nm_id","desc":"Числовой артикул товара WB. Тип: int. NULL источника сохраняется как null."},{"name":"orders[].barcode","desc":"Штрихкод позиции. Тип: text. NULL источника сохраняется как null."},{"name":"orders[].category","desc":"Категория или тип продукции в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"orders[].subject","desc":"Категория или тип продукции в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"orders[].brand","desc":"Бренд товара в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"orders[].tech_size","desc":"Название размера WB. Тип: text. NULL источника сохраняется как null."},{"name":"orders[].income_id","desc":"Идентификатор поставки WB. Тип: int. NULL источника сохраняется как null."},{"name":"orders[].is_supply","desc":"Флаг источника WB, boolean. Тип: bool. NULL источника сохраняется как null."},{"name":"orders[].is_realization","desc":"Флаг источника WB, boolean. Тип: bool. NULL источника сохраняется как null."},{"name":"orders[].total_price","desc":"Сохранённая сумма total_price соответствующего отчёта. Тип: float. NULL источника сохраняется как null."},{"name":"orders[].discount_percent","desc":"Скидка из отчёта WB, проценты. Тип: float. NULL источника сохраняется как null."},{"name":"orders[].spp","desc":"СПП из записи заказа WB, проценты; не новый расчёт по карточке. Тип: float. NULL источника сохраняется как null."},{"name":"orders[].finished_price","desc":"Сохранённая конечная цена из отчёта WB. Тип: float. NULL источника сохраняется как null."},{"name":"orders[].price_with_disc","desc":"Сохранённая цена со скидкой из отчёта WB. Тип: float. NULL источника сохраняется как null."},{"name":"orders[].is_cancel","desc":"Признак отменённого заказа WB, boolean. Тип: bool. NULL источника сохраняется как null."},{"name":"orders[].cancel_date","desc":"Время отмены заказа WB, если есть. Тип: text. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"wb","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"orders":[{"row_key":"Пример","snapshot_at":"2026-11-08 19:08:31","order_date":"2026-11-08 19:08:31","last_change_date":"2026-11-08 19:08:31","srid":"Пример","warehouse_name":"Пример","warehouse_type":"Пример","supplier_article":"SKU-001","nm_id":1,"barcode":"Пример","category":"Пример","subject":"Пример","brand":"Пример","tech_size":"Пример","income_id":1,"is_supply":true,"is_realization":true,"total_price":12.5,"discount_percent":12.5,"spp":12.5,"finished_price":12.5,"price_with_disc":12.5,"is_cancel":false,"cancel_date":""}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:wb_orders"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/marketplaces/wb/orders","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/wb/orders","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/wb/sales","scope":"wb_sales","title":"WB: продажи и возвраты","description":"WB: продажи и возвраты. Постраничная выгрузка для внешней интеграции.","note":"Сохранённые продажи и возвраты WB. is_return обозначает возврат; денежные поля возвращаются со знаком источника. for_pay — сумма к перечислению из отчёта, а не цена покупателя. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по sale_date, row_key. Между страницами состояние может измениться.","params":["limit","cursor","nm_id","supplier_article","is_return","date_from","date_to","updated_since"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"nm_id","desc":"Точное совпадение. Числовой артикул товара WB."},{"name":"supplier_article","desc":"Точное совпадение. Артикул продавца в соответствующем источнике."},{"name":"is_return","desc":"Точное совпадение. Признак возврата WB, boolean. Передавайте 0 или 1."},{"name":"date_from","desc":"Начало периода YYYY-MM-DD включительно по полю sale_date. Задаётся вместе с date_to. Без пары дат — вся сохранённая история."},{"name":"date_to","desc":"Конец периода YYYY-MM-DD включительно. Даты должны существовать; date_from ≤ date_to. month/segment здесь не используются."},{"name":"updated_since","desc":"ISO 8601 с часовым поясом. Фильтр по snapshot_at включительно; допускает повторные записи при синхронизации."}],"example":"https://api.expri.space/api/public/v1/marketplaces/wb/sales?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/wb/sales?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/wb/sales?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/wb/sales?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/wb/sales?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: wb. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"sales[].row_key","desc":"Ключ записи для сопоставления и объединения выгрузок. Тип: text. NULL источника сохраняется как null."},{"name":"sales[].snapshot_at","desc":"Время сохранения снимка источника; не время текущего запроса. Тип: text. NULL источника сохраняется как null."},{"name":"sales[].sale_date","desc":"Дата и время продажи или возврата WB. Тип: text. NULL источника сохраняется как null."},{"name":"sales[].last_change_date","desc":"Время изменения операции WB по данным отчёта. Тип: text. NULL источника сохраняется как null."},{"name":"sales[].sale_id","desc":"Идентификатор операции продажи WB. Тип: text. NULL источника сохраняется как null."},{"name":"sales[].srid","desc":"Идентификатор заказа WB для связи заказов и продаж. Тип: text. NULL источника сохраняется как null."},{"name":"sales[].g_number","desc":"Номер заказа WB по данным источника. Тип: text. NULL источника сохраняется как null."},{"name":"sales[].warehouse_name","desc":"Название склада источника. Тип: text. NULL источника сохраняется как null."},{"name":"sales[].supplier_article","desc":"Артикул продавца в соответствующем источнике. Тип: text. NULL источника сохраняется как null."},{"name":"sales[].nm_id","desc":"Числовой артикул товара WB. Тип: int. NULL источника сохраняется как null."},{"name":"sales[].barcode","desc":"Штрихкод позиции. Тип: text. NULL источника сохраняется как null."},{"name":"sales[].total_price","desc":"Сохранённая сумма total_price соответствующего отчёта. Тип: float. NULL источника сохраняется как null."},{"name":"sales[].finished_price","desc":"Сохранённая конечная цена из отчёта WB. Тип: float. NULL источника сохраняется как null."},{"name":"sales[].price_with_disc","desc":"Сохранённая цена со скидкой из отчёта WB. Тип: float. NULL источника сохраняется как null."},{"name":"sales[].for_pay","desc":"Сумма к перечислению из отчёта WB; не цена покупателя. Тип: float. NULL источника сохраняется как null."},{"name":"sales[].is_return","desc":"Признак возврата WB, boolean. Тип: bool. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"wb","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"sales":[{"row_key":"Пример","snapshot_at":"2026-11-08 19:08:31","sale_date":"2026-11-08 19:08:31","last_change_date":"2026-11-08 19:08:31","sale_id":"Пример","srid":"Пример","g_number":"Пример","warehouse_name":"Пример","supplier_article":"SKU-001","nm_id":1,"barcode":"Пример","total_price":12.5,"finished_price":12.5,"price_with_disc":12.5,"for_pay":12.5,"is_return":false}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:wb_sales"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/marketplaces/wb/sales","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/wb/sales","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/wb/spp","scope":"wb_spp","title":"WB: история СПП по товарам","description":"WB: история СПП по товарам. Постраничная выгрузка для внешней интеграции.","note":"Только сохранённые наблюдения СПП по конкретным товарам. null означает отсутствие значения. Если используется только групповая матрица, этот метод может быть пустым: групповые проценты не назначаются отдельным SKU. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по snapshot_date, nm_id. Между страницами состояние может измениться.","params":["limit","cursor","nm_id","vendor_code","product_group","date_from","date_to","updated_since"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"nm_id","desc":"Точное совпадение. Числовой артикул товара WB."},{"name":"vendor_code","desc":"Точное совпадение. Артикул продавца в соответствующем источнике."},{"name":"product_group","desc":"Точное совпадение. Группа продукции в сохранённой аналитике СПП WB."},{"name":"date_from","desc":"Начало периода YYYY-MM-DD включительно по полю snapshot_date. Задаётся вместе с date_to. Без пары дат — вся сохранённая история."},{"name":"date_to","desc":"Конец периода YYYY-MM-DD включительно. Даты должны существовать; date_from ≤ date_to. month/segment здесь не используются."},{"name":"updated_since","desc":"ISO 8601 с часовым поясом. Фильтр по updated_at включительно; допускает повторные записи при синхронизации."}],"example":"https://api.expri.space/api/public/v1/marketplaces/wb/spp?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/wb/spp?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/wb/spp?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/wb/spp?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/wb/spp?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: wb. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"spp[].snapshot_date","desc":"Дата сохранённого снимка источника. Тип: text. NULL источника сохраняется как null."},{"name":"spp[].nm_id","desc":"Числовой артикул товара WB. Тип: int. NULL источника сохраняется как null."},{"name":"spp[].vendor_code","desc":"Артикул продавца в соответствующем источнике. Тип: text. NULL источника сохраняется как null."},{"name":"spp[].product_name","desc":"Название товара в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"spp[].subject_name","desc":"Категория или тип продукции в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"spp[].brand_name","desc":"Бренд товара в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"spp[].product_group","desc":"Группа продукции в сохранённой аналитике СПП WB. Тип: text. NULL источника сохраняется как null."},{"name":"spp[].seller_price","desc":"Цена продавца WB до скидки в сохранённом наблюдении. Тип: float. NULL источника сохраняется как null."},{"name":"spp[].seller_discounted_price","desc":"Цена продавца WB после скидки в сохранённом наблюдении. Тип: float. NULL источника сохраняется как null."},{"name":"spp[].card_list_price","desc":"Цена карточки WB до скидки в сохранённом наблюдении. Тип: float. NULL источника сохраняется как null."},{"name":"spp[].card_price","desc":"Сохранённая цена покупателя с карточки WB; не текущая проверка. Тип: float. NULL источника сохраняется как null."},{"name":"spp[].explicit_spp","desc":"СПП, прочитанная из источника карточки WB, проценты; null при отсутствии. Тип: float. NULL источника сохраняется как null."},{"name":"spp[].computed_spp","desc":"Сохранённая расчётная СПП WB, проценты; null при отсутствии. Тип: float. NULL источника сохраняется как null."},{"name":"spp[].effective_spp","desc":"Сохранённое итоговое значение СПП WB, проценты; null при отсутствии. Тип: float. NULL источника сохраняется как null."},{"name":"spp[].diff_rub","desc":"Сохранённая разница цен продавца и покупателя, ₽. Тип: float. NULL источника сохраняется как null."},{"name":"spp[].updated_at","desc":"Время последнего сохранённого обновления записи. Тип: text. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"wb","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"spp":[{"snapshot_date":"2026-11-08","nm_id":1,"vendor_code":"SKU-001","product_name":"Пример","subject_name":"Пример","brand_name":"Пример","product_group":"Пример","seller_price":12.5,"seller_discounted_price":12.5,"card_list_price":12.5,"card_price":12.5,"explicit_spp":null,"computed_spp":null,"effective_spp":null,"diff_rub":12.5,"updated_at":"2026-11-08 19:08:31"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:wb_spp"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/marketplaces/wb/spp","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/wb/spp","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/wb/spp-groups","scope":"wb_spp","title":"WB: распределение СПП по группам","description":"WB: распределение СПП по группам. Постраничная выгрузка для внешней интеграции.","note":"Сохранённая матрица из подключённого источника Google Sheets: количество карточек nm_count с данным процентом СПП в группе на дату. Это агрегат, не цена и не СПП конкретного артикула. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по snapshot_date, product_group, spp_percent. Между страницами состояние может измениться.","params":["limit","cursor","product_group","date_from","date_to","updated_since"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"product_group","desc":"Точное совпадение. Группа продукции в сохранённой аналитике СПП WB."},{"name":"date_from","desc":"Начало периода YYYY-MM-DD включительно по полю snapshot_date. Задаётся вместе с date_to. Без пары дат — вся сохранённая история."},{"name":"date_to","desc":"Конец периода YYYY-MM-DD включительно. Даты должны существовать; date_from ≤ date_to. month/segment здесь не используются."},{"name":"updated_since","desc":"ISO 8601 с часовым поясом. Фильтр по updated_at включительно; допускает повторные записи при синхронизации."}],"example":"https://api.expri.space/api/public/v1/marketplaces/wb/spp-groups?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/wb/spp-groups?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/wb/spp-groups?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/wb/spp-groups?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/wb/spp-groups?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: wb. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"spp_groups[].snapshot_date","desc":"Дата сохранённого снимка источника. Тип: text. NULL источника сохраняется как null."},{"name":"spp_groups[].product_group","desc":"Группа продукции в сохранённой аналитике СПП WB. Тип: text. NULL источника сохраняется как null."},{"name":"spp_groups[].spp_percent","desc":"Процент СПП в групповом распределении WB. Тип: int. NULL источника сохраняется как null."},{"name":"spp_groups[].nm_count","desc":"Количество карточек WB в группе с данным процентом СПП. Тип: int. NULL источника сохраняется как null."},{"name":"spp_groups[].updated_at","desc":"Время последнего сохранённого обновления записи. Тип: text. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"wb","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"spp_groups":[{"snapshot_date":"2026-11-08","product_group":"Пример","spp_percent":1,"nm_count":1,"updated_at":"2026-11-08 19:08:31"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:wb_spp"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/marketplaces/wb/spp-groups","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/wb/spp-groups","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/wb/funnel","scope":"wb_analytics","title":"WB: воронка продаж","description":"WB: воронка продаж. Постраничная выгрузка для внешней интеграции.","note":"Показатели за period_days дней, заканчивающихся датой снимка. date_from/date_to фильтруют даты снимков. Пересекающиеся периоды нельзя суммировать как независимые дни. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по snapshot_date, period_days, nm_id. Между страницами состояние может измениться.","params":["limit","cursor","nm_id","vendor_code","period_days","date_from","date_to"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"nm_id","desc":"Точное совпадение. Числовой артикул товара WB."},{"name":"vendor_code","desc":"Точное совпадение. Артикул продавца в соответствующем источнике."},{"name":"period_days","desc":"Точное совпадение. Количество дней в периоде, к которому относятся показатели снимка."},{"name":"date_from","desc":"Начало периода YYYY-MM-DD включительно по полю snapshot_date. Задаётся вместе с date_to. Без пары дат — вся сохранённая история."},{"name":"date_to","desc":"Конец периода YYYY-MM-DD включительно. Даты должны существовать; date_from ≤ date_to. month/segment здесь не используются."}],"example":"https://api.expri.space/api/public/v1/marketplaces/wb/funnel?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/wb/funnel?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/wb/funnel?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/wb/funnel?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/wb/funnel?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: wb. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"funnel[].snapshot_date","desc":"Дата сохранённого снимка источника. Тип: text. NULL источника сохраняется как null."},{"name":"funnel[].period_days","desc":"Количество дней в периоде, к которому относятся показатели снимка. Тип: int. NULL источника сохраняется как null."},{"name":"funnel[].nm_id","desc":"Числовой артикул товара WB. Тип: int. NULL источника сохраняется как null."},{"name":"funnel[].title","desc":"Название товара в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"funnel[].vendor_code","desc":"Артикул продавца в соответствующем источнике. Тип: text. NULL источника сохраняется как null."},{"name":"funnel[].brand_name","desc":"Бренд товара в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"funnel[].subject_name","desc":"Категория или тип продукции в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"funnel[].open_count","desc":"Количество открытий карточки за период источника. Тип: int. NULL источника сохраняется как null."},{"name":"funnel[].cart_count","desc":"Количество добавлений в корзину за период источника. Тип: int. NULL источника сохраняется как null."},{"name":"funnel[].order_count","desc":"Количество заказов за период источника. Тип: int. NULL источника сохраняется как null."},{"name":"funnel[].order_sum","desc":"Сумма заказов за период источника. Тип: float. NULL источника сохраняется как null."},{"name":"funnel[].buyout_count","desc":"Количество выкупов за период источника. Тип: int. NULL источника сохраняется как null."},{"name":"funnel[].buyout_sum","desc":"Сумма выкупов за период источника. Тип: float. NULL источника сохраняется как null."},{"name":"funnel[].cancel_count","desc":"Количество отмен за период источника. Тип: int. NULL источника сохраняется как null."},{"name":"funnel[].cancel_sum","desc":"Сумма отмен за период источника. Тип: float. NULL источника сохраняется как null."},{"name":"funnel[].avg_price","desc":"Средняя цена за период источника. Тип: float. NULL источника сохраняется как null."},{"name":"funnel[].avg_orders_count_per_day","desc":"Среднее количество заказов в день за период источника. Тип: float. NULL источника сохраняется как null."},{"name":"funnel[].share_order_percent","desc":"Доля заказов, проценты. Тип: float. NULL источника сохраняется как null."},{"name":"funnel[].add_to_wishlist","desc":"Количество добавлений в избранное. Тип: int. NULL источника сохраняется как null."},{"name":"funnel[].localization_percent","desc":"Процент локализации из отчёта WB. Тип: float. NULL источника сохраняется как null."},{"name":"funnel[].add_to_cart_percent","desc":"Конверсия в корзину из отчёта WB, проценты. Тип: float. NULL источника сохраняется как null."},{"name":"funnel[].cart_to_order_percent","desc":"Конверсия из корзины в заказ, проценты. Тип: float. NULL источника сохраняется как null."},{"name":"funnel[].buyout_percent","desc":"Доля выкупов, проценты. Тип: float. NULL источника сохраняется как null."},{"name":"funnel[].currency","desc":"Валюта денежного показателя в источнике. Тип: text. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"wb","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"funnel":[{"snapshot_date":"2026-11-08","period_days":1,"nm_id":1,"title":"Пример","vendor_code":"SKU-001","brand_name":"Пример","subject_name":"Пример","open_count":1,"cart_count":1,"order_count":1,"order_sum":12.5,"buyout_count":1,"buyout_sum":12.5,"cancel_count":1,"cancel_sum":12.5,"avg_price":12.5,"avg_orders_count_per_day":12.5,"share_order_percent":12.5,"add_to_wishlist":1,"localization_percent":12.5,"add_to_cart_percent":12.5,"cart_to_order_percent":12.5,"buyout_percent":12.5,"currency":"RUB"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:wb_analytics"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/marketplaces/wb/funnel","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/wb/funnel","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/wb/ads","scope":"wb_ads","title":"WB: рекламная аналитика","description":"WB: рекламная аналитика. Постраничная выгрузка для внешней интеграции.","note":"Сохранённые снимки рекламной аналитики. date_from/date_to отбирают даты снимков; показатели могут относиться к окну сбора, а не одному дню. Суммируйте только непересекающиеся периоды источника. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по snapshot_date, advert_id. Между страницами состояние может измениться.","params":["limit","cursor","advert_id","advert_status","date_from","date_to"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"advert_id","desc":"Точное совпадение. Идентификатор рекламной кампании WB."},{"name":"advert_status","desc":"Точное совпадение. Тип или статус рекламной кампании WB, код источника."},{"name":"date_from","desc":"Начало периода YYYY-MM-DD включительно по полю snapshot_date. Задаётся вместе с date_to. Без пары дат — вся сохранённая история."},{"name":"date_to","desc":"Конец периода YYYY-MM-DD включительно. Даты должны существовать; date_from ≤ date_to. month/segment здесь не используются."}],"example":"https://api.expri.space/api/public/v1/marketplaces/wb/ads?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/wb/ads?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/wb/ads?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/wb/ads?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/wb/ads?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: wb. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"ads[].snapshot_date","desc":"Дата сохранённого снимка источника. Тип: text. NULL источника сохраняется как null."},{"name":"ads[].advert_id","desc":"Идентификатор рекламной кампании WB. Тип: int. NULL источника сохраняется как null."},{"name":"ads[].advert_type","desc":"Тип или статус рекламной кампании WB, код источника. Тип: int. NULL источника сохраняется как null."},{"name":"ads[].advert_status","desc":"Тип или статус рекламной кампании WB, код источника. Тип: int. NULL источника сохраняется как null."},{"name":"ads[].campaign_name","desc":"Название рекламной кампании. Тип: text. NULL источника сохраняется как null."},{"name":"ads[].views","desc":"Количество показов или кликов за период источника. Тип: int. NULL источника сохраняется как null."},{"name":"ads[].clicks","desc":"Количество показов или кликов за период источника. Тип: int. NULL источника сохраняется как null."},{"name":"ads[].ctr","desc":"Кликабельность CTR, проценты. Тип: float. NULL источника сохраняется как null."},{"name":"ads[].cpc","desc":"Стоимость клика из отчёта рекламы. Тип: float. NULL источника сохраняется как null."},{"name":"ads[].cpm","desc":"Стоимость тысячи показов из отчёта рекламы. Тип: float. NULL источника сохраняется как null."},{"name":"ads[].orders_count","desc":"Количество заказов за период источника. Тип: int. NULL источника сохраняется как null."},{"name":"ads[].atbs","desc":"Добавления в корзину из отчёта рекламы. Тип: int. NULL источника сохраняется как null."},{"name":"ads[].canceled","desc":"Количество отмен за период источника. Тип: int. NULL источника сохраняется как null."},{"name":"ads[].sum_spent","desc":"Расход на рекламу за период источника. Тип: float. NULL источника сохраняется как null."},{"name":"ads[].sum_price","desc":"Сумма заказов из отчёта рекламы за период источника. Тип: float. NULL источника сохраняется как null."},{"name":"ads[].compare_to_date","desc":"Дата снимка, с которым рассчитаны изменения. Тип: text. NULL источника сохраняется как null."},{"name":"ads[].spend_delta","desc":"Сохранённое изменение соответствующего показателя относительно compare_to_date. Тип: float. NULL источника сохраняется как null."},{"name":"ads[].revenue_delta","desc":"Сохранённое изменение соответствующего показателя относительно compare_to_date. Тип: float. NULL источника сохраняется как null."},{"name":"ads[].clicks_delta","desc":"Сохранённое изменение соответствующего показателя относительно compare_to_date. Тип: int. NULL источника сохраняется как null."},{"name":"ads[].views_delta","desc":"Сохранённое изменение соответствующего показателя относительно compare_to_date. Тип: int. NULL источника сохраняется как null."},{"name":"ads[].orders_delta","desc":"Сохранённое изменение соответствующего показателя относительно compare_to_date. Тип: int. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"wb","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"ads":[{"snapshot_date":"2026-11-08","advert_id":1,"advert_type":1,"advert_status":1,"campaign_name":"Пример","views":1,"clicks":1,"ctr":12.5,"cpc":12.5,"cpm":12.5,"orders_count":1,"atbs":1,"canceled":1,"sum_spent":12.5,"sum_price":12.5,"compare_to_date":"2026-11-08","spend_delta":12.5,"revenue_delta":12.5,"clicks_delta":1,"views_delta":1,"orders_delta":1}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:wb_ads"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/marketplaces/wb/ads","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/wb/ads","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/ozon/products","scope":"ozon_products","title":"Ozon: каталог и цены продавца","description":"Ozon: каталог и цены продавца. Постраничная выгрузка для внешней интеграции.","note":"Каталог, сохранённый аналитикой Ozon из Seller API. marketing_seller_price — сохранённая цена продавца с акциями. marketing_price не подтверждает цену с Ozon Картой. Цены покупателя и СПП расширения доступны в отдельном сервисе /api/public/v1/ozon/prices с ключом магазина; этот метод их не заменяет. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по snapshot_at, product_id. Между страницами состояние может измениться.","params":["limit","cursor","product_id","offer_id","sku","status","updated_since"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"product_id","desc":"Точное совпадение. Идентификатор товара Ozon, строка."},{"name":"offer_id","desc":"Точное совпадение. Артикул продавца в соответствующем источнике."},{"name":"sku","desc":"Точное совпадение. Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id."},{"name":"status","desc":"Точное совпадение. Статус или подстатус в сохранённом источнике."},{"name":"updated_since","desc":"ISO 8601 с часовым поясом. Фильтр по snapshot_at включительно; допускает повторные записи при синхронизации."}],"example":"https://api.expri.space/api/public/v1/marketplaces/ozon/products?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/ozon/products?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/ozon/products?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/ozon/products?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/ozon/products?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: ozon. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"products[].product_id","desc":"Идентификатор товара Ozon, строка. Тип: text. NULL источника сохраняется как null."},{"name":"products[].snapshot_at","desc":"Время сохранения снимка источника; не время текущего запроса. Тип: text. NULL источника сохраняется как null."},{"name":"products[].offer_id","desc":"Артикул продавца в соответствующем источнике. Тип: text. NULL источника сохраняется как null."},{"name":"products[].sku","desc":"Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id. Тип: text. NULL источника сохраняется как null."},{"name":"products[].name","desc":"Название товара в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"products[].status","desc":"Статус или подстатус в сохранённом источнике. Тип: text. NULL источника сохраняется как null."},{"name":"products[].visibility","desc":"Сохранённая видимость товара Ozon. Тип: text. NULL источника сохраняется как null."},{"name":"products[].price","desc":"Цена из соответствующего источника; смысл указан в описании метода. Тип: float. NULL источника сохраняется как null."},{"name":"products[].old_price","desc":"Сохранённая старая цена Ozon. Тип: float. NULL источника сохраняется как null."},{"name":"products[].marketing_price","desc":"Поле маркетинговой цены Ozon; не подтверждённая цена с Ozon Картой. Тип: float. NULL источника сохраняется как null."},{"name":"products[].marketing_seller_price","desc":"Цена продавца Ozon с акциями из сохранённого Seller API. Тип: float. NULL источника сохраняется как null."},{"name":"products[].min_price","desc":"Сохранённая минимальная цена из каталога Ozon. Тип: float. NULL источника сохраняется как null."},{"name":"products[].currency","desc":"Валюта денежного показателя в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"products[].barcode","desc":"Штрихкод позиции. Тип: text. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"ozon","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"products":[{"product_id":"100001","snapshot_at":"2026-11-08 19:08:31","offer_id":"SKU-001","sku":"1549432508","name":"Пример","status":"Пример статуса","visibility":"Пример","price":12.5,"old_price":12.5,"marketing_price":12.5,"marketing_seller_price":12.5,"min_price":12.5,"currency":"RUB","barcode":"Пример"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:ozon_products"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/marketplaces/ozon/products","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/ozon/products","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/ozon/stocks","scope":"ozon_stocks","title":"Ozon: остатки по складам","description":"Ozon: остатки по складам. Постраничная выгрузка для внешней интеграции.","note":"Сохранённые остатки Ozon. present, promised и reserved возвращаются отдельными показателями источника; метод не вычисляет их сумму как доступный остаток. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по snapshot_at, row_key. Между страницами состояние может измениться.","params":["limit","cursor","product_id","offer_id","sku","warehouse_id","warehouse_type","stock_type","updated_since"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"product_id","desc":"Точное совпадение. Идентификатор товара Ozon, строка."},{"name":"offer_id","desc":"Точное совпадение. Артикул продавца в соответствующем источнике."},{"name":"sku","desc":"Точное совпадение. Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id."},{"name":"warehouse_id","desc":"Точное совпадение. Идентификатор склада; WB — число, Ozon — строка."},{"name":"warehouse_type","desc":"Точное совпадение. Тип склада или вида запаса в источнике."},{"name":"stock_type","desc":"Точное совпадение. Тип склада или вида запаса в источнике."},{"name":"updated_since","desc":"ISO 8601 с часовым поясом. Фильтр по snapshot_at включительно; допускает повторные записи при синхронизации."}],"example":"https://api.expri.space/api/public/v1/marketplaces/ozon/stocks?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/ozon/stocks?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/ozon/stocks?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/ozon/stocks?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/ozon/stocks?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: ozon. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"stocks[].row_key","desc":"Ключ записи для сопоставления и объединения выгрузок. Тип: text. NULL источника сохраняется как null."},{"name":"stocks[].snapshot_at","desc":"Время сохранения снимка источника; не время текущего запроса. Тип: text. NULL источника сохраняется как null."},{"name":"stocks[].product_id","desc":"Идентификатор товара Ozon, строка. Тип: text. NULL источника сохраняется как null."},{"name":"stocks[].offer_id","desc":"Артикул продавца в соответствующем источнике. Тип: text. NULL источника сохраняется как null."},{"name":"stocks[].sku","desc":"Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id. Тип: text. NULL источника сохраняется как null."},{"name":"stocks[].warehouse_id","desc":"Идентификатор склада; WB — число, Ozon — строка. Тип: text. NULL источника сохраняется как null."},{"name":"stocks[].warehouse_name","desc":"Название склада источника. Тип: text. NULL источника сохраняется как null."},{"name":"stocks[].warehouse_type","desc":"Тип склада или вида запаса в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"stocks[].stock_type","desc":"Тип склада или вида запаса в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"stocks[].present","desc":"Сохранённый показатель остатка Ozon; значения не суммируются методом. Тип: int. NULL источника сохраняется как null."},{"name":"stocks[].promised","desc":"Сохранённый показатель остатка Ozon; значения не суммируются методом. Тип: int. NULL источника сохраняется как null."},{"name":"stocks[].reserved","desc":"Сохранённый показатель остатка Ozon; значения не суммируются методом. Тип: int. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"ozon","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"stocks":[{"row_key":"Пример","snapshot_at":"2026-11-08 19:08:31","product_id":"100001","offer_id":"SKU-001","sku":"1549432508","warehouse_id":"Пример","warehouse_name":"Пример","warehouse_type":"Пример","stock_type":"Пример","present":1,"promised":1,"reserved":1}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:ozon_stocks"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/marketplaces/ozon/stocks","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/ozon/stocks","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/ozon/analytics","scope":"ozon_analytics","title":"Ozon: аналитика по дням","description":"Ozon: аналитика по дням. Постраничная выгрузка для внешней интеграции.","note":"Сохранённые дневные показатели Ozon по SKU. date_from/date_to задают дни отчёта включительно; повторно импортированные дни заменяют прежние данные. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по day, sku. Между страницами состояние может измениться.","params":["limit","cursor","sku","offer_id","product_id","date_from","date_to","updated_since"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"sku","desc":"Точное совпадение. Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id."},{"name":"offer_id","desc":"Точное совпадение. Артикул продавца в соответствующем источнике."},{"name":"product_id","desc":"Точное совпадение. Идентификатор товара Ozon, строка."},{"name":"date_from","desc":"Начало периода YYYY-MM-DD включительно по полю day. Задаётся вместе с date_to. Без пары дат — вся сохранённая история."},{"name":"date_to","desc":"Конец периода YYYY-MM-DD включительно. Даты должны существовать; date_from ≤ date_to. month/segment здесь не используются."},{"name":"updated_since","desc":"ISO 8601 с часовым поясом. Фильтр по updated_at включительно; допускает повторные записи при синхронизации."}],"example":"https://api.expri.space/api/public/v1/marketplaces/ozon/analytics?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/ozon/analytics?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/ozon/analytics?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/ozon/analytics?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/ozon/analytics?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: ozon. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"analytics[].day","desc":"День отчёта Ozon, YYYY-MM-DD. Тип: text. NULL источника сохраняется как null."},{"name":"analytics[].sku","desc":"Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id. Тип: text. NULL источника сохраняется как null."},{"name":"analytics[].offer_id","desc":"Артикул продавца в соответствующем источнике. Тип: text. NULL источника сохраняется как null."},{"name":"analytics[].product_id","desc":"Идентификатор товара Ozon, строка. Тип: text. NULL источника сохраняется как null."},{"name":"analytics[].product_name","desc":"Название товара в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"analytics[].ordered_units","desc":"Количество заказанных единиц за день по данным Ozon. Тип: float. NULL источника сохраняется как null."},{"name":"analytics[].revenue","desc":"Выручка за день по данным аналитики Ozon. Тип: float. NULL источника сохраняется как null."},{"name":"analytics[].delivered_units","desc":"Количество доставленных единиц за день по данным Ozon. Тип: float. NULL источника сохраняется как null."},{"name":"analytics[].returns","desc":"Количество возвратов или отмен за день по данным Ozon. Тип: float. NULL источника сохраняется как null."},{"name":"analytics[].cancellations","desc":"Количество возвратов или отмен за день по данным Ozon. Тип: float. NULL источника сохраняется как null."},{"name":"analytics[].hits_view","desc":"Сохранённый показатель просмотра или корзины аналитики Ozon. Тип: float. NULL источника сохраняется как null."},{"name":"analytics[].hits_tocart","desc":"Сохранённый показатель просмотра или корзины аналитики Ozon. Тип: float. NULL источника сохраняется как null."},{"name":"analytics[].session_view","desc":"Сохранённый показатель просмотра или корзины аналитики Ozon. Тип: float. NULL источника сохраняется как null."},{"name":"analytics[].conv_tocart_percent","desc":"Конверсия в корзину по данным Ozon, проценты. Тип: float. NULL источника сохраняется как null."},{"name":"analytics[].updated_at","desc":"Время последнего сохранённого обновления записи. Тип: text. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"ozon","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"analytics":[{"day":"2026-11-08","sku":"1549432508","offer_id":"SKU-001","product_id":"100001","product_name":"Пример","ordered_units":12.5,"revenue":12.5,"delivered_units":12.5,"returns":12.5,"cancellations":12.5,"hits_view":12.5,"hits_tocart":12.5,"session_view":12.5,"conv_tocart_percent":12.5,"updated_at":"2026-11-08 19:08:31"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:ozon_analytics"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/marketplaces/ozon/analytics","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/ozon/analytics","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/ozon/postings","scope":"ozon_postings","title":"Ozon: отправления","description":"Ozon: отправления. Постраничная выгрузка для внешней интеграции.","note":"Сохранённые отправления Ozon. scheme передаётся в форме источника (FBO/FBS). finance_ready — битовая маска наличия финансовых показателей: 1 — payout, 2 — commission, 4 — delivery_charge; 7 — все три. Если соответствующий бит отсутствует, значение может быть неполным. Маска означает наличие данных источника, а не окончательную сверку выплаты. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по created_at, posting_number. Между страницами состояние может измениться.","params":["limit","cursor","posting_number","scheme","status","date_from","date_to","updated_since"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"posting_number","desc":"Точное совпадение. Номер отправления Ozon; связывает отправление, состав и операции."},{"name":"scheme","desc":"Точное совпадение. Схема отправления в формате источника, например FBO или FBS."},{"name":"status","desc":"Точное совпадение. Статус или подстатус в сохранённом источнике."},{"name":"date_from","desc":"Начало периода YYYY-MM-DD включительно по полю created_at. Задаётся вместе с date_to. Без пары дат — вся сохранённая история."},{"name":"date_to","desc":"Конец периода YYYY-MM-DD включительно. Даты должны существовать; date_from ≤ date_to. month/segment здесь не используются."},{"name":"updated_since","desc":"ISO 8601 с часовым поясом. Фильтр по snapshot_at включительно; допускает повторные записи при синхронизации."}],"example":"https://api.expri.space/api/public/v1/marketplaces/ozon/postings?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/ozon/postings?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/ozon/postings?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/ozon/postings?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/ozon/postings?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: ozon. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"postings[].posting_number","desc":"Номер отправления Ozon; связывает отправление, состав и операции. Тип: text. NULL источника сохраняется как null."},{"name":"postings[].scheme","desc":"Схема отправления в формате источника, например FBO или FBS. Тип: text. NULL источника сохраняется как null."},{"name":"postings[].snapshot_at","desc":"Время сохранения снимка источника; не время текущего запроса. Тип: text. NULL источника сохраняется как null."},{"name":"postings[].order_id","desc":"Идентификатор заказа Ozon, строка. Тип: text. NULL источника сохраняется как null."},{"name":"postings[].status","desc":"Статус или подстатус в сохранённом источнике. Тип: text. NULL источника сохраняется как null."},{"name":"postings[].substatus","desc":"Статус или подстатус в сохранённом источнике. Тип: text. NULL источника сохраняется как null."},{"name":"postings[].created_at","desc":"Время создания записи в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"postings[].in_process_at","desc":"Время начала обработки отправления Ozon. Тип: text. NULL источника сохраняется как null."},{"name":"postings[].shipment_date","desc":"Сохранённое время отгрузки Ozon. Тип: text. NULL источника сохраняется как null."},{"name":"postings[].delivering_date","desc":"Сохранённое время передачи в доставку Ozon. Тип: text. NULL источника сохраняется как null."},{"name":"postings[].delivered_at","desc":"Сохранённое время доставки Ozon. Тип: text. NULL источника сохраняется как null."},{"name":"postings[].cancellation_at","desc":"Сохранённое время отмены Ozon. Тип: text. NULL источника сохраняется как null."},{"name":"postings[].warehouse_name","desc":"Название склада источника. Тип: text. NULL источника сохраняется как null."},{"name":"postings[].products_count","desc":"Количество товарных строк в отправлении. Тип: int. NULL источника сохраняется как null."},{"name":"postings[].units_count","desc":"Количество единиц товара в отправлении. Тип: int. NULL источника сохраняется как null."},{"name":"postings[].total_price","desc":"Сохранённая сумма total_price соответствующего отчёта. Тип: float. NULL источника сохраняется как null."},{"name":"postings[].payout","desc":"Сохранённая сумма выплаты; наличие показателя отмечено битом 1 в finance_ready. Тип: float. NULL источника сохраняется как null."},{"name":"postings[].commission","desc":"Сохранённая комиссия по отправлению. Тип: float. NULL источника сохраняется как null."},{"name":"postings[].delivery_charge","desc":"Сохранённая сумма доставки из соответствующего отчёта Ozon. Тип: float. NULL источника сохраняется как null."},{"name":"postings[].finance_ready","desc":"Битовая маска integer: 1 — payout, 2 — commission, 4 — delivery_charge. Комбинация 7 означает наличие всех трёх показателей. Это наличие сохранённых данных, а не окончательная сверка выплаты."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"ozon","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"postings":[{"posting_number":"Пример","scheme":"FBO","snapshot_at":"2026-11-08 19:08:31","order_id":"100001","status":"Пример статуса","substatus":"Пример","created_at":"2026-11-08 19:08:31","in_process_at":"","shipment_date":"","delivering_date":"","delivered_at":"","cancellation_at":"","warehouse_name":"Пример","products_count":1,"units_count":1,"total_price":12.5,"payout":12.5,"commission":12.5,"delivery_charge":12.5,"finance_ready":7}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:ozon_postings"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/marketplaces/ozon/postings","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/ozon/postings","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/ozon/posting-items","scope":"ozon_postings","title":"Ozon: состав отправлений","description":"Ozon: состав отправлений. Постраничная выгрузка для внешней интеграции.","note":"Строки сохранённых отправлений. posting_number связывает строки с postings. price — цена позиции в отправлении; это не подтверждённая актуальная цена витрины с Ozon Картой. Для обновлений выгружайте состав заново: в источнике нет времени обновления строки. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по posting_number, row_key. Между страницами состояние может измениться.","params":["limit","cursor","posting_number","scheme","offer_id","sku"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"posting_number","desc":"Точное совпадение. Номер отправления Ozon; связывает отправление, состав и операции."},{"name":"scheme","desc":"Точное совпадение. Схема отправления в формате источника, например FBO или FBS."},{"name":"offer_id","desc":"Точное совпадение. Артикул продавца в соответствующем источнике."},{"name":"sku","desc":"Точное совпадение. Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id."}],"example":"https://api.expri.space/api/public/v1/marketplaces/ozon/posting-items?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/ozon/posting-items?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/ozon/posting-items?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/ozon/posting-items?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/ozon/posting-items?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: ozon. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"posting_items[].row_key","desc":"Ключ записи для сопоставления и объединения выгрузок. Тип: text. NULL источника сохраняется как null."},{"name":"posting_items[].posting_number","desc":"Номер отправления Ozon; связывает отправление, состав и операции. Тип: text. NULL источника сохраняется как null."},{"name":"posting_items[].scheme","desc":"Схема отправления в формате источника, например FBO или FBS. Тип: text. NULL источника сохраняется как null."},{"name":"posting_items[].offer_id","desc":"Артикул продавца в соответствующем источнике. Тип: text. NULL источника сохраняется как null."},{"name":"posting_items[].sku","desc":"Артикул в Core; в методах Ozon — SKU Ozon. Не смешивайте с offer_id. Тип: text. NULL источника сохраняется как null."},{"name":"posting_items[].product_id","desc":"Идентификатор товара Ozon, строка. Тип: text. NULL источника сохраняется как null."},{"name":"posting_items[].product_name","desc":"Название товара в источнике. Тип: text. NULL источника сохраняется как null."},{"name":"posting_items[].quantity","desc":"Количество в исходном отчёте. Тип: int. NULL источника сохраняется как null."},{"name":"posting_items[].price","desc":"Цена из соответствующего источника; смысл указан в описании метода. Тип: float. NULL источника сохраняется как null."},{"name":"posting_items[].currency","desc":"Валюта денежного показателя в источнике. Тип: text. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"ozon","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"posting_items":[{"row_key":"Пример","posting_number":"Пример","scheme":"FBO","offer_id":"SKU-001","sku":"1549432508","product_id":"100001","product_name":"Пример","quantity":1,"price":12.5,"currency":"RUB"}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:ozon_postings"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/marketplaces/ozon/posting-items","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/ozon/posting-items","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/ozon/finance","scope":"ozon_finance","title":"Ozon: финансовые операции","description":"Ozon: финансовые операции. Постраничная выгрузка для внешней интеграции.","note":"Сохранённые финансовые операции Ozon. Суммы сохраняют знак источника. Для доступа требуется отдельное финансовое разрешение ozon_finance. Коррекции ранее загруженных операций требуют повторной выгрузки периода. Возвращаются только сохранённые данные организации токена. generated_at — время ответа. По умолчанию выдаются все сохранённые записи постранично, начиная с последних по operation_date, operation_id. Между страницами состояние может измениться.","params":["limit","cursor","posting_number","scheme","operation_type","transaction_type","date_from","date_to"],"parameters":[{"name":"limit","desc":"Размер страницы: 1–250; по умолчанию 100."},{"name":"cursor","desc":"next_cursor предыдущего ответа. Сохраняйте фильтры; курсор привязан к методу и организации."},{"name":"posting_number","desc":"Точное совпадение. Номер отправления Ozon; связывает отправление, состав и операции."},{"name":"scheme","desc":"Точное совпадение. Схема отправления в формате источника, например FBO или FBS."},{"name":"operation_type","desc":"Точное совпадение. Тип или название финансовой операции в формате Ozon."},{"name":"transaction_type","desc":"Точное совпадение. Тип или название финансовой операции в формате Ozon."},{"name":"date_from","desc":"Начало периода YYYY-MM-DD включительно по полю operation_date. Задаётся вместе с date_to. Без пары дат — вся сохранённая история."},{"name":"date_to","desc":"Конец периода YYYY-MM-DD включительно. Даты должны существовать; date_from ≤ date_to. month/segment здесь не используются."}],"example":"https://api.expri.space/api/public/v1/marketplaces/ozon/finance?limit=100","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/ozon/finance?limit=100'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/ozon/finance?limit=100\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/ozon/finance?limit=100\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/ozon/finance?limit=100');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"available","desc":"false: модуль ещё не создал таблицу данных; коллекция пустая. true: таблица существует; пустой результат возможен при отсутствии подходящих записей."},{"name":"data_source","desc":"Источник сохранённых данных: ozon. Запрос не запускает синхронизацию источника."},{"name":"count / limit / has_more / next_cursor","desc":"Количество записей страницы, её лимит, наличие продолжения и курсор. Последняя страница: next_cursor=null."},{"name":"finance[].operation_id","desc":"Идентификатор финансовой операции Ozon, строка. Тип: text. NULL источника сохраняется как null."},{"name":"finance[].operation_date","desc":"Дата и время финансовой операции Ozon. Тип: text. NULL источника сохраняется как null."},{"name":"finance[].operation_type","desc":"Тип или название финансовой операции в формате Ozon. Тип: text. NULL источника сохраняется как null."},{"name":"finance[].operation_name","desc":"Тип или название финансовой операции в формате Ozon. Тип: text. NULL источника сохраняется как null."},{"name":"finance[].transaction_type","desc":"Тип или название финансовой операции в формате Ozon. Тип: text. NULL источника сохраняется как null."},{"name":"finance[].posting_number","desc":"Номер отправления Ozon; связывает отправление, состав и операции. Тип: text. NULL источника сохраняется как null."},{"name":"finance[].scheme","desc":"Схема отправления в формате источника, например FBO или FBS. Тип: text. NULL источника сохраняется как null."},{"name":"finance[].amount","desc":"Сумма финансовой операции со знаком источника. Тип: float. NULL источника сохраняется как null."},{"name":"finance[].accruals_for_sale","desc":"Начисления за продажу из операции Ozon. Тип: float. NULL источника сохраняется как null."},{"name":"finance[].sale_commission","desc":"Комиссия за продажу из операции Ozon, со знаком источника. Тип: float. NULL источника сохраняется как null."},{"name":"finance[].delivery_charge","desc":"Сохранённая сумма доставки из соответствующего отчёта Ozon. Тип: float. NULL источника сохраняется как null."},{"name":"finance[].return_delivery_charge","desc":"Сумма обратной доставки из операции Ozon. Тип: float. NULL источника сохраняется как null."},{"name":"finance[].services_total","desc":"Общая сумма услуг из сохранённой операции Ozon. Тип: float. NULL источника сохраняется как null."}],"responses":{"200":{"title":"Успешно · пример структуры","body":{"ok":true,"api_version":"v1","generated_at":"2026-11-08 19:08:31","tenant":{"id":"tn_example","name":"Пример организации"},"data_source":"ozon","available":true,"count":1,"limit":100,"has_more":false,"next_cursor":null,"finance":[{"operation_id":"100001","operation_date":"2026-11-08 19:08:31","operation_type":"Пример","operation_name":"Пример","transaction_type":"Пример","posting_number":"Пример","scheme":"FBO","amount":12.5,"accruals_for_sale":12.5,"sale_commission":12.5,"delivery_charge":12.5,"return_delivery_charge":12.5,"services_total":12.5}]}},"401":{"title":"Доступ отклонён","body":{"ok":false,"error":"public_api_scope_denied:ozon_finance"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_cursor"}},"500":{"title":"Ошибка чтения данных","body":{"ok":false,"error":"storage_failed"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"retired","deprecated":true,"url":"https://expri-server.ru/api/public/v1/marketplaces/ozon/finance","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/ozon/finance","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":"2026-10-13T23:59:59+03:00","timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"POST","path":"/api/public/v1/employees","scope":"employees_write","title":"Создать сотрудника","description":"Создаёт сотрудника в Core. Сервер назначает уникальный идентификатор и время создания.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение employees_write. Изменения отражаются в интерфейсе Core.","params":["Idempotency-Key"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"type":"string","desc":"Уникальная строка 8–128 символов. Повтор той же операции в течение 24 часов возвращает сохранённый ответ; другое тело с этим ключом — HTTP 409."}],"example":"https://api.expri.space/api/public/v1/employees","examples":{"curl":"curl -X POST -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Idempotency-Key: example-employees_create-001' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/employees'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/employees\", {\n  method: \"POST\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Idempotency-Key\": \"example-employees_create-001\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"name\": \"Иван\",\n    \"role\": \"Упаковщик\",\n    \"default_shift\": \"08:00-20:00\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"POST\",\n    \"https://api.expri.space/api/public/v1/employees\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Idempotency-Key\":\"example-employees_create-001\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/employees');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Idempotency-Key: example-employees_create-001', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"name":"Иван","role":"Упаковщик","default_shift":"08:00-20:00"},"request_fields":[{"name":"name","type":"string","required":true,"desc":"Поле name."},{"name":"role","type":"string","required":false,"desc":"Поле role."},{"name":"rfid_uid","type":"string","required":false,"desc":"Поле rfid_uid."},{"name":"default_shift","type":"string","required":false,"desc":"Поле default_shift."},{"name":"sort_order","type":"integer","required":false,"desc":"Поле sort_order."}],"request_required":["name"],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"201":{"title":"Запись создана","body":{"ok":true,"item":{"emp_id":"example","name":"Иван","role":"Упаковщик","default_shift":"08:00-20:00","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:employees_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/employees","replacement_url":"https://api.expri.space/api/public/v1/employees","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/employees/item","scope":"employees","title":"Получить сотрудника","description":"Возвращает одну запись по идентификатору, включая ревизию для условного изменения.","note":"Организация определяется токеном. PIN, служебные поля и исходный JSON в ответ не включаются.","params":["id"],"parameters":[{"name":"id","in":"query","required":true,"type":"string","desc":"Идентификатор записи из ответа Core."}],"example":"https://api.expri.space/api/public/v1/employees/item?id=employees_example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/employees/item?id=employees_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/employees/item?id=employees_example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/employees/item?id=employees_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/employees/item?id=employees_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"emp_id":"example","name":"Иван","role":"Упаковщик","default_shift":"08:00-20:00","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:employees"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/employees/item","replacement_url":"https://api.expri.space/api/public/v1/employees/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"PATCH","path":"/api/public/v1/employees/item","scope":"employees_write","title":"Изменить сотрудника","description":"Изменяет только переданные поля записи. Остальные поля сохраняются.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение employees_write. Изменения отражаются в интерфейсе Core.","params":["id","If-Match"],"parameters":[{"name":"id","in":"query","required":true,"type":"string","desc":"Идентификатор записи из ответа Core."},{"name":"If-Match","in":"header","required":false,"type":"string","desc":"Необязательная ревизия из ETag или revision. При изменении записи другим клиентом — HTTP 412."}],"example":"https://api.expri.space/api/public/v1/employees/item?id=employees_example","examples":{"curl":"curl -X PATCH -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/employees/item?id=employees_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/employees/item?id=employees_example\", {\n  method: \"PATCH\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"name\": \"Иван\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"PATCH\",\n    \"https://api.expri.space/api/public/v1/employees/item?id=employees_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/employees/item?id=employees_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'PATCH',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"name":"Иван"},"request_fields":[{"name":"name","type":"string","required":false,"desc":"Поле name."},{"name":"role","type":"string","required":false,"desc":"Поле role."},{"name":"rfid_uid","type":"string","required":false,"desc":"Поле rfid_uid."},{"name":"default_shift","type":"string","required":false,"desc":"Поле default_shift."},{"name":"sort_order","type":"integer","required":false,"desc":"Поле sort_order."}],"request_required":[],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"emp_id":"example","name":"Иван","role":"Упаковщик","default_shift":"08:00-20:00","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:employees_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/employees/item","replacement_url":"https://api.expri.space/api/public/v1/employees/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"POST","path":"/api/public/v1/materials","scope":"materials_write","title":"Создать материал","description":"Создаёт материал в Core. Сервер назначает уникальный идентификатор и время создания.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение materials_write. Изменения отражаются в интерфейсе Core.","params":["Idempotency-Key"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"type":"string","desc":"Уникальная строка 8–128 символов. Повтор той же операции в течение 24 часов возвращает сохранённый ответ; другое тело с этим ключом — HTTP 409."}],"example":"https://api.expri.space/api/public/v1/materials","examples":{"curl":"curl -X POST -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Idempotency-Key: example-materials_create-001' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/materials'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/materials\", {\n  method: \"POST\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Idempotency-Key\": \"example-materials_create-001\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"mat_type\": \"Винил\",\n    \"length_m\": 50,\n    \"cell_qr\": \"cell-01\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"POST\",\n    \"https://api.expri.space/api/public/v1/materials\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Idempotency-Key\":\"example-materials_create-001\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/materials');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Idempotency-Key: example-materials_create-001', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"mat_type":"Винил","length_m":50,"cell_qr":"cell-01"},"request_fields":[{"name":"mat_type","type":"string","required":true,"desc":"Поле mat_type."},{"name":"length_m","type":"number","required":true,"desc":"Длина в метрах, не меньше нуля."},{"name":"cell_qr","type":"string","required":false,"desc":"Поле cell_qr."}],"request_required":["mat_type","length_m"],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"201":{"title":"Запись создана","body":{"ok":true,"item":{"material_id":"example","mat_type":"Винил","length_m":50,"cell_qr":"cell-01","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:materials_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/materials","replacement_url":"https://api.expri.space/api/public/v1/materials","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/materials/item","scope":"materials","title":"Получить материал","description":"Возвращает одну запись по идентификатору, включая ревизию для условного изменения.","note":"Организация определяется токеном. PIN, служебные поля и исходный JSON в ответ не включаются.","params":["id"],"parameters":[{"name":"id","in":"query","required":true,"type":"string","desc":"Идентификатор записи из ответа Core."}],"example":"https://api.expri.space/api/public/v1/materials/item?id=materials_example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/materials/item?id=materials_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/materials/item?id=materials_example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/materials/item?id=materials_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/materials/item?id=materials_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"material_id":"example","mat_type":"Винил","length_m":50,"cell_qr":"cell-01","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:materials"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/materials/item","replacement_url":"https://api.expri.space/api/public/v1/materials/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"PATCH","path":"/api/public/v1/materials/item","scope":"materials_write","title":"Изменить материал","description":"Изменяет только переданные поля записи. Остальные поля сохраняются.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение materials_write. Изменения отражаются в интерфейсе Core.","params":["id","If-Match"],"parameters":[{"name":"id","in":"query","required":true,"type":"string","desc":"Идентификатор записи из ответа Core."},{"name":"If-Match","in":"header","required":false,"type":"string","desc":"Необязательная ревизия из ETag или revision. При изменении записи другим клиентом — HTTP 412."}],"example":"https://api.expri.space/api/public/v1/materials/item?id=materials_example","examples":{"curl":"curl -X PATCH -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/materials/item?id=materials_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/materials/item?id=materials_example\", {\n  method: \"PATCH\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"mat_type\": \"Винил\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"PATCH\",\n    \"https://api.expri.space/api/public/v1/materials/item?id=materials_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/materials/item?id=materials_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'PATCH',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"mat_type":"Винил"},"request_fields":[{"name":"mat_type","type":"string","required":false,"desc":"Поле mat_type."},{"name":"length_m","type":"number","required":false,"desc":"Длина в метрах, не меньше нуля."},{"name":"cell_qr","type":"string","required":false,"desc":"Поле cell_qr."}],"request_required":[],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"material_id":"example","mat_type":"Винил","length_m":50,"cell_qr":"cell-01","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:materials_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/materials/item","replacement_url":"https://api.expri.space/api/public/v1/materials/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"POST","path":"/api/public/v1/products","scope":"products_write","title":"Создать продукцию","description":"Создаёт продукцию в Core. Сервер назначает уникальный идентификатор и время создания.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение products_write. Изменения отражаются в интерфейсе Core. SKU и marketplace задаются при создании и не изменяются через PATCH; существующий товар с тем же ключом — HTTP 409.","params":["Idempotency-Key"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"type":"string","desc":"Уникальная строка 8–128 символов. Повтор той же операции в течение 24 часов возвращает сохранённый ответ; другое тело с этим ключом — HTTP 409."}],"example":"https://api.expri.space/api/public/v1/products","examples":{"curl":"curl -X POST -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Idempotency-Key: example-products_create-001' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/products'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/products\", {\n  method: \"POST\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Idempotency-Key\": \"example-products_create-001\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"sku\": \"М_001_3\",\n    \"title\": \"Макет 001\",\n    \"marketplace\": \"WB\",\n    \"strips\": 3,\n    \"active\": true\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"POST\",\n    \"https://api.expri.space/api/public/v1/products\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Idempotency-Key\":\"example-products_create-001\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/products');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Idempotency-Key: example-products_create-001', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"sku":"М_001_3","title":"Макет 001","marketplace":"WB","strips":3,"active":true},"request_fields":[{"name":"sku","type":"string","required":true,"desc":"Поле sku."},{"name":"title","type":"string","required":true,"desc":"Поле title."},{"name":"marketplace","type":"string","required":false,"desc":"WB, OZON или пустая строка."},{"name":"article_mp","type":"string","required":false,"desc":"Поле article_mp."},{"name":"source_type","type":"string","required":false,"desc":"order, wallpaper, picture, pos или fbo."},{"name":"width_mm","type":"integer","required":false,"desc":"Поле width_mm."},{"name":"height_mm","type":"integer","required":false,"desc":"Поле height_mm."},{"name":"strips","type":"integer","required":false,"desc":"Количество полос."},{"name":"ml_per_unit","type":"integer","required":false,"desc":"Поле ml_per_unit."},{"name":"priority","type":"integer","required":false,"desc":"Поле priority."},{"name":"active","type":"boolean","required":false,"desc":"Доступность продукции."}],"request_required":["sku","title"],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"201":{"title":"Запись создана","body":{"ok":true,"item":{"product_key":"example","sku":"М_001_3","title":"Макет 001","marketplace":"WB","strips":3,"active":true,"updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:products_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/products","replacement_url":"https://api.expri.space/api/public/v1/products","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/products/item","scope":"products","title":"Получить продукцию","description":"Возвращает одну запись по идентификатору, включая ревизию для условного изменения.","note":"Организация определяется токеном. PIN, служебные поля и исходный JSON в ответ не включаются. SKU и marketplace задаются при создании и не изменяются через PATCH; существующий товар с тем же ключом — HTTP 409.","params":["id"],"parameters":[{"name":"id","in":"query","required":true,"type":"string","desc":"Идентификатор записи из ответа Core."}],"example":"https://api.expri.space/api/public/v1/products/item?id=products_example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/products/item?id=products_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/products/item?id=products_example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/products/item?id=products_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/products/item?id=products_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"product_key":"example","sku":"М_001_3","title":"Макет 001","marketplace":"WB","strips":3,"active":true,"updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:products"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/products/item","replacement_url":"https://api.expri.space/api/public/v1/products/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"PATCH","path":"/api/public/v1/products/item","scope":"products_write","title":"Изменить продукцию","description":"Изменяет только переданные поля записи. Остальные поля сохраняются.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение products_write. Изменения отражаются в интерфейсе Core. SKU и marketplace задаются при создании и не изменяются через PATCH; существующий товар с тем же ключом — HTTP 409.","params":["id","If-Match"],"parameters":[{"name":"id","in":"query","required":true,"type":"string","desc":"Идентификатор записи из ответа Core."},{"name":"If-Match","in":"header","required":false,"type":"string","desc":"Необязательная ревизия из ETag или revision. При изменении записи другим клиентом — HTTP 412."}],"example":"https://api.expri.space/api/public/v1/products/item?id=products_example","examples":{"curl":"curl -X PATCH -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/products/item?id=products_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/products/item?id=products_example\", {\n  method: \"PATCH\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"title\": \"Новое название\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"PATCH\",\n    \"https://api.expri.space/api/public/v1/products/item?id=products_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/products/item?id=products_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'PATCH',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"title":"Новое название"},"request_fields":[{"name":"title","type":"string","required":false,"desc":"Поле title."},{"name":"article_mp","type":"string","required":false,"desc":"Поле article_mp."},{"name":"source_type","type":"string","required":false,"desc":"order, wallpaper, picture, pos или fbo."},{"name":"width_mm","type":"integer","required":false,"desc":"Поле width_mm."},{"name":"height_mm","type":"integer","required":false,"desc":"Поле height_mm."},{"name":"strips","type":"integer","required":false,"desc":"Количество полос."},{"name":"ml_per_unit","type":"integer","required":false,"desc":"Поле ml_per_unit."},{"name":"priority","type":"integer","required":false,"desc":"Поле priority."},{"name":"active","type":"boolean","required":false,"desc":"Доступность продукции."}],"request_required":[],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"product_key":"example","sku":"М_001_3","title":"Макет 001","marketplace":"WB","strips":3,"active":true,"updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:products_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/products/item","replacement_url":"https://api.expri.space/api/public/v1/products/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"POST","path":"/api/public/v1/orders","scope":"orders_write","title":"Создать заказ","description":"Создаёт заказ в Core. Сервер назначает уникальный идентификатор и время создания.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение orders_write. Изменения отражаются в интерфейсе Core. Операция касается локального производственного заказа, без создания заказа на маркетплейсе.","params":["Idempotency-Key"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"type":"string","desc":"Уникальная строка 8–128 символов. Повтор той же операции в течение 24 часов возвращает сохранённый ответ; другое тело с этим ключом — HTTP 409."}],"example":"https://api.expri.space/api/public/v1/orders","examples":{"curl":"curl -X POST -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Idempotency-Key: example-orders_create-001' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/orders'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/orders\", {\n  method: \"POST\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Idempotency-Key\": \"example-orders_create-001\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"sku\": \"М_001_3\",\n    \"qty\": 1,\n    \"title\": \"Ручной заказ\",\n    \"comment\": \"Создан интеграцией\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"POST\",\n    \"https://api.expri.space/api/public/v1/orders\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Idempotency-Key\":\"example-orders_create-001\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/orders');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Idempotency-Key: example-orders_create-001', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"sku":"М_001_3","qty":1,"title":"Ручной заказ","comment":"Создан интеграцией"},"request_fields":[{"name":"sku","type":"string","required":true,"desc":"Поле sku."},{"name":"title","type":"string","required":false,"desc":"Поле title."},{"name":"qty","type":"integer","required":true,"desc":"Целое количество, не меньше 1."},{"name":"ml","type":"integer","required":false,"desc":"Поле ml."},{"name":"comment","type":"string","required":false,"desc":"Поле comment."},{"name":"note","type":"string","required":false,"desc":"Заметка; для графика до 500 символов."},{"name":"warehouse_target","type":"string","required":false,"desc":"Склад, Склад WB, Склад OZON или пустая строка."},{"name":"order_no","type":"string","required":false,"desc":"Поле order_no."},{"name":"external_order_id","type":"string","required":false,"desc":"Поле external_order_id."},{"name":"posting_number","type":"string","required":false,"desc":"Поле posting_number."},{"name":"marketplace","type":"string","required":false,"desc":"WB, OZON или пустая строка."},{"name":"source_type","type":"string","required":false,"desc":"order, wallpaper, picture, pos или fbo."}],"request_required":["sku","qty"],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"201":{"title":"Запись создана","body":{"ok":true,"item":{"order_key":"example","sku":"М_001_3","qty":1,"title":"Ручной заказ","comment":"Создан интеграцией","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:orders_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/orders","replacement_url":"https://api.expri.space/api/public/v1/orders","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/orders/item","scope":"orders","title":"Получить заказ","description":"Возвращает одну запись по идентификатору, включая ревизию для условного изменения.","note":"Организация определяется токеном. PIN, служебные поля и исходный JSON в ответ не включаются. Операция касается локального производственного заказа, без создания заказа на маркетплейсе.","params":["id"],"parameters":[{"name":"id","in":"query","required":true,"type":"string","desc":"Идентификатор записи из ответа Core."}],"example":"https://api.expri.space/api/public/v1/orders/item?id=orders_example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/orders/item?id=orders_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/orders/item?id=orders_example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/orders/item?id=orders_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/orders/item?id=orders_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"order_key":"example","sku":"М_001_3","qty":1,"title":"Ручной заказ","comment":"Создан интеграцией","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:orders"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/orders/item","replacement_url":"https://api.expri.space/api/public/v1/orders/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"PATCH","path":"/api/public/v1/orders/item","scope":"orders_write","title":"Изменить заказ","description":"Изменяет только переданные поля записи. Остальные поля сохраняются.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение orders_write. Изменения отражаются в интерфейсе Core. Для заказа разрешены только title, comment и note. Производственный статус и складские движения изменяются штатными операциями Core. Операция касается локального производственного заказа, без создания заказа на маркетплейсе.","params":["id","If-Match"],"parameters":[{"name":"id","in":"query","required":true,"type":"string","desc":"Идентификатор записи из ответа Core."},{"name":"If-Match","in":"header","required":false,"type":"string","desc":"Необязательная ревизия из ETag или revision. При изменении записи другим клиентом — HTTP 412."}],"example":"https://api.expri.space/api/public/v1/orders/item?id=orders_example","examples":{"curl":"curl -X PATCH -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/orders/item?id=orders_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/orders/item?id=orders_example\", {\n  method: \"PATCH\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"comment\": \"Уточнение для производства\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"PATCH\",\n    \"https://api.expri.space/api/public/v1/orders/item?id=orders_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/orders/item?id=orders_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'PATCH',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"comment":"Уточнение для производства"},"request_fields":[{"name":"title","type":"string","required":false,"desc":"Поле title."},{"name":"comment","type":"string","required":false,"desc":"Поле comment."},{"name":"note","type":"string","required":false,"desc":"Заметка; для графика до 500 символов."}],"request_required":[],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"order_key":"example","sku":"М_001_3","qty":1,"title":"Ручной заказ","comment":"Создан интеграцией","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:orders_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/orders/item","replacement_url":"https://api.expri.space/api/public/v1/orders/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"POST","path":"/api/public/v1/defects","scope":"defects_write","title":"Создать карточку брака","description":"Создаёт карточку брака в Core. Сервер назначает уникальный идентификатор и время создания.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение defects_write. Изменения отражаются в интерфейсе Core.","params":["Idempotency-Key"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"type":"string","desc":"Уникальная строка 8–128 символов. Повтор той же операции в течение 24 часов возвращает сохранённый ответ; другое тело с этим ключом — HTTP 409."}],"example":"https://api.expri.space/api/public/v1/defects","examples":{"curl":"curl -X POST -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Idempotency-Key: example-defects_create-001' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/defects'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/defects\", {\n  method: \"POST\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Idempotency-Key\": \"example-defects_create-001\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"reason\": \"Повреждение материала\",\n    \"length_m\": 2,\n    \"details\": \"Требуется перепечатка\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"POST\",\n    \"https://api.expri.space/api/public/v1/defects\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Idempotency-Key\":\"example-defects_create-001\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/defects');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Idempotency-Key: example-defects_create-001', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"reason":"Повреждение материала","length_m":2,"details":"Требуется перепечатка"},"request_fields":[{"name":"reason","type":"string","required":true,"desc":"Поле reason."},{"name":"order_ref","type":"string","required":false,"desc":"Поле order_ref."},{"name":"material_type","type":"string","required":false,"desc":"Поле material_type."},{"name":"length_m","type":"number","required":false,"desc":"Длина в метрах, не меньше нуля."},{"name":"details","type":"string","required":false,"desc":"Поле details."},{"name":"reporter","type":"string","required":false,"desc":"Поле reporter."},{"name":"culprit","type":"string","required":false,"desc":"Поле culprit."}],"request_required":["reason"],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"201":{"title":"Запись создана","body":{"ok":true,"item":{"defect_key":"example","reason":"Повреждение материала","length_m":2,"details":"Требуется перепечатка","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:defects_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/defects","replacement_url":"https://api.expri.space/api/public/v1/defects","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/defects/item","scope":"defects","title":"Получить карточку брака","description":"Возвращает одну запись по идентификатору, включая ревизию для условного изменения.","note":"Организация определяется токеном. PIN, служебные поля и исходный JSON в ответ не включаются.","params":["id"],"parameters":[{"name":"id","in":"query","required":true,"type":"string","desc":"Идентификатор записи из ответа Core."}],"example":"https://api.expri.space/api/public/v1/defects/item?id=defects_example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/defects/item?id=defects_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/defects/item?id=defects_example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/defects/item?id=defects_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/defects/item?id=defects_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"defect_key":"example","reason":"Повреждение материала","length_m":2,"details":"Требуется перепечатка","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:defects"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/defects/item","replacement_url":"https://api.expri.space/api/public/v1/defects/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"PATCH","path":"/api/public/v1/defects/item","scope":"defects_write","title":"Изменить карточку брака","description":"Изменяет только переданные поля записи. Остальные поля сохраняются.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение defects_write. Изменения отражаются в интерфейсе Core.","params":["id","If-Match"],"parameters":[{"name":"id","in":"query","required":true,"type":"string","desc":"Идентификатор записи из ответа Core."},{"name":"If-Match","in":"header","required":false,"type":"string","desc":"Необязательная ревизия из ETag или revision. При изменении записи другим клиентом — HTTP 412."}],"example":"https://api.expri.space/api/public/v1/defects/item?id=defects_example","examples":{"curl":"curl -X PATCH -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/defects/item?id=defects_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/defects/item?id=defects_example\", {\n  method: \"PATCH\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"reason\": \"Повреждение материала\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"PATCH\",\n    \"https://api.expri.space/api/public/v1/defects/item?id=defects_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/defects/item?id=defects_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'PATCH',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"reason":"Повреждение материала"},"request_fields":[{"name":"reason","type":"string","required":false,"desc":"Поле reason."},{"name":"order_ref","type":"string","required":false,"desc":"Поле order_ref."},{"name":"material_type","type":"string","required":false,"desc":"Поле material_type."},{"name":"length_m","type":"number","required":false,"desc":"Длина в метрах, не меньше нуля."},{"name":"details","type":"string","required":false,"desc":"Поле details."},{"name":"reporter","type":"string","required":false,"desc":"Поле reporter."},{"name":"culprit","type":"string","required":false,"desc":"Поле culprit."}],"request_required":[],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"defect_key":"example","reason":"Повреждение материала","length_m":2,"details":"Требуется перепечатка","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:defects_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/defects/item","replacement_url":"https://api.expri.space/api/public/v1/defects/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"POST","path":"/api/public/v1/bugs","scope":"bugs_write","title":"Создать баг-репорт","description":"Создаёт баг-репорт в Core. Сервер назначает уникальный идентификатор и время создания.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение bugs_write. Изменения отражаются в интерфейсе Core.","params":["Idempotency-Key"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"type":"string","desc":"Уникальная строка 8–128 символов. Повтор той же операции в течение 24 часов возвращает сохранённый ответ; другое тело с этим ключом — HTTP 409."}],"example":"https://api.expri.space/api/public/v1/bugs","examples":{"curl":"curl -X POST -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Idempotency-Key: example-bugs_create-001' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/bugs'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/bugs\", {\n  method: \"POST\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Idempotency-Key\": \"example-bugs_create-001\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"title\": \"Ошибка при открытии заказа\",\n    \"description\": \"Описание и шаги воспроизведения\",\n    \"product\": \"Core\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"POST\",\n    \"https://api.expri.space/api/public/v1/bugs\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Idempotency-Key\":\"example-bugs_create-001\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/bugs');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Idempotency-Key: example-bugs_create-001', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"title":"Ошибка при открытии заказа","description":"Описание и шаги воспроизведения","product":"Core"},"request_fields":[{"name":"title","type":"string","required":true,"desc":"Поле title."},{"name":"description","type":"string","required":true,"desc":"Поле description."},{"name":"source_area","type":"string","required":false,"desc":"Поле source_area."},{"name":"product","type":"string","required":false,"desc":"Поле product."},{"name":"severity","type":"string","required":false,"desc":"Поле severity."},{"name":"reason","type":"string","required":false,"desc":"Поле reason."},{"name":"reporter","type":"string","required":false,"desc":"Поле reporter."},{"name":"page_url","type":"string","required":false,"desc":"Поле page_url."}],"request_required":["title","description"],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"201":{"title":"Запись создана","body":{"ok":true,"item":{"bug_key":"example","title":"Ошибка при открытии заказа","description":"Описание и шаги воспроизведения","product":"Core","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:bugs_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/bugs","replacement_url":"https://api.expri.space/api/public/v1/bugs","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/bugs/item","scope":"bugs","title":"Получить баг-репорт","description":"Возвращает одну запись по идентификатору, включая ревизию для условного изменения.","note":"Организация определяется токеном. PIN, служебные поля и исходный JSON в ответ не включаются.","params":["id"],"parameters":[{"name":"id","in":"query","required":true,"type":"string","desc":"Идентификатор записи из ответа Core."}],"example":"https://api.expri.space/api/public/v1/bugs/item?id=bugs_example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/bugs/item?id=bugs_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/bugs/item?id=bugs_example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/bugs/item?id=bugs_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/bugs/item?id=bugs_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"bug_key":"example","title":"Ошибка при открытии заказа","description":"Описание и шаги воспроизведения","product":"Core","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:bugs"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/bugs/item","replacement_url":"https://api.expri.space/api/public/v1/bugs/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"PATCH","path":"/api/public/v1/bugs/item","scope":"bugs_write","title":"Изменить баг-репорт","description":"Изменяет только переданные поля записи. Остальные поля сохраняются.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение bugs_write. Изменения отражаются в интерфейсе Core.","params":["id","If-Match"],"parameters":[{"name":"id","in":"query","required":true,"type":"string","desc":"Идентификатор записи из ответа Core."},{"name":"If-Match","in":"header","required":false,"type":"string","desc":"Необязательная ревизия из ETag или revision. При изменении записи другим клиентом — HTTP 412."}],"example":"https://api.expri.space/api/public/v1/bugs/item?id=bugs_example","examples":{"curl":"curl -X PATCH -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/bugs/item?id=bugs_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/bugs/item?id=bugs_example\", {\n  method: \"PATCH\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"title\": \"Ошибка при открытии заказа\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"PATCH\",\n    \"https://api.expri.space/api/public/v1/bugs/item?id=bugs_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/bugs/item?id=bugs_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'PATCH',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"title":"Ошибка при открытии заказа"},"request_fields":[{"name":"title","type":"string","required":false,"desc":"Поле title."},{"name":"description","type":"string","required":false,"desc":"Поле description."},{"name":"source_area","type":"string","required":false,"desc":"Поле source_area."},{"name":"product","type":"string","required":false,"desc":"Поле product."},{"name":"severity","type":"string","required":false,"desc":"Поле severity."},{"name":"reason","type":"string","required":false,"desc":"Поле reason."},{"name":"reporter","type":"string","required":false,"desc":"Поле reporter."},{"name":"page_url","type":"string","required":false,"desc":"Поле page_url."}],"request_required":[],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"bug_key":"example","title":"Ошибка при открытии заказа","description":"Описание и шаги воспроизведения","product":"Core","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:bugs_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/bugs/item","replacement_url":"https://api.expri.space/api/public/v1/bugs/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"DELETE","path":"/api/public/v1/materials/item","scope":"materials_write","title":"Удалить материал","description":"Удаляет материал по идентификатору. Повторное удаление отсутствующей записи возвращает HTTP 404.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение materials_write. Изменения отражаются в интерфейсе Core.","params":["id","If-Match"],"parameters":[{"name":"id","in":"query","required":true,"type":"string","desc":"Идентификатор записи из ответа Core."},{"name":"If-Match","in":"header","required":false,"type":"string","desc":"Необязательная ревизия из ETag или revision. При изменении записи другим клиентом — HTTP 412."}],"example":"https://api.expri.space/api/public/v1/materials/item?id=materials_example","examples":{"curl":"curl -X DELETE -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/materials/item?id=materials_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/materials/item?id=materials_example\", {\n  method: \"DELETE\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"DELETE\",\n    \"https://api.expri.space/api/public/v1/materials/item?id=materials_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/materials/item?id=materials_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'DELETE',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"deleted":true,"id":"materials_example"}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:materials_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/materials/item","replacement_url":"https://api.expri.space/api/public/v1/materials/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"PATCH","path":"/api/public/v1/bugs/status","scope":"bugs_write","title":"Изменить статус баг-репорта","description":"Меняет статус обращения и сохраняет комментарий через штатную обработку Core.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение bugs_write. Изменения отражаются в интерфейсе Core. Статусы: new, reopened, needs_info, in_progress, testing, fixed, rejected.","params":["id","If-Match"],"parameters":[{"name":"id","in":"query","required":true,"type":"string","desc":"Идентификатор записи из ответа Core."},{"name":"If-Match","in":"header","required":false,"type":"string","desc":"Необязательная ревизия из ETag или revision. При изменении записи другим клиентом — HTTP 412."}],"example":"https://api.expri.space/api/public/v1/bugs/status?id=bugs_example","examples":{"curl":"curl -X PATCH -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/bugs/status?id=bugs_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/bugs/status?id=bugs_example\", {\n  method: \"PATCH\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"status\": \"in_progress\",\n    \"comment\": \"Взято в работу\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"PATCH\",\n    \"https://api.expri.space/api/public/v1/bugs/status?id=bugs_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/bugs/status?id=bugs_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'PATCH',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"status":"in_progress","comment":"Взято в работу"},"request_fields":[{"name":"status","type":"string","required":true,"desc":"Поле status."},{"name":"comment","type":"string","required":false,"desc":"Поле comment."}],"request_required":["status"],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"bug_key":"example","title":"Ошибка при открытии заказа","description":"Описание и шаги воспроизведения","product":"Core","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:bugs_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/bugs/status","replacement_url":"https://api.expri.space/api/public/v1/bugs/status","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"PATCH","path":"/api/public/v1/defects/status","scope":"defects_write","title":"Изменить статус брака","description":"Меняет статус обращения и сохраняет комментарий через штатную обработку Core.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение defects_write. Изменения отражаются в интерфейсе Core. Статусы: на рассмотрении, в работе, принят, исправлен, отклонен.","params":["id","If-Match"],"parameters":[{"name":"id","in":"query","required":true,"type":"string","desc":"Идентификатор записи из ответа Core."},{"name":"If-Match","in":"header","required":false,"type":"string","desc":"Необязательная ревизия из ETag или revision. При изменении записи другим клиентом — HTTP 412."}],"example":"https://api.expri.space/api/public/v1/defects/status?id=defects_example","examples":{"curl":"curl -X PATCH -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/defects/status?id=defects_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/defects/status?id=defects_example\", {\n  method: \"PATCH\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"status\": \"в работе\",\n    \"comment\": \"Взято в работу\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"PATCH\",\n    \"https://api.expri.space/api/public/v1/defects/status?id=defects_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/defects/status?id=defects_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'PATCH',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"status":"в работе","comment":"Взято в работу"},"request_fields":[{"name":"status","type":"string","required":true,"desc":"Поле status."},{"name":"comment","type":"string","required":false,"desc":"Поле comment."}],"request_required":["status"],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"defect_key":"example","reason":"Повреждение материала","length_m":2,"details":"Требуется перепечатка","updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:defects_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/defects/status","replacement_url":"https://api.expri.space/api/public/v1/defects/status","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/schedule/day","scope":"schedule","title":"День графика сотрудника","description":"Плановая смена и заметки за один день. Фактические отметки входа и выхода не изменяются.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение schedule. Изменения отражаются в интерфейсе Core.","params":["emp_id","date"],"parameters":[{"name":"emp_id","in":"query","required":true,"type":"string","desc":"Идентификатор сотрудника."},{"name":"date","in":"query","required":true,"type":"string","desc":"Дата плановой смены в формате YYYY-MM-DD."}],"example":"https://api.expri.space/api/public/v1/schedule/day?emp_id=employees_example&date=2026-11-08","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/schedule/day?emp_id=employees_example&date=2026-11-08'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/schedule/day?emp_id=employees_example&date=2026-11-08\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/schedule/day?emp_id=employees_example&date=2026-11-08\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/schedule/day?emp_id=employees_example&date=2026-11-08');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"emp_id":"employees_example","date":"2026-11-08","value":"08:00-20:00","note":"","staff_note":""}}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:schedule"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/schedule/day","replacement_url":"https://api.expri.space/api/public/v1/schedule/day","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"PUT","path":"/api/public/v1/schedule/day","scope":"schedule_write","title":"Заменить день графика","description":"Плановая смена и заметки за один день. Фактические отметки входа и выхода не изменяются.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение schedule_write. Изменения отражаются в интерфейсе Core. PUT заменяет значение и обе заметки только за указанный день. Пропущенные заметки очищаются.","params":["emp_id","date"],"parameters":[{"name":"emp_id","in":"query","required":true,"type":"string","desc":"Идентификатор сотрудника."},{"name":"date","in":"query","required":true,"type":"string","desc":"Дата плановой смены в формате YYYY-MM-DD."}],"example":"https://api.expri.space/api/public/v1/schedule/day?emp_id=employees_example&date=2026-11-08","examples":{"curl":"curl -X PUT -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/schedule/day?emp_id=employees_example&date=2026-11-08'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/schedule/day?emp_id=employees_example&date=2026-11-08\", {\n  method: \"PUT\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"value\": \"08:00-20:00\",\n    \"note\": \"Плановая смена\",\n    \"staff_note\": \"\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"PUT\",\n    \"https://api.expri.space/api/public/v1/schedule/day?emp_id=employees_example&date=2026-11-08\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/schedule/day?emp_id=employees_example&date=2026-11-08');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'PUT',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"value":"08:00-20:00","note":"Плановая смена","staff_note":""},"request_fields":[{"name":"value","type":"string","required":true,"desc":"Интервал HH:MM-HH:MM либо значение смены, поддерживаемое Core."},{"name":"note","type":"string","required":false,"desc":"Заметка; для графика до 500 символов."},{"name":"staff_note","type":"string","required":false,"desc":"Заметка; для графика до 500 символов."}],"request_required":["value"],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"emp_id":"employees_example","date":"2026-11-08","value":"08:00-20:00","note":"","staff_note":""}}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:schedule_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/schedule/day","replacement_url":"https://api.expri.space/api/public/v1/schedule/day","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"DELETE","path":"/api/public/v1/schedule/day","scope":"schedule_write","title":"Очистить день графика","description":"Плановая смена и заметки за один день. Фактические отметки входа и выхода не изменяются.","note":"Организация определяется токеном. Для записи выдайте отдельное разрешение schedule_write. Изменения отражаются в интерфейсе Core.","params":["emp_id","date"],"parameters":[{"name":"emp_id","in":"query","required":true,"type":"string","desc":"Идентификатор сотрудника."},{"name":"date","in":"query","required":true,"type":"string","desc":"Дата плановой смены в формате YYYY-MM-DD."}],"example":"https://api.expri.space/api/public/v1/schedule/day?emp_id=employees_example&date=2026-11-08","examples":{"curl":"curl -X DELETE -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/schedule/day?emp_id=employees_example&date=2026-11-08'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/schedule/day?emp_id=employees_example&date=2026-11-08\", {\n  method: \"DELETE\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"DELETE\",\n    \"https://api.expri.space/api/public/v1/schedule/day?emp_id=employees_example&date=2026-11-08\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/schedule/day?emp_id=employees_example&date=2026-11-08');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'DELETE',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"item","type":"object","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"emp_id":"employees_example","date":"2026-11-08","value":"08:00-20:00","note":"","staff_note":""}}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:schedule_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"409":{"title":"Ключ повтора использован для другого запроса","body":{"ok":false,"error":"idempotency_conflict"}},"412":{"title":"Запись уже изменена","body":{"ok":false,"error":"revision_conflict"}},"415":{"title":"Нужен JSON","body":{"ok":false,"error":"application_json_required"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/schedule/day","replacement_url":"https://api.expri.space/api/public/v1/schedule/day","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/employees/rates","scope":"payroll","title":"История ставок сотрудника","description":"Возвращает ставки сотрудника с датами начала и окончания действия.","note":"Организация определяется токеном. История ставок доступна по разрешению payroll.","params":["emp_id"],"parameters":[{"name":"emp_id","in":"query","required":true,"type":"string","desc":"Идентификатор сотрудника."}],"example":"https://api.expri.space/api/public/v1/employees/rates?emp_id=employees_example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/employees/rates?emp_id=employees_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/employees/rates?emp_id=employees_example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/employees/rates?emp_id=employees_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/employees/rates?emp_id=employees_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[{"name":"ok","type":"boolean","desc":"Успешность операции."},{"name":"rates","type":"array","desc":"Результат операции."},{"name":"revision","type":"string","desc":"Ревизия записи, если применимо."}],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"emp_id":"employees_example","rates":[{"hour_rate":250,"effective_from":"2026-11-01","effective_to":"","note":"Плановая ставка"}]}},"401":{"title":"Токен недействителен","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:payroll"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные поля","body":{"ok":false,"error":"invalid_field"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/employees/rates","replacement_url":"https://api.expri.space/api/public/v1/employees/rates","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/production-plan/item","scope":"production_plan","title":"План производства FBO · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["plan_key"],"parameters":[{"name":"plan_key","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/production-plan/item?plan_key=example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/production-plan/item?plan_key=example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/production-plan/item?plan_key=example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/production-plan/item?plan_key=example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/production-plan/item?plan_key=example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"plan_key":"example","marketplace":"example","sku":"example","product_key":"example","print_priority":1,"need_print":1,"remaining_qty":1,"in_production_m2":1.5,"not_printed_m2":1.5,"not_printed_qty":1,"updated_at":"2026-11-08"}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:production_plan"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/production-plan/item","replacement_url":"https://api.expri.space/api/public/v1/production-plan/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/stock-movements/item","scope":"stock_movements","title":"Движения готовой продукции · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["id"],"parameters":[{"name":"id","in":"query","required":true,"type":"integer","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/stock-movements/item?id=1","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/stock-movements/item?id=1'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/stock-movements/item?id=1\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/stock-movements/item?id=1\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/stock-movements/item?id=1');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"id":1,"ts":"2026-11-08T19:08:31+05:00","kind":"example","marketplace":"example","warehouse":"example","sku":"example","qty":1,"area_m2":1.5,"order_key":"example","updated_at":"2026-11-08"}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:stock_movements"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/stock-movements/item","replacement_url":"https://api.expri.space/api/public/v1/stock-movements/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/supplies/item","scope":"supplies","title":"Поставки FBO · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["supply_key"],"parameters":[{"name":"supply_key","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/supplies/item?supply_key=example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/supplies/item?supply_key=example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/supplies/item?supply_key=example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/supplies/item?supply_key=example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/supplies/item?supply_key=example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"supply_key":"example","marketplace":"example","supply_no":"example","status":"example","shipped_at":"2026-11-08T19:08:31+05:00","accepted_at":"2026-11-08T19:08:31+05:00","created_at":"2026-11-08T19:08:31+05:00","updated_at":"2026-11-08"}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:supplies"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/supplies/item","replacement_url":"https://api.expri.space/api/public/v1/supplies/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/supply-items/item","scope":"supplies","title":"Состав поставок FBO · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["id"],"parameters":[{"name":"id","in":"query","required":true,"type":"integer","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/supply-items/item?id=1","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/supply-items/item?id=1'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/supply-items/item?id=1\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/supply-items/item?id=1\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/supply-items/item?id=1');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"id":1,"supply_key":"example","marketplace":"example","warehouse":"example","sku":"example","qty":1,"accepted_qty":1,"transit_qty":1,"created_at":"2026-11-08T19:08:31+05:00","updated_at":"2026-11-08"}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:supplies"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/supply-items/item","replacement_url":"https://api.expri.space/api/public/v1/supply-items/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/ink-measurements/item","scope":"ink_history","title":"История измерений чернил · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["id"],"parameters":[{"name":"id","in":"query","required":true,"type":"integer","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/ink-measurements/item?id=1","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/ink-measurements/item?id=1'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/ink-measurements/item?id=1\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/ink-measurements/item?id=1\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/ink-measurements/item?id=1');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"id":1,"event_id":"example","sku":"example","category":"example","source":"example","measured_at":"2026-11-08T19:08:31+05:00","ink_c_ml":1.5,"ink_m_ml":1.5,"ink_y_ml":1.5,"ink_k_ml":1.5,"ink_total_ml":1.5,"ink_ml_m2":1.5,"width_cm":1.5,"height_cm":1.5,"area_m2":1.5,"strip_count":1,"box_size":"example","media_name":"example","passes":1,"created_at":"2026-11-08T19:08:31+05:00"}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:ink_history"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/ink-measurements/item","replacement_url":"https://api.expri.space/api/public/v1/ink-measurements/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/wb/prices/item","scope":"wb_prices","title":"WB: цены продавца · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Используются сохранённые данные Core. Запрос не обращается к маркетплейсу и не обновляет снимок.","params":["row_key"],"parameters":[{"name":"row_key","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/marketplaces/wb/prices/item?row_key=example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/wb/prices/item?row_key=example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/wb/prices/item?row_key=example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/wb/prices/item?row_key=example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/wb/prices/item?row_key=example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"row_key":"example","snapshot_at":"2026-11-08T19:08:31+05:00","nm_id":1,"vendor_code":"example","size_id":1,"tech_size_name":"example","price":1.5,"discounted_price":1.5,"discount":1.5,"club_discount":1.5,"club_discounted_price":1.5,"currency":"example"}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:wb_prices"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/marketplaces/wb/prices/item","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/wb/prices/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/wb/stocks/item","scope":"wb_stocks","title":"WB: остатки по складам · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Используются сохранённые данные Core. Запрос не обращается к маркетплейсу и не обновляет снимок.","params":["row_key"],"parameters":[{"name":"row_key","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/marketplaces/wb/stocks/item?row_key=example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/wb/stocks/item?row_key=example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/wb/stocks/item?row_key=example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/wb/stocks/item?row_key=example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/wb/stocks/item?row_key=example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"row_key":"example","snapshot_at":"2026-11-08T19:08:31+05:00","warehouse_id":1,"warehouse_name":"example","region_name":"example","chrt_id":1,"nm_id":1,"barcode":"example","supplier_article":"example","quantity":1,"in_way_to_client":1,"in_way_from_client":1,"quantity_full":1}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:wb_stocks"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/marketplaces/wb/stocks/item","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/wb/stocks/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/wb/orders/item","scope":"wb_orders","title":"WB: заказы · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Используются сохранённые данные Core. Запрос не обращается к маркетплейсу и не обновляет снимок.","params":["row_key"],"parameters":[{"name":"row_key","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/marketplaces/wb/orders/item?row_key=example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/wb/orders/item?row_key=example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/wb/orders/item?row_key=example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/wb/orders/item?row_key=example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/wb/orders/item?row_key=example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"row_key":"example","snapshot_at":"2026-11-08T19:08:31+05:00","order_date":"2026-11-08","last_change_date":"2026-11-08","srid":"example","warehouse_name":"example","warehouse_type":"example","supplier_article":"example","nm_id":1,"barcode":"example","category":"example","subject":"example","brand":"example","tech_size":"example","income_id":1,"is_supply":true,"is_realization":true,"total_price":1.5,"discount_percent":1.5,"spp":1.5,"finished_price":1.5,"price_with_disc":1.5,"is_cancel":true,"cancel_date":"2026-11-08"}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:wb_orders"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/marketplaces/wb/orders/item","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/wb/orders/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/wb/sales/item","scope":"wb_sales","title":"WB: продажи и возвраты · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Используются сохранённые данные Core. Запрос не обращается к маркетплейсу и не обновляет снимок.","params":["row_key"],"parameters":[{"name":"row_key","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/marketplaces/wb/sales/item?row_key=example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/wb/sales/item?row_key=example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/wb/sales/item?row_key=example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/wb/sales/item?row_key=example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/wb/sales/item?row_key=example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"row_key":"example","snapshot_at":"2026-11-08T19:08:31+05:00","sale_date":"2026-11-08","last_change_date":"2026-11-08","sale_id":"example","srid":"example","g_number":"example","warehouse_name":"example","supplier_article":"example","nm_id":1,"barcode":"example","total_price":1.5,"finished_price":1.5,"price_with_disc":1.5,"for_pay":1.5,"is_return":true}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:wb_sales"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/marketplaces/wb/sales/item","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/wb/sales/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/wb/spp/item","scope":"wb_spp","title":"WB: история СПП по товарам · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Используются сохранённые данные Core. Запрос не обращается к маркетплейсу и не обновляет снимок.","params":["snapshot_date","nm_id"],"parameters":[{"name":"snapshot_date","in":"query","required":true,"type":"string","desc":"Дата снимка в формате YYYY-MM-DD."},{"name":"nm_id","in":"query","required":true,"type":"integer","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/marketplaces/wb/spp/item?snapshot_date=2026-11-08&nm_id=1","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/wb/spp/item?snapshot_date=2026-11-08&nm_id=1'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/wb/spp/item?snapshot_date=2026-11-08&nm_id=1\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/wb/spp/item?snapshot_date=2026-11-08&nm_id=1\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/wb/spp/item?snapshot_date=2026-11-08&nm_id=1');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"snapshot_date":"2026-11-08","nm_id":1,"vendor_code":"example","product_name":"example","subject_name":"example","brand_name":"example","product_group":"example","seller_price":1.5,"seller_discounted_price":1.5,"card_list_price":1.5,"card_price":1.5,"explicit_spp":1.5,"computed_spp":1.5,"effective_spp":1.5,"diff_rub":1.5,"updated_at":"2026-11-08"}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:wb_spp"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/marketplaces/wb/spp/item","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/wb/spp/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/wb/spp-groups/item","scope":"wb_spp","title":"WB: распределение СПП по группам · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Используются сохранённые данные Core. Запрос не обращается к маркетплейсу и не обновляет снимок.","params":["snapshot_date","product_group","spp_percent"],"parameters":[{"name":"snapshot_date","in":"query","required":true,"type":"string","desc":"Дата снимка в формате YYYY-MM-DD."},{"name":"product_group","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."},{"name":"spp_percent","in":"query","required":true,"type":"integer","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/marketplaces/wb/spp-groups/item?snapshot_date=2026-11-08&product_group=example&spp_percent=1","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/wb/spp-groups/item?snapshot_date=2026-11-08&product_group=example&spp_percent=1'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/wb/spp-groups/item?snapshot_date=2026-11-08&product_group=example&spp_percent=1\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/wb/spp-groups/item?snapshot_date=2026-11-08&product_group=example&spp_percent=1\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/wb/spp-groups/item?snapshot_date=2026-11-08&product_group=example&spp_percent=1');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"snapshot_date":"2026-11-08","product_group":"example","spp_percent":1,"nm_count":1,"updated_at":"2026-11-08"}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:wb_spp"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/marketplaces/wb/spp-groups/item","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/wb/spp-groups/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/wb/funnel/item","scope":"wb_analytics","title":"WB: воронка продаж · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Используются сохранённые данные Core. Запрос не обращается к маркетплейсу и не обновляет снимок.","params":["snapshot_date","period_days","nm_id"],"parameters":[{"name":"snapshot_date","in":"query","required":true,"type":"string","desc":"Дата снимка в формате YYYY-MM-DD."},{"name":"period_days","in":"query","required":true,"type":"integer","desc":"Ключ записи из списка этого ресурса."},{"name":"nm_id","in":"query","required":true,"type":"integer","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/marketplaces/wb/funnel/item?snapshot_date=2026-11-08&period_days=1&nm_id=1","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/wb/funnel/item?snapshot_date=2026-11-08&period_days=1&nm_id=1'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/wb/funnel/item?snapshot_date=2026-11-08&period_days=1&nm_id=1\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/wb/funnel/item?snapshot_date=2026-11-08&period_days=1&nm_id=1\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/wb/funnel/item?snapshot_date=2026-11-08&period_days=1&nm_id=1');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"snapshot_date":"2026-11-08","period_days":1,"nm_id":1,"title":"example","vendor_code":"example","brand_name":"example","subject_name":"example","open_count":1,"cart_count":1,"order_count":1,"order_sum":1.5,"buyout_count":1,"buyout_sum":1.5,"cancel_count":1,"cancel_sum":1.5,"avg_price":1.5,"avg_orders_count_per_day":1.5,"share_order_percent":1.5,"add_to_wishlist":1,"localization_percent":1.5,"add_to_cart_percent":1.5,"cart_to_order_percent":1.5,"buyout_percent":1.5,"currency":"example"}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:wb_analytics"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/marketplaces/wb/funnel/item","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/wb/funnel/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/wb/ads/item","scope":"wb_ads","title":"WB: рекламная аналитика · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Используются сохранённые данные Core. Запрос не обращается к маркетплейсу и не обновляет снимок.","params":["snapshot_date","advert_id"],"parameters":[{"name":"snapshot_date","in":"query","required":true,"type":"string","desc":"Дата снимка в формате YYYY-MM-DD."},{"name":"advert_id","in":"query","required":true,"type":"integer","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/marketplaces/wb/ads/item?snapshot_date=2026-11-08&advert_id=1","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/wb/ads/item?snapshot_date=2026-11-08&advert_id=1'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/wb/ads/item?snapshot_date=2026-11-08&advert_id=1\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/wb/ads/item?snapshot_date=2026-11-08&advert_id=1\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/wb/ads/item?snapshot_date=2026-11-08&advert_id=1');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"snapshot_date":"2026-11-08","advert_id":1,"advert_type":1,"advert_status":1,"campaign_name":"example","views":1,"clicks":1,"ctr":1.5,"cpc":1.5,"cpm":1.5,"orders_count":1,"atbs":1,"canceled":1,"sum_spent":1.5,"sum_price":1.5,"compare_to_date":"2026-11-08","spend_delta":1.5,"revenue_delta":1.5,"clicks_delta":1,"views_delta":1,"orders_delta":1}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:wb_ads"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/marketplaces/wb/ads/item","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/wb/ads/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/ozon/products/item","scope":"ozon_products","title":"Ozon: каталог и цены продавца · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Используются сохранённые данные Core. Запрос не обращается к маркетплейсу и не обновляет снимок.","params":["product_id"],"parameters":[{"name":"product_id","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/marketplaces/ozon/products/item?product_id=example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/ozon/products/item?product_id=example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/ozon/products/item?product_id=example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/ozon/products/item?product_id=example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/ozon/products/item?product_id=example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"product_id":"example","snapshot_at":"2026-11-08T19:08:31+05:00","offer_id":"example","sku":"example","name":"example","status":"example","visibility":"example","price":1.5,"old_price":1.5,"marketing_price":1.5,"marketing_seller_price":1.5,"min_price":1.5,"currency":"example","barcode":"example"}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:ozon_products"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/marketplaces/ozon/products/item","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/ozon/products/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/ozon/stocks/item","scope":"ozon_stocks","title":"Ozon: остатки по складам · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Используются сохранённые данные Core. Запрос не обращается к маркетплейсу и не обновляет снимок.","params":["row_key"],"parameters":[{"name":"row_key","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/marketplaces/ozon/stocks/item?row_key=example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/ozon/stocks/item?row_key=example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/ozon/stocks/item?row_key=example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/ozon/stocks/item?row_key=example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/ozon/stocks/item?row_key=example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"row_key":"example","snapshot_at":"2026-11-08T19:08:31+05:00","product_id":"example","offer_id":"example","sku":"example","warehouse_id":"example","warehouse_name":"example","warehouse_type":"example","stock_type":"example","present":1,"promised":1,"reserved":1}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:ozon_stocks"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/marketplaces/ozon/stocks/item","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/ozon/stocks/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/ozon/analytics/item","scope":"ozon_analytics","title":"Ozon: аналитика по дням · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Используются сохранённые данные Core. Запрос не обращается к маркетплейсу и не обновляет снимок.","params":["day","sku"],"parameters":[{"name":"day","in":"query","required":true,"type":"string","desc":"Дата снимка в формате YYYY-MM-DD."},{"name":"sku","in":"query","required":true,"type":"string","desc":"Артикул продукции."}],"example":"https://api.expri.space/api/public/v1/marketplaces/ozon/analytics/item?day=2026-11-08&sku=example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/ozon/analytics/item?day=2026-11-08&sku=example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/ozon/analytics/item?day=2026-11-08&sku=example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/ozon/analytics/item?day=2026-11-08&sku=example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/ozon/analytics/item?day=2026-11-08&sku=example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"day":"2026-11-08","sku":"example","offer_id":"example","product_id":"example","product_name":"example","ordered_units":1.5,"revenue":1.5,"delivered_units":1.5,"returns":1.5,"cancellations":1.5,"hits_view":1.5,"hits_tocart":1.5,"session_view":1.5,"conv_tocart_percent":1.5,"updated_at":"2026-11-08"}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:ozon_analytics"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/marketplaces/ozon/analytics/item","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/ozon/analytics/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/ozon/postings/item","scope":"ozon_postings","title":"Ozon: отправления · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Используются сохранённые данные Core. Запрос не обращается к маркетплейсу и не обновляет снимок.","params":["posting_number"],"parameters":[{"name":"posting_number","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/marketplaces/ozon/postings/item?posting_number=example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/ozon/postings/item?posting_number=example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/ozon/postings/item?posting_number=example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/ozon/postings/item?posting_number=example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/ozon/postings/item?posting_number=example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"posting_number":"example","scheme":"example","snapshot_at":"2026-11-08T19:08:31+05:00","order_id":"example","status":"example","substatus":"example","created_at":"2026-11-08T19:08:31+05:00","in_process_at":"2026-11-08T19:08:31+05:00","shipment_date":"2026-11-08","delivering_date":"2026-11-08","delivered_at":"2026-11-08T19:08:31+05:00","cancellation_at":"2026-11-08T19:08:31+05:00","warehouse_name":"example","products_count":1,"units_count":1,"total_price":1.5,"payout":1.5,"commission":1.5,"delivery_charge":1.5,"finance_ready":1}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:ozon_postings"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/marketplaces/ozon/postings/item","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/ozon/postings/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/ozon/posting-items/item","scope":"ozon_postings","title":"Ozon: состав отправлений · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Используются сохранённые данные Core. Запрос не обращается к маркетплейсу и не обновляет снимок.","params":["posting_number","row_key"],"parameters":[{"name":"posting_number","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."},{"name":"row_key","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/marketplaces/ozon/posting-items/item?posting_number=example&row_key=example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/ozon/posting-items/item?posting_number=example&row_key=example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/ozon/posting-items/item?posting_number=example&row_key=example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/ozon/posting-items/item?posting_number=example&row_key=example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/ozon/posting-items/item?posting_number=example&row_key=example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"row_key":"example","posting_number":"example","scheme":"example","offer_id":"example","sku":"example","product_id":"example","product_name":"example","quantity":1,"price":1.5,"currency":"example"}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:ozon_postings"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/marketplaces/ozon/posting-items/item","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/ozon/posting-items/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/marketplaces/ozon/finance/item","scope":"ozon_finance","title":"Ozon: финансовые операции · одна запись","description":"Возвращает одну сохранённую запись по её ключу. Используйте значения ключей из списка этого же ресурса.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Используются сохранённые данные Core. Запрос не обращается к маркетплейсу и не обновляет снимок.","params":["operation_id"],"parameters":[{"name":"operation_id","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/marketplaces/ozon/finance/item?operation_id=example","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/marketplaces/ozon/finance/item?operation_id=example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/marketplaces/ozon/finance/item?operation_id=example\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/marketplaces/ozon/finance/item?operation_id=example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/marketplaces/ozon/finance/item?operation_id=example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"operation_id":"example","operation_date":"2026-11-08","operation_type":"example","operation_name":"example","transaction_type":"example","posting_number":"example","scheme":"example","amount":1.5,"accruals_for_sale":1.5,"sale_commission":1.5,"delivery_charge":1.5,"return_delivery_charge":1.5,"services_total":1.5}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:ozon_finance"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/marketplaces/ozon/finance/item","replacement_url":"https://api.expri.space/api/public/v1/marketplaces/ozon/finance/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/stock/balance","scope":"stock","title":"Остаток артикула на складе","description":"Рассчитывает актуальный остаток конкретного SKU с учётом движений и записей заказов.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["sku","warehouse"],"parameters":[{"name":"sku","in":"query","required":true,"type":"string","desc":"Артикул продукции."},{"name":"warehouse","in":"query","required":true,"type":"string","desc":"Склад, Склад WB или Склад OZON."}],"example":"https://api.expri.space/api/public/v1/stock/balance?sku=%D0%9C_001_3&warehouse=%D0%A1%D0%BA%D0%BB%D0%B0%D0%B4","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/stock/balance?sku=%D0%9C_001_3&warehouse=%D0%A1%D0%BA%D0%BB%D0%B0%D0%B4'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/stock/balance?sku=%D0%9C_001_3&warehouse=%D0%A1%D0%BA%D0%BB%D0%B0%D0%B4\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/stock/balance?sku=%D0%9C_001_3&warehouse=%D0%A1%D0%BA%D0%BB%D0%B0%D0%B4\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/stock/balance?sku=%D0%9C_001_3&warehouse=%D0%A1%D0%BA%D0%BB%D0%B0%D0%B4');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"sku":"М_001_3","warehouse":"Склад","qty":10}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:stock"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/stock/balance","replacement_url":"https://api.expri.space/api/public/v1/stock/balance","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"POST","path":"/api/public/v1/stock-movements","scope":"stock_write","title":"Приход, расход или возврат продукции","description":"Записывает движение готовой продукции. Расход проверяет доступное количество под общей складской блокировкой.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Изменяется локальный остаток Core. Этикетки и размещение по секциям автоматически не создаются.","params":["Idempotency-Key"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"type":"string","desc":"Уникальный ключ 8–128 символов. Повтор в течение 24 часов возвращает прежний ответ без повторной операции; другое содержимое с тем же ключом — HTTP 409."}],"example":"https://api.expri.space/api/public/v1/stock-movements","examples":{"curl":"curl -X POST -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Idempotency-Key: example-stock_movement_create-001' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/stock-movements'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/stock-movements\", {\n  method: \"POST\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Idempotency-Key\": \"example-stock_movement_create-001\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"sku\": \"М_001_3\",\n    \"warehouse\": \"Склад\",\n    \"kind\": \"stock_in\",\n    \"qty\": 2,\n    \"note\": \"Приход интеграции\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"POST\",\n    \"https://api.expri.space/api/public/v1/stock-movements\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Idempotency-Key\":\"example-stock_movement_create-001\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/stock-movements');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Idempotency-Key: example-stock_movement_create-001', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"sku":"М_001_3","warehouse":"Склад","kind":"stock_in","qty":2,"note":"Приход интеграции"},"request_fields":[{"name":"sku","type":"string","required":true,"desc":"Поле sku."},{"name":"warehouse","type":"string","required":true,"desc":"Склад, Склад WB или Склад OZON."},{"name":"kind","type":"string","required":true,"desc":"stock_in — приход; stock_out — расход; stock_return — возврат."},{"name":"qty","type":"integer","required":true,"desc":"Целое количество, не меньше 1."},{"name":"note","type":"string","required":false,"desc":"Комментарий операции."}],"request_required":["sku","warehouse","kind","qty"],"response_fields":[],"responses":{"201":{"title":"Операция выполнена","body":{"ok":true,"movement_ids":[1],"sku":"М_001_3","warehouse":"Склад","qty":1,"balance":9}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:stock_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"409":{"title":"Конфликт операции","body":{"ok":false,"error":"insufficient_stock"}},"412":{"title":"Запись изменилась","body":{"ok":false,"error":"revision_conflict"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/stock-movements","replacement_url":"https://api.expri.space/api/public/v1/stock-movements","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"POST","path":"/api/public/v1/stock/transfers","scope":"stock_write","title":"Переместить продукцию между складами","description":"Фиксирует расход и приход в одной транзакции. При недостатке товара ни одно из движений не сохраняется.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Изменяется локальный остаток Core. Этикетки и размещение по секциям автоматически не создаются.","params":["Idempotency-Key"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"type":"string","desc":"Уникальный ключ 8–128 символов. Повтор в течение 24 часов возвращает прежний ответ без повторной операции; другое содержимое с тем же ключом — HTTP 409."}],"example":"https://api.expri.space/api/public/v1/stock/transfers","examples":{"curl":"curl -X POST -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Idempotency-Key: example-stock_transfer-001' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/stock/transfers'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/stock/transfers\", {\n  method: \"POST\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Idempotency-Key\": \"example-stock_transfer-001\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"sku\": \"М_001_3\",\n    \"from_warehouse\": \"Склад\",\n    \"to_warehouse\": \"Склад WB\",\n    \"qty\": 1,\n    \"note\": \"Перемещение\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"POST\",\n    \"https://api.expri.space/api/public/v1/stock/transfers\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Idempotency-Key\":\"example-stock_transfer-001\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/stock/transfers');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Idempotency-Key: example-stock_transfer-001', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"sku":"М_001_3","from_warehouse":"Склад","to_warehouse":"Склад WB","qty":1,"note":"Перемещение"},"request_fields":[{"name":"sku","type":"string","required":true,"desc":"Поле sku."},{"name":"from_warehouse","type":"string","required":true,"desc":"Склад, Склад WB или Склад OZON."},{"name":"to_warehouse","type":"string","required":true,"desc":"Склад, Склад WB или Склад OZON."},{"name":"qty","type":"integer","required":true,"desc":"Целое количество, не меньше 1."},{"name":"note","type":"string","required":false,"desc":"Комментарий операции."}],"request_required":["sku","from_warehouse","to_warehouse","qty"],"response_fields":[],"responses":{"201":{"title":"Операция выполнена","body":{"ok":true,"movement_ids":[1,2],"sku":"М_001_3","warehouse":"Склад","qty":1,"balance":9}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:stock_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"409":{"title":"Конфликт операции","body":{"ok":false,"error":"insufficient_stock"}},"412":{"title":"Запись изменилась","body":{"ok":false,"error":"revision_conflict"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/stock/transfers","replacement_url":"https://api.expri.space/api/public/v1/stock/transfers","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/materials/inks","scope":"materials","title":"Чернила · остатки","description":"Возвращает сохранённые остатки расходников и время их обновления.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":[],"parameters":[],"example":"https://api.expri.space/api/public/v1/materials/inks","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/materials/inks'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/materials/inks\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/materials/inks\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/materials/inks');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"items":[{"color":"Cyan","count":10,"updated_at":"2026-11-08T19:08:31+05:00"}]}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:materials"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/materials/inks","replacement_url":"https://api.expri.space/api/public/v1/materials/inks","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/materials/inks/item","scope":"materials","title":"Чернила · одна позиция","description":"Возвращает остаток и ревизию позиции расходника.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["color"],"parameters":[{"name":"color","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/materials/inks/item?color=Cyan","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/materials/inks/item?color=Cyan'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/materials/inks/item?color=Cyan\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/materials/inks/item?color=Cyan\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/materials/inks/item?color=Cyan');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"color":"Cyan","count":10,"updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:materials"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/materials/inks/item","replacement_url":"https://api.expri.space/api/public/v1/materials/inks/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"PUT","path":"/api/public/v1/materials/inks/item","scope":"materials_write","title":"Чернила · установить остаток","description":"Устанавливает количество одной позиции. Остальные расходники и настройки QR-кодов сохраняются.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["color","If-Match"],"parameters":[{"name":"color","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."},{"name":"If-Match","in":"header","required":false,"type":"string","desc":"Ревизия из ETag. Если запись изменилась — HTTP 412."}],"example":"https://api.expri.space/api/public/v1/materials/inks/item?color=Cyan","examples":{"curl":"curl -X PUT -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/materials/inks/item?color=Cyan'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/materials/inks/item?color=Cyan\", {\n  method: \"PUT\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"qty\": 10\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"PUT\",\n    \"https://api.expri.space/api/public/v1/materials/inks/item?color=Cyan\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/materials/inks/item?color=Cyan');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'PUT',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"qty":10},"request_fields":[{"name":"qty","type":"integer","required":true,"desc":"Неотрицательное целое количество."}],"request_required":["qty"],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"color":"Cyan","count":10,"updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:materials_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"409":{"title":"Конфликт операции","body":{"ok":false,"error":"operation_conflict"}},"412":{"title":"Запись изменилась","body":{"ok":false,"error":"revision_conflict"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/materials/inks/item","replacement_url":"https://api.expri.space/api/public/v1/materials/inks/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/materials/boxes","scope":"materials","title":"Коробки · остатки","description":"Возвращает сохранённые остатки расходников и время их обновления.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":[],"parameters":[],"example":"https://api.expri.space/api/public/v1/materials/boxes","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/materials/boxes'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/materials/boxes\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/materials/boxes\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/materials/boxes');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"items":[{"box_type":"108","qty":10,"updated_at":"2026-11-08T19:08:31+05:00"}]}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:materials"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/materials/boxes","replacement_url":"https://api.expri.space/api/public/v1/materials/boxes","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/materials/boxes/item","scope":"materials","title":"Коробки · одна позиция","description":"Возвращает остаток и ревизию позиции расходника.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["box_type"],"parameters":[{"name":"box_type","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/materials/boxes/item?box_type=108","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/materials/boxes/item?box_type=108'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/materials/boxes/item?box_type=108\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/materials/boxes/item?box_type=108\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/materials/boxes/item?box_type=108');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"box_type":"108","qty":10,"updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:materials"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/materials/boxes/item","replacement_url":"https://api.expri.space/api/public/v1/materials/boxes/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"PUT","path":"/api/public/v1/materials/boxes/item","scope":"materials_write","title":"Коробки · установить остаток","description":"Устанавливает количество одной позиции. Остальные расходники и настройки QR-кодов сохраняются.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["box_type","If-Match"],"parameters":[{"name":"box_type","in":"query","required":true,"type":"string","desc":"Ключ записи из списка этого ресурса."},{"name":"If-Match","in":"header","required":false,"type":"string","desc":"Ревизия из ETag. Если запись изменилась — HTTP 412."}],"example":"https://api.expri.space/api/public/v1/materials/boxes/item?box_type=108","examples":{"curl":"curl -X PUT -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/materials/boxes/item?box_type=108'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/materials/boxes/item?box_type=108\", {\n  method: \"PUT\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"qty\": 10\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"PUT\",\n    \"https://api.expri.space/api/public/v1/materials/boxes/item?box_type=108\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/materials/boxes/item?box_type=108');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'PUT',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"qty":10},"request_fields":[{"name":"qty","type":"integer","required":true,"desc":"Неотрицательное целое количество."}],"request_required":["qty"],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"box_type":"108","qty":10,"updated_at":"2026-11-08T19:08:31+05:00"},"revision":"\"example_revision\""}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:materials_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"409":{"title":"Конфликт операции","body":{"ok":false,"error":"operation_conflict"}},"412":{"title":"Запись изменилась","body":{"ok":false,"error":"revision_conflict"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/materials/boxes/item","replacement_url":"https://api.expri.space/api/public/v1/materials/boxes/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/materials/receipts","scope":"materials","title":"История поступлений расходников","description":"Возвращает зарегистрированные поступления материалов, чернил и коробок.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["limit"],"parameters":[{"name":"limit","in":"query","required":false,"type":"integer","desc":"От 1 до 250; по умолчанию 100."}],"example":"https://api.expri.space/api/public/v1/materials/receipts","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/materials/receipts'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/materials/receipts\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/materials/receipts\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/materials/receipts');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"items":[{"id":"receipt_example","date":"2026-11-08","items":[{"name":"Cyan","qty":10,"unit":"шт"}]}]}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:materials"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/materials/receipts","replacement_url":"https://api.expri.space/api/public/v1/materials/receipts","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/payroll/adjustments","scope":"payroll","title":"Операции по выплатам и штрафным часам","description":"Возвращает начисления, авансы, штрафы и погашения за выбранный период.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["date_from","date_to","emp_id"],"parameters":[{"name":"date_from","in":"query","required":true,"type":"string","desc":"Граница периода включительно, YYYY-MM-DD."},{"name":"date_to","in":"query","required":true,"type":"string","desc":"Граница периода включительно, YYYY-MM-DD."},{"name":"emp_id","in":"query","required":false,"type":"string","desc":"Фильтр по сотруднику."}],"example":"https://api.expri.space/api/public/v1/payroll/adjustments?date_from=2026-11-01&date_to=2026-11-30","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/payroll/adjustments?date_from=2026-11-01&date_to=2026-11-30'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/payroll/adjustments?date_from=2026-11-01&date_to=2026-11-30\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/payroll/adjustments?date_from=2026-11-01&date_to=2026-11-30\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/payroll/adjustments?date_from=2026-11-01&date_to=2026-11-30');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"items":[{"id":1,"emp_id":"employees_example","effect_date":"2026-11-08","kind":"advance","amount":1000,"note":"Аванс","created_at":"2026-11-08T19:08:31+05:00","created_by":"Public API #1"}]}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:payroll"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/payroll/adjustments","replacement_url":"https://api.expri.space/api/public/v1/payroll/adjustments","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/payroll/adjustments/item","scope":"payroll","title":"Получить операцию выплаты","description":"Возвращает одну операцию и её ревизию.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["id"],"parameters":[{"name":"id","in":"query","required":true,"type":"integer","desc":"Ключ записи из списка этого ресурса."}],"example":"https://api.expri.space/api/public/v1/payroll/adjustments/item?id=1","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/payroll/adjustments/item?id=1'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/payroll/adjustments/item?id=1\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/payroll/adjustments/item?id=1\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/payroll/adjustments/item?id=1');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"id":1,"emp_id":"employees_example","effect_date":"2026-11-08","kind":"advance","amount":1000,"note":"Аванс","created_at":"2026-11-08T19:08:31+05:00","created_by":"Public API #1"},"revision":"\"example_revision\""}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:payroll"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/payroll/adjustments/item","replacement_url":"https://api.expri.space/api/public/v1/payroll/adjustments/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"POST","path":"/api/public/v1/payroll/adjustments","scope":"payroll_write","title":"Начислить премию, аванс или штрафные часы","description":"Записывает операцию со свободной датой. penalty_worked частично погашает штрафные часы в указанном периоде и проверяет остаток.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений. Суммы премий и авансов — в рублях; fine и penalty_worked — в часах. Для погашения передайте date_from и date_to; больше остатка погасить нельзя. Сотрудник получает уведомление о штрафе и погашении при наличии связанного аккаунта.","params":["Idempotency-Key"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"type":"string","desc":"Уникальный ключ 8–128 символов. Повтор в течение 24 часов возвращает прежний ответ без повторной операции; другое содержимое с тем же ключом — HTTP 409."}],"example":"https://api.expri.space/api/public/v1/payroll/adjustments","examples":{"curl":"curl -X POST -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Idempotency-Key: example-payroll_adjustment_create-001' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/payroll/adjustments'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/payroll/adjustments\", {\n  method: \"POST\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Idempotency-Key\": \"example-payroll_adjustment_create-001\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"emp_id\": \"employees_example\",\n    \"effect_date\": \"2026-11-08\",\n    \"kind\": \"advance\",\n    \"amount\": 1000,\n    \"note\": \"Аванс\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"POST\",\n    \"https://api.expri.space/api/public/v1/payroll/adjustments\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Idempotency-Key\":\"example-payroll_adjustment_create-001\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/payroll/adjustments');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Idempotency-Key: example-payroll_adjustment_create-001', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"emp_id":"employees_example","effect_date":"2026-11-08","kind":"advance","amount":1000,"note":"Аванс"},"request_fields":[{"name":"emp_id","type":"string","required":true,"desc":"Идентификатор сотрудника."},{"name":"effect_date","type":"string","required":true,"desc":"Дата YYYY-MM-DD."},{"name":"kind","type":"string","required":true,"desc":"bonus — премия, advance — аванс, fine — штрафные часы, penalty_worked — погашение часов."},{"name":"amount","type":"number","required":true,"desc":"Число, не меньше нуля."},{"name":"note","type":"string","required":false,"desc":"Комментарий операции."},{"name":"date_from","type":"string","required":false,"desc":"Дата YYYY-MM-DD."},{"name":"date_to","type":"string","required":false,"desc":"Дата YYYY-MM-DD."}],"request_required":["emp_id","effect_date","kind","amount"],"response_fields":[],"responses":{"201":{"title":"Операция выполнена","body":{"ok":true,"item":{"id":1,"emp_id":"employees_example","kind":"advance","amount":1000,"date":"2026-11-08","note":"Аванс","remaining":0}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:payroll_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"409":{"title":"Конфликт операции","body":{"ok":false,"error":"operation_conflict"}},"412":{"title":"Запись изменилась","body":{"ok":false,"error":"revision_conflict"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/payroll/adjustments","replacement_url":"https://api.expri.space/api/public/v1/payroll/adjustments","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"DELETE","path":"/api/public/v1/payroll/adjustments/item","scope":"payroll_write","title":"Удалить операцию выплаты","description":"Удаляет ошибочную операцию. Штраф с уже погашенными часами нельзя удалить, если это создаст отрицательный остаток штрафных часов за месяц.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["id","If-Match"],"parameters":[{"name":"id","in":"query","required":true,"type":"integer","desc":"Ключ записи из списка этого ресурса."},{"name":"If-Match","in":"header","required":false,"type":"string","desc":"Ревизия из ETag. Если запись изменилась — HTTP 412."}],"example":"https://api.expri.space/api/public/v1/payroll/adjustments/item?id=1","examples":{"curl":"curl -X DELETE -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/payroll/adjustments/item?id=1'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/payroll/adjustments/item?id=1\", {\n  method: \"DELETE\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"DELETE\",\n    \"https://api.expri.space/api/public/v1/payroll/adjustments/item?id=1\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/payroll/adjustments/item?id=1');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'DELETE',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"deleted":true,"id":1}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:payroll_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"409":{"title":"Конфликт операции","body":{"ok":false,"error":"operation_conflict"}},"412":{"title":"Запись изменилась","body":{"ok":false,"error":"revision_conflict"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/payroll/adjustments/item","replacement_url":"https://api.expri.space/api/public/v1/payroll/adjustments/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"POST","path":"/api/public/v1/employees/rates","scope":"payroll_write","title":"Назначить новую ставку сотруднику","description":"Добавляет ставку с датой начала действия и закрывает предыдущую. Новая дата должна быть позже последней сохранённой ставки.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["emp_id","Idempotency-Key"],"parameters":[{"name":"emp_id","in":"query","required":true,"type":"string","desc":"Идентификатор сотрудника."},{"name":"Idempotency-Key","in":"header","required":true,"type":"string","desc":"Уникальный ключ 8–128 символов. Повтор в течение 24 часов возвращает прежний ответ без повторной операции; другое содержимое с тем же ключом — HTTP 409."}],"example":"https://api.expri.space/api/public/v1/employees/rates?emp_id=employees_example","examples":{"curl":"curl -X POST -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Idempotency-Key: example-employee_rate_create-001' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/employees/rates?emp_id=employees_example'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/employees/rates?emp_id=employees_example\", {\n  method: \"POST\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Idempotency-Key\": \"example-employee_rate_create-001\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"hour_rate\": 250,\n    \"effective_from\": \"2026-11-08\",\n    \"note\": \"Новая ставка\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"POST\",\n    \"https://api.expri.space/api/public/v1/employees/rates?emp_id=employees_example\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Idempotency-Key\":\"example-employee_rate_create-001\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/employees/rates?emp_id=employees_example');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Idempotency-Key: example-employee_rate_create-001', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"hour_rate":250,"effective_from":"2026-11-08","note":"Новая ставка"},"request_fields":[{"name":"hour_rate","type":"number","required":true,"desc":"Число, не меньше нуля."},{"name":"effective_from","type":"string","required":true,"desc":"Дата YYYY-MM-DD."},{"name":"note","type":"string","required":false,"desc":"Комментарий операции."}],"request_required":["hour_rate","effective_from"],"response_fields":[],"responses":{"201":{"title":"Операция выполнена","body":{"ok":true,"item":{"id":1,"emp_id":"employees_example","hour_rate":250,"effective_from":"2026-11-08","effective_to":"","note":"Новая ставка","created_by":"Public API #1","created_at":"2026-11-08T19:08:31+05:00"}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:payroll_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"409":{"title":"Конфликт операции","body":{"ok":false,"error":"operation_conflict"}},"412":{"title":"Запись изменилась","body":{"ok":false,"error":"revision_conflict"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/employees/rates","replacement_url":"https://api.expri.space/api/public/v1/employees/rates","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/payroll/employee","scope":"payroll","title":"Расчёт выплаты сотрудника","description":"Возвращает расчёт часов и выплаты выбранного сотрудника за указанный период.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["emp_id","date_from","date_to"],"parameters":[{"name":"emp_id","in":"query","required":true,"type":"string","desc":"Идентификатор сотрудника."},{"name":"date_from","in":"query","required":true,"type":"string","desc":"Граница периода включительно, YYYY-MM-DD."},{"name":"date_to","in":"query","required":true,"type":"string","desc":"Граница периода включительно, YYYY-MM-DD."}],"example":"https://api.expri.space/api/public/v1/payroll/employee?emp_id=employees_example&date_from=2026-11-01&date_to=2026-11-30","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/payroll/employee?emp_id=employees_example&date_from=2026-11-01&date_to=2026-11-30'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/payroll/employee?emp_id=employees_example&date_from=2026-11-01&date_to=2026-11-30\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/payroll/employee?emp_id=employees_example&date_from=2026-11-01&date_to=2026-11-30\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/payroll/employee?emp_id=employees_example&date_from=2026-11-01&date_to=2026-11-30');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"items":[{"employee":{"emp_id":"employees_example","name":"Иван","role":"Печатник"},"scheduled_hours":12,"required_hours":12,"penalty_hours":0,"gross_amount":3000,"adjustments_amount":-1000,"net_amount":2000,"payout_status":"unpaid"}]}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:payroll"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/payroll/employee","replacement_url":"https://api.expri.space/api/public/v1/payroll/employee","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/employees/attendance","scope":"schedule","title":"Фактические отметки сотрудника","description":"Возвращает реальные события входа и выхода за период; плановый график не подменяет фактические отметки.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["emp_id","date_from","date_to","limit"],"parameters":[{"name":"emp_id","in":"query","required":true,"type":"string","desc":"Идентификатор сотрудника."},{"name":"date_from","in":"query","required":true,"type":"string","desc":"Граница периода включительно, YYYY-MM-DD."},{"name":"date_to","in":"query","required":true,"type":"string","desc":"Граница периода включительно, YYYY-MM-DD."},{"name":"limit","in":"query","required":false,"type":"integer","desc":"От 1 до 250; по умолчанию 100."}],"example":"https://api.expri.space/api/public/v1/employees/attendance?emp_id=employees_example&date_from=2026-11-01&date_to=2026-11-30","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/employees/attendance?emp_id=employees_example&date_from=2026-11-01&date_to=2026-11-30'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/employees/attendance?emp_id=employees_example&date_from=2026-11-01&date_to=2026-11-30\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/employees/attendance?emp_id=employees_example&date_from=2026-11-01&date_to=2026-11-30\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/employees/attendance?emp_id=employees_example&date_from=2026-11-01&date_to=2026-11-30');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"items":[{"id":1,"emp_id":"employees_example","ts":"2026-11-08T19:08:31+05:00","date_key":"2026-11-08","event":{"type":"check_in","area_m2":12.5}}]}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:schedule"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/employees/attendance","replacement_url":"https://api.expri.space/api/public/v1/employees/attendance","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/employees/archive","scope":"archive","title":"Производственные события сотрудника","description":"Возвращает события производства выбранного сотрудника за период.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["emp_id","date_from","date_to","limit"],"parameters":[{"name":"emp_id","in":"query","required":true,"type":"string","desc":"Идентификатор сотрудника."},{"name":"date_from","in":"query","required":true,"type":"string","desc":"Граница периода включительно, YYYY-MM-DD."},{"name":"date_to","in":"query","required":true,"type":"string","desc":"Граница периода включительно, YYYY-MM-DD."},{"name":"limit","in":"query","required":false,"type":"integer","desc":"От 1 до 250; по умолчанию 100."}],"example":"https://api.expri.space/api/public/v1/employees/archive?emp_id=employees_example&date_from=2026-11-01&date_to=2026-11-30","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/employees/archive?emp_id=employees_example&date_from=2026-11-01&date_to=2026-11-30'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/employees/archive?emp_id=employees_example&date_from=2026-11-01&date_to=2026-11-30\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/employees/archive?emp_id=employees_example&date_from=2026-11-01&date_to=2026-11-30\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/employees/archive?emp_id=employees_example&date_from=2026-11-01&date_to=2026-11-30');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"items":[{"id":1,"emp_id":"employees_example","ts":"2026-11-08T19:08:31+05:00","date_key":"2026-11-08","event":{"type":"print","area_m2":12.5}}]}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:archive"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/employees/archive","replacement_url":"https://api.expri.space/api/public/v1/employees/archive","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/ink/skus","scope":"ink","title":"Каталог норм расхода чернил","description":"Возвращает сохранённые нормы, профиль и размеры производственных SKU.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["limit","q"],"parameters":[{"name":"limit","in":"query","required":false,"type":"integer","desc":"От 1 до 250; по умолчанию 100."},{"name":"q","in":"query","required":false,"type":"string","desc":"Поиск по артикулу."}],"example":"https://api.expri.space/api/public/v1/ink/skus","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/ink/skus'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/ink/skus\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/ink/skus\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/ink/skus');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"items":[{"sku_key":"М_001_416Х270","sku":"М_001_416х270","ink_total_ml":3.6,"area_m2":11.232,"ink_ml_m2":0.320513,"category":"wallpaper","profile":"","updated_at":"2026-11-08T19:08:31+05:00"}]}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:ink"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/ink/skus","replacement_url":"https://api.expri.space/api/public/v1/ink/skus","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"GET","path":"/api/public/v1/ink/skus/item","scope":"ink","title":"Норма расхода чернил для SKU","description":"Возвращает норму расхода и историю измерений одного SKU.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["sku","limit"],"parameters":[{"name":"sku","in":"query","required":true,"type":"string","desc":"Артикул продукции."},{"name":"limit","in":"query","required":false,"type":"integer","desc":"От 1 до 250; по умолчанию 100."}],"example":"https://api.expri.space/api/public/v1/ink/skus/item?sku=%D0%9C_001_416%D1%85270","examples":{"curl":"curl -H 'X-Public-Api-Key: sorld_core_live_your_token_here' 'https://api.expri.space/api/public/v1/ink/skus/item?sku=%D0%9C_001_416%D1%85270'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/ink/skus/item?sku=%D0%9C_001_416%D1%85270\", {\n  method: \"GET\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\"\n}\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\n\nresponse = requests.request(\n    \"GET\",\n    \"https://api.expri.space/api/public/v1/ink/skus/item?sku=%D0%9C_001_416%D1%85270\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\"},\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/ink/skus/item?sku=%D0%9C_001_416%D1%85270');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'GET',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":null,"request_fields":[],"request_required":[],"response_fields":[],"responses":{"200":{"title":"Успешный ответ","body":{"ok":true,"item":{"sku_key":"М_001_416Х270","sku":"М_001_416х270","ink_total_ml":3.6,"area_m2":11.232,"ink_ml_m2":0.320513,"category":"wallpaper","profile":"","updated_at":"2026-11-08T19:08:31+05:00"},"history":[{"id":1,"ink_c_ml":1.2,"ink_m_ml":1.4,"ink_y_ml":0.8,"ink_k_ml":0.2,"measured_at":"2026-11-08T19:08:31+05:00"}]}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:ink"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 1 сек.","retry_after":1,"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/ink/skus/item","replacement_url":"https://api.expri.space/api/public/v1/ink/skus/item","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":60,"period_seconds":60,"burst":2,"group":"core_read","label":"Чтение Core","interval_ms":1000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}},{"method":"POST","path":"/api/public/v1/ink-measurements","scope":"ink_write","title":"Зарегистрировать измерение расхода чернил","description":"Сохраняет измерение обоев и обновляет текущую норму SKU через штатный учёт чернил Core. Размер определяется из SKU.","note":"Организация определяется ключом. Данные и действия доступны только в пределах его разрешений.","params":["Idempotency-Key"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"type":"string","desc":"Уникальный ключ 8–128 символов. Повтор в течение 24 часов возвращает прежний ответ без повторной операции; другое содержимое с тем же ключом — HTTP 409."}],"example":"https://api.expri.space/api/public/v1/ink-measurements","examples":{"curl":"curl -X POST -H 'X-Public-Api-Key: sorld_core_live_your_token_here' -H 'Idempotency-Key: example-ink_measurement_create-001' -H 'Content-Type: application/json' --data-binary @request.json 'https://api.expri.space/api/public/v1/ink-measurements'","javascript":"const response = await fetch(\"https://api.expri.space/api/public/v1/ink-measurements\", {\n  method: \"POST\",\n  headers: {\n    \"X-Public-Api-Key\": \"sorld_core_live_your_token_here\",\n    \"Idempotency-Key\": \"example-ink_measurement_create-001\",\n    \"Content-Type\": \"application/json\"\n},\n  body: JSON.stringify({\n    \"sku\": \"М_001_416х270\",\n    \"ink_c_ml\": 1.2,\n    \"ink_m_ml\": 1.4,\n    \"ink_y_ml\": 0.8,\n    \"ink_k_ml\": 0.2,\n    \"profile\": \"\",\n    \"comment\": \"Замер интеграции\"\n})\n});\n\nconst data = await response.json();\nif (!response.ok || data.ok === false) throw new Error(JSON.stringify(data));\nconsole.log(data);","python":"import requests\nimport json\n\nwith open(\"request.json\", encoding=\"utf-8\") as file:\n    payload = json.load(file)\n\nresponse = requests.request(\n    \"POST\",\n    \"https://api.expri.space/api/public/v1/ink-measurements\",\n    headers={\"X-Public-Api-Key\":\"sorld_core_live_your_token_here\",\"Idempotency-Key\":\"example-ink_measurement_create-001\",\"Content-Type\":\"application/json\"},\n    json=payload,\n    timeout=30,\n)\nresponse.raise_for_status()\nprint(response.json())","php":"$ch = curl_init('https://api.expri.space/api/public/v1/ink-measurements');\ncurl_setopt_array($ch, [\n    CURLOPT_CUSTOMREQUEST => 'POST',\n    CURLOPT_HTTPHEADER => ['X-Public-Api-Key: sorld_core_live_your_token_here', 'Idempotency-Key: example-ink_measurement_create-001', 'Content-Type: application/json'],\n    CURLOPT_RETURNTRANSFER => true,\n    CURLOPT_TIMEOUT => 30,\n    CURLOPT_POSTFIELDS => file_get_contents('request.json'),\n]);\n$body = curl_exec($ch);\n$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);\ncurl_close($ch);\necho $status . PHP_EOL;\necho $body;"},"request_body":{"sku":"М_001_416х270","ink_c_ml":1.2,"ink_m_ml":1.4,"ink_y_ml":0.8,"ink_k_ml":0.2,"profile":"","comment":"Замер интеграции"},"request_fields":[{"name":"sku","type":"string","required":true,"desc":"Поле sku."},{"name":"ink_c_ml","type":"number","required":true,"desc":"Число, не меньше нуля."},{"name":"ink_m_ml","type":"number","required":true,"desc":"Число, не меньше нуля."},{"name":"ink_y_ml","type":"number","required":true,"desc":"Число, не меньше нуля."},{"name":"ink_k_ml","type":"number","required":true,"desc":"Число, не меньше нуля."},{"name":"profile","type":"string","required":false,"desc":"Поле profile."},{"name":"media_name","type":"string","required":false,"desc":"Поле media_name."},{"name":"passes","type":"integer","required":false,"desc":"Поле passes."},{"name":"comment","type":"string","required":false,"desc":"Комментарий операции."},{"name":"measured_at","type":"string","required":false,"desc":"RFC 3339: дата и время с часовым поясом."}],"request_required":["sku","ink_c_ml","ink_m_ml","ink_y_ml","ink_k_ml"],"response_fields":[],"responses":{"201":{"title":"Операция выполнена","body":{"ok":true,"result":{"status":"created","measurement_id":1,"event_id":"api_example","sku":{"sku_key":"М_001_416Х270","sku":"М_001_416х270","ink_total_ml":3.6,"area_m2":11.232,"ink_ml_m2":0.320513,"category":"wallpaper","profile":"","updated_at":"2026-11-08T19:08:31+05:00"}}}},"401":{"title":"Недействительный ключ","body":{"ok":false,"error":"public_api_key_invalid"}},"403":{"title":"Нет нужного разрешения","body":{"ok":false,"error":"public_api_scope_denied:ink_write"}},"404":{"title":"Запись не найдена","body":{"ok":false,"error":"item_not_found"}},"422":{"title":"Некорректные параметры","body":{"ok":false,"error":"invalid_request"}},"409":{"title":"Конфликт операции","body":{"ok":false,"error":"operation_conflict"}},"412":{"title":"Запись изменилась","body":{"ok":false,"error":"revision_conflict"}},"429":{"title":"Превышен лимит запросов","body":{"ok":false,"error":"rate_limit_exceeded","message":"Превышен лимит запросов. Повторите запрос через 5 сек.","retry_after":5,"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}},"503":{"title":"Проверка лимита временно недоступна","body":{"ok":false,"error":"rate_limit_unavailable","message":"Не удалось проверить лимит запросов. Повторите запрос позже.","retry_after":1}}},"deprecated":false,"lifecycle":{"status":"active","deprecated":false,"deprecated_at":null,"sunset_at":null,"timezone":"Europe/Moscow","replacement":"","message":""},"legacy_address":{"status":"not_available","deprecated":false,"url":"https://expri-server.ru/api/public/v1/ink-measurements","replacement_url":"https://api.expri.space/api/public/v1/ink-measurements","deprecated_at":"2026-10-12T00:00:00+03:00","sunset_at":null,"timezone":"Europe/Moscow","extension_compatibility":false},"limits":{"requests":12,"period_seconds":60,"burst":2,"group":"core_write","label":"Запись Core","interval_ms":5000,"scope":"Одна организация, все ключи","shared_methods":true,"shared_domains":true}}]}