Товары
Товары с вариантами, разделами, брендами и фото.
Что важно знать
- Цена, артикул и остаток — у варианта.
"stock": null— склад не ведётся, количество не ограничено. - Фото — ссылками: магазин скачивает их сам.
Список товаров
GET/productsправо products:read
Страницы по возрастанию номера. Чтобы забрать только изменения, передавайте updated_since со временем прошлой выгрузки.
Параметры
| Параметр | Где | Тип | Описание |
|---|---|---|---|
limit | в адресе | целое | Сколько объектов вернуть, от 1 до 250. По умолчанию 50. |
cursor | в адресе | строка | Значение next_cursor из прошлого ответа. |
updated_since | в адресе | строка | Только объекты, изменённые не раньше этого времени. ISO 8601, например 2026-10-28T00:00:00Z или 2026-10-28T00:00:00+03:00. В адресе запроса знак + кодируйте как %2B (иначе он станет пробелом) либо пишите время в UTC с буквой Z. |
category_id | в адресе | целое | Только товары этого раздела. |
sku | в адресе | строка | Только товары с вариантом, у которого этот артикул. |
visible | в адресе | строка (0, 1, true, false) | Только видимые (1, true) или скрытые (0, false). |
Пример запроса
curl -G https://api.okeysait.ru/v1/products \
-H "Authorization: Bearer $OKEANO_KEY" \
--data-urlencode "updated_since=2026-10-30T09:00:00+03:00" \
--data-urlencode "limit=100"<?php
$ch = curl_init('https://api.okeysait.ru/v1/products?' . http_build_query([
'updated_since' => '2026-10-30T09:00:00+03:00',
'limit' => '100',
]));
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.get(
"https://api.okeysait.ru/v1/products",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
params={
"updated_since": "2026-10-30T09:00:00+03:00",
"limit": "100",
},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const url = new URL("https://api.okeysait.ru/v1/products");
url.search = new URLSearchParams({
updated_since: "2026-10-30T09:00:00+03:00",
limit: "100",
});
const res = await fetch(url, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
},
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/products?updated_since=2026-10-30T09%3A00%3A00%2B03%3A00&limit=100");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Ответ = Соединение.Получить(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
)
func main() {
q := url.Values{}
q.Set("updated_since", "2026-10-30T09:00:00+03:00")
q.Set("limit", "100")
req, err := http.NewRequest("GET", "https://api.okeysait.ru/v1/products?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 200
{
"data": [
{
"id": 101,
"name": "Свеча «Лес»",
"slug": "svecha-les",
"url": "https://myshop.okeysait.ru/products/svecha-les",
"visible": true,
"featured": false,
"brand_id": null,
"annotation": "",
"body": "",
"category_ids": [
3
],
"images": [
"https://myshop.okeysait.ru/files/originals/products/forest.jpg"
],
"variants": [
{
"id": 77,
"sku": "CANDLE-F",
"name": "",
"price": "1290.00",
"compare_price": null,
"stock": 25
}
],
"currency": "RUB",
"created_at": "2026-10-30T09:12:00+00:00",
"updated_at": "2026-10-30T09:12:00+00:00"
}
],
"next_cursor": null
}Другие ответы: 400, 401, 403, 429 — коды ошибок.
Создать товар
POST/productsправо products:write
Нужны name и хотя бы один вариант. Артикул, цена и остаток — у варианта. Фото передаются ссылками, магазин скачивает их сам. Когда лимит товаров тарифа исчерпан — 409 products_limit.
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
name | строка | |
slug | строка | |
visible | true / false | |
featured | true / false | |
brand_id | целое или null | Номер бренда; null или 0 — без бренда. |
annotation | строка | |
body | строка | |
category_ids | массив: целое | Разделы товара. Заменяет прежний список. |
images | массив: строка | Ссылки http(s)://…. Заменяет прежний список фото. |
variants | массив: объект | Варианты. Заменяет прежний список целиком; пустой список не принимается. |
variants[].id | целое | |
variants[].sku | строка | |
variants[].name | строка | |
variants[].price | строка или число | Число или строка, от 0 до 1 000 000 000. |
variants[].compare_price | строка или число или null | Старая цена; null или 0 убирают её. |
variants[].stock | целое или null | Целое от 0 до 1 000 000 000; null — склад не ведётся. |
Пример запроса
curl -X POST https://api.okeysait.ru/v1/products \
-H "Authorization: Bearer $OKEANO_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Свеча «Лес»",
"visible": true,
"category_ids": [
3
],
"images": [
"https://example.com/forest.jpg"
],
"variants": [
{
"sku": "CANDLE-F",
"price": "1290.00",
"stock": 25
}
]
}'<?php
$ch = curl_init('https://api.okeysait.ru/v1/products');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Свеча «Лес»',
'visible' => true,
'category_ids' => [3],
'images' => ['https://example.com/forest.jpg'],
'variants' => [
['sku' => 'CANDLE-F', 'price' => '1290.00', 'stock' => 25],
],
], JSON_UNESCAPED_UNICODE),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.post(
"https://api.okeysait.ru/v1/products",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
json={
"name": "Свеча «Лес»",
"visible": True,
"category_ids": [3],
"images": ["https://example.com/forest.jpg"],
"variants": [
{"sku": "CANDLE-F", "price": "1290.00", "stock": 25},
],
},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const res = await fetch("https://api.okeysait.ru/v1/products", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
name: "Свеча «Лес»",
visible: true,
category_ids: [3],
images: ["https://example.com/forest.jpg"],
variants: [
{ sku: "CANDLE-F", price: "1290.00", stock: 25 },
],
}),
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/products");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Данные = Новый Структура;
Данные.Вставить("name", "Свеча «Лес»");
Данные.Вставить("visible", Истина);
Разделы = Новый Массив;
Разделы.Добавить(3);
Данные.Вставить("category_ids", Разделы);
Фото = Новый Массив;
Фото.Добавить("https://example.com/forest.jpg");
Данные.Вставить("images", Фото);
Варианты = Новый Массив;
Вариант = Новый Структура;
Вариант.Вставить("sku", "CANDLE-F");
Вариант.Вставить("price", "1290.00");
Вариант.Вставить("stock", 25);
Варианты.Добавить(Вариант);
Данные.Вставить("variants", Варианты);
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись, Данные);
Запрос.УстановитьТелоИзСтроки(Запись.Закрыть(), КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"name": "Свеча «Лес»",
"visible": true,
"category_ids": [
3
],
"images": [
"https://example.com/forest.jpg"
],
"variants": [
{
"sku": "CANDLE-F",
"price": "1290.00",
"stock": 25
}
]
}`)
req, err := http.NewRequest("POST", "https://api.okeysait.ru/v1/products", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 201
{
"id": 101,
"name": "Свеча «Лес»",
"slug": "svecha-les",
"url": "https://myshop.okeysait.ru/products/svecha-les",
"visible": true,
"featured": false,
"brand_id": null,
"annotation": "",
"body": "",
"category_ids": [
3
],
"images": [
"https://myshop.okeysait.ru/files/originals/products/forest.jpg"
],
"variants": [
{
"id": 77,
"sku": "CANDLE-F",
"name": "",
"price": "1290.00",
"compare_price": null,
"stock": 25
}
],
"currency": "RUB",
"created_at": "2026-10-30T09:12:00+00:00",
"updated_at": "2026-10-30T09:12:00+00:00"
}Другие ответы: 400, 401, 403, 409, 422, 429 — коды ошибок.
Товар
GET/products/{id}право products:read
Параметры
| Параметр | Где | Тип | Описание |
|---|---|---|---|
id обязателен | в пути | целое | Номер объекта. |
Пример запроса
curl https://api.okeysait.ru/v1/products/101 \
-H "Authorization: Bearer $OKEANO_KEY"<?php
$ch = curl_init('https://api.okeysait.ru/v1/products/101');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.get(
"https://api.okeysait.ru/v1/products/101",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const res = await fetch("https://api.okeysait.ru/v1/products/101", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
},
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/products/101");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Ответ = Соединение.Получить(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://api.okeysait.ru/v1/products/101", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 200
{
"id": 101,
"name": "Свеча «Лес»",
"slug": "svecha-les",
"url": "https://myshop.okeysait.ru/products/svecha-les",
"visible": true,
"featured": false,
"brand_id": null,
"annotation": "",
"body": "",
"category_ids": [
3
],
"images": [
"https://myshop.okeysait.ru/files/originals/products/forest.jpg"
],
"variants": [
{
"id": 77,
"sku": "CANDLE-F",
"name": "",
"price": "1290.00",
"compare_price": null,
"stock": 25
}
],
"currency": "RUB",
"created_at": "2026-10-30T09:12:00+00:00",
"updated_at": "2026-10-30T09:12:00+00:00"
}Другие ответы: 401, 403, 404, 429 — коды ошибок.
Изменить товар
PATCH/products/{id}право products:write
Передайте только те поля, которые меняются.
Списки заменяют прежние целиком:
variants— вариант сidобновляется (только переданные поля), вариант безidсоздаётся, варианты, которых нет в списке, удаляются. Пустой список[]не принимается (variants_required).category_ids— товар остаётся ровно в этих разделах;[]убирает из всех.images— остаются фото с этими ссылками, остальные удаляются, новые добавляются;[]убирает все.
Параметры
| Параметр | Где | Тип | Описание |
|---|---|---|---|
id обязателен | в пути | целое | Номер объекта. |
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
name | строка | |
slug | строка | |
visible | true / false | |
featured | true / false | |
brand_id | целое или null | Номер бренда; null или 0 — без бренда. |
annotation | строка | |
body | строка | |
category_ids | массив: целое | Разделы товара. Заменяет прежний список. |
images | массив: строка | Ссылки http(s)://…. Заменяет прежний список фото. |
variants | массив: объект | Варианты. Заменяет прежний список целиком; пустой список не принимается. |
variants[].id | целое | |
variants[].sku | строка | |
variants[].name | строка | |
variants[].price | строка или число | Число или строка, от 0 до 1 000 000 000. |
variants[].compare_price | строка или число или null | Старая цена; null или 0 убирают её. |
variants[].stock | целое или null | Целое от 0 до 1 000 000 000; null — склад не ведётся. |
Пример запроса
curl -X PATCH https://api.okeysait.ru/v1/products/101 \
-H "Authorization: Bearer $OKEANO_KEY" \
-H "Content-Type: application/json" \
-d '{
"visible": false,
"variants": [
{
"id": 77,
"price": "1190.00",
"stock": 20
}
]
}'<?php
$ch = curl_init('https://api.okeysait.ru/v1/products/101');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'visible' => false,
'variants' => [
['id' => 77, 'price' => '1190.00', 'stock' => 20],
],
], JSON_UNESCAPED_UNICODE),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.patch(
"https://api.okeysait.ru/v1/products/101",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
json={
"visible": False,
"variants": [
{"id": 77, "price": "1190.00", "stock": 20},
],
},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const res = await fetch("https://api.okeysait.ru/v1/products/101", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
visible: false,
variants: [
{ id: 77, price: "1190.00", stock: 20 },
],
}),
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/products/101");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Данные = Новый Структура;
Данные.Вставить("visible", Ложь);
Варианты = Новый Массив;
Вариант = Новый Структура;
Вариант.Вставить("id", 77);
Вариант.Вставить("price", "1190.00");
Вариант.Вставить("stock", 20);
Варианты.Добавить(Вариант);
Данные.Вставить("variants", Варианты);
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись, Данные);
Запрос.УстановитьТелоИзСтроки(Запись.Закрыть(), КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ = Соединение.ВызватьHTTPМетод("PATCH", Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"visible": false,
"variants": [
{
"id": 77,
"price": "1190.00",
"stock": 20
}
]
}`)
req, err := http.NewRequest("PATCH", "https://api.okeysait.ru/v1/products/101", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 200
{
"id": 101,
"name": "Свеча «Лес»",
"slug": "svecha-les",
"url": "https://myshop.okeysait.ru/products/svecha-les",
"visible": true,
"featured": false,
"brand_id": null,
"annotation": "",
"body": "",
"category_ids": [
3
],
"images": [
"https://myshop.okeysait.ru/files/originals/products/forest.jpg"
],
"variants": [
{
"id": 77,
"sku": "CANDLE-F",
"name": "",
"price": "1290.00",
"compare_price": null,
"stock": 25
}
],
"currency": "RUB",
"created_at": "2026-10-30T09:12:00+00:00",
"updated_at": "2026-10-30T09:12:00+00:00"
}Другие ответы: 400, 401, 403, 404, 422, 429 — коды ошибок.
Удалить товар
DELETE/products/{id}право products:write
Удаление необратимо. Приходит событие product.deleted.
Параметры
| Параметр | Где | Тип | Описание |
|---|---|---|---|
id обязателен | в пути | целое | Номер объекта. |
Пример запроса
curl -X DELETE https://api.okeysait.ru/v1/products/101 \
-H "Authorization: Bearer $OKEANO_KEY"<?php
$ch = curl_init('https://api.okeysait.ru/v1/products/101');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.delete(
"https://api.okeysait.ru/v1/products/101",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const res = await fetch("https://api.okeysait.ru/v1/products/101", {
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
},
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/products/101");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Ответ = Соединение.Удалить(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("DELETE", "https://api.okeysait.ru/v1/products/101", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 200
{
"deleted": true,
"id": 101
}Другие ответы: 401, 403, 404, 429 — коды ошибок.
Разделы и бренды
Список разделов
GET/categoriesправо products:read
Параметры
| Параметр | Где | Тип | Описание |
|---|---|---|---|
limit | в адресе | целое | Сколько объектов вернуть, от 1 до 250. По умолчанию 50. |
cursor | в адресе | строка | Значение next_cursor из прошлого ответа. |
Пример запроса
curl -G https://api.okeysait.ru/v1/categories \
-H "Authorization: Bearer $OKEANO_KEY" \
--data-urlencode "limit=250"<?php
$ch = curl_init('https://api.okeysait.ru/v1/categories?' . http_build_query(['limit' => '250']));
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.get(
"https://api.okeysait.ru/v1/categories",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
params={"limit": "250"},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const url = new URL("https://api.okeysait.ru/v1/categories");
url.search = new URLSearchParams({ limit: "250" });
const res = await fetch(url, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
},
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/categories?limit=250");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Ответ = Соединение.Получить(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
)
func main() {
q := url.Values{}
q.Set("limit", "250")
req, err := http.NewRequest("GET", "https://api.okeysait.ru/v1/categories?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 200
{
"data": [
{
"id": 3,
"parent_id": null,
"name": "Свечи",
"slug": "svechi",
"visible": true,
"position": 3
}
],
"next_cursor": null
}Другие ответы: 400, 401, 403, 429 — коды ошибок.
Создать раздел
POST/categoriesправо products:write
Нужно name. slug — собственная часть адреса раздела, например svechi; полный адрес с родителями (/catalog/odezhda/svechi) магазин строит сам. Без slug он образуется из названия латиницей; занятый slug получает числовой хвост. Родитель не найден — 422 bad_parent. Лимит разделов тарифа исчерпан — 409 categories_limit.
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
name | строка | |
slug | строка | |
parent_id | целое или null | Родительский раздел; null или 0 — корневой. |
visible | true / false | |
position | целое |
Пример запроса
curl -X POST https://api.okeysait.ru/v1/categories \
-H "Authorization: Bearer $OKEANO_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Свечи",
"parent_id": null,
"slug": "svechi"
}'<?php
$ch = curl_init('https://api.okeysait.ru/v1/categories');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['name' => 'Свечи', 'parent_id' => null, 'slug' => 'svechi'], JSON_UNESCAPED_UNICODE),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.post(
"https://api.okeysait.ru/v1/categories",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
json={"name": "Свечи", "parent_id": None, "slug": "svechi"},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const res = await fetch("https://api.okeysait.ru/v1/categories", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ name: "Свечи", parent_id: null, slug: "svechi" }),
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/categories");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Данные = Новый Структура;
Данные.Вставить("name", "Свечи");
Данные.Вставить("parent_id", Неопределено);
Данные.Вставить("slug", "svechi");
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись, Данные);
Запрос.УстановитьТелоИзСтроки(Запись.Закрыть(), КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"name": "Свечи",
"parent_id": null,
"slug": "svechi"
}`)
req, err := http.NewRequest("POST", "https://api.okeysait.ru/v1/categories", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 201
{
"id": 3,
"parent_id": null,
"name": "Свечи",
"slug": "svechi",
"visible": true,
"position": 3
}Другие ответы: 400, 401, 403, 409, 422, 429 — коды ошибок.
Раздел
GET/categories/{id}право products:read
Параметры
| Параметр | Где | Тип | Описание |
|---|---|---|---|
id обязателен | в пути | целое | Номер объекта. |
Пример запроса
curl https://api.okeysait.ru/v1/categories/3 \
-H "Authorization: Bearer $OKEANO_KEY"<?php
$ch = curl_init('https://api.okeysait.ru/v1/categories/3');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.get(
"https://api.okeysait.ru/v1/categories/3",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const res = await fetch("https://api.okeysait.ru/v1/categories/3", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
},
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/categories/3");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Ответ = Соединение.Получить(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://api.okeysait.ru/v1/categories/3", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 200
{
"id": 3,
"parent_id": null,
"name": "Свечи",
"slug": "svechi",
"visible": true,
"position": 3
}Другие ответы: 401, 403, 404, 429 — коды ошибок.
Изменить раздел
PATCH/categories/{id}право products:write
Родитель, который сам раздел или его потомок, — 422 bad_parent. Удаления нет: у раздела могут быть товары, удаляйте в панели.
Параметры
| Параметр | Где | Тип | Описание |
|---|---|---|---|
id обязателен | в пути | целое | Номер объекта. |
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
name | строка | |
slug | строка | |
parent_id | целое или null | Родительский раздел; null или 0 — корневой. |
visible | true / false | |
position | целое |
Пример запроса
curl -X PATCH https://api.okeysait.ru/v1/categories/3 \
-H "Authorization: Bearer $OKEANO_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Свечи ручной работы",
"position": 2
}'<?php
$ch = curl_init('https://api.okeysait.ru/v1/categories/3');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['name' => 'Свечи ручной работы', 'position' => 2], JSON_UNESCAPED_UNICODE),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.patch(
"https://api.okeysait.ru/v1/categories/3",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
json={"name": "Свечи ручной работы", "position": 2},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const res = await fetch("https://api.okeysait.ru/v1/categories/3", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ name: "Свечи ручной работы", position: 2 }),
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/categories/3");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Данные = Новый Структура;
Данные.Вставить("name", "Свечи ручной работы");
Данные.Вставить("position", 2);
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись, Данные);
Запрос.УстановитьТелоИзСтроки(Запись.Закрыть(), КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ = Соединение.ВызватьHTTPМетод("PATCH", Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"name": "Свечи ручной работы",
"position": 2
}`)
req, err := http.NewRequest("PATCH", "https://api.okeysait.ru/v1/categories/3", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 200
{
"id": 3,
"parent_id": null,
"name": "Свечи",
"slug": "svechi",
"visible": true,
"position": 3
}Другие ответы: 400, 401, 403, 404, 422, 429 — коды ошибок.
Список брендов
GET/brandsправо products:read
Параметры
| Параметр | Где | Тип | Описание |
|---|---|---|---|
limit | в адресе | целое | Сколько объектов вернуть, от 1 до 250. По умолчанию 50. |
cursor | в адресе | строка | Значение next_cursor из прошлого ответа. |
Пример запроса
curl -G https://api.okeysait.ru/v1/brands \
-H "Authorization: Bearer $OKEANO_KEY" \
--data-urlencode "limit=250"<?php
$ch = curl_init('https://api.okeysait.ru/v1/brands?' . http_build_query(['limit' => '250']));
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.get(
"https://api.okeysait.ru/v1/brands",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
params={"limit": "250"},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const url = new URL("https://api.okeysait.ru/v1/brands");
url.search = new URLSearchParams({ limit: "250" });
const res = await fetch(url, {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
},
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/brands?limit=250");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Ответ = Соединение.Получить(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"net/url"
"os"
)
func main() {
q := url.Values{}
q.Set("limit", "250")
req, err := http.NewRequest("GET", "https://api.okeysait.ru/v1/brands?"+q.Encode(), nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 200
{
"data": [
{
"id": 2,
"name": "Лесная мануфактура",
"slug": "lesnaya-manufaktura",
"visible": true
}
],
"next_cursor": null
}Другие ответы: 400, 401, 403, 429 — коды ошибок.
Создать бренд
POST/brandsправо products:write
Нужно name.
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
name | строка | |
slug | строка | |
visible | true / false |
Пример запроса
curl -X POST https://api.okeysait.ru/v1/brands \
-H "Authorization: Bearer $OKEANO_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Лесная мануфактура"
}'<?php
$ch = curl_init('https://api.okeysait.ru/v1/brands');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['name' => 'Лесная мануфактура'], JSON_UNESCAPED_UNICODE),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.post(
"https://api.okeysait.ru/v1/brands",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
json={"name": "Лесная мануфактура"},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const res = await fetch("https://api.okeysait.ru/v1/brands", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ name: "Лесная мануфактура" }),
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/brands");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Данные = Новый Структура;
Данные.Вставить("name", "Лесная мануфактура");
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись, Данные);
Запрос.УстановитьТелоИзСтроки(Запись.Закрыть(), КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"name": "Лесная мануфактура"
}`)
req, err := http.NewRequest("POST", "https://api.okeysait.ru/v1/brands", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 201
{
"id": 2,
"name": "Лесная мануфактура",
"slug": "lesnaya-manufaktura",
"visible": true
}Другие ответы: 400, 401, 403, 422, 429 — коды ошибок.
Бренд
GET/brands/{id}право products:read
Параметры
| Параметр | Где | Тип | Описание |
|---|---|---|---|
id обязателен | в пути | целое | Номер объекта. |
Пример запроса
curl https://api.okeysait.ru/v1/brands/2 \
-H "Authorization: Bearer $OKEANO_KEY"<?php
$ch = curl_init('https://api.okeysait.ru/v1/brands/2');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
],
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.get(
"https://api.okeysait.ru/v1/brands/2",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const res = await fetch("https://api.okeysait.ru/v1/brands/2", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
},
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/brands/2");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Ответ = Соединение.Получить(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://api.okeysait.ru/v1/brands/2", nil)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 200
{
"id": 2,
"name": "Лесная мануфактура",
"slug": "lesnaya-manufaktura",
"visible": true
}Другие ответы: 401, 403, 404, 429 — коды ошибок.
Изменить бренд
PATCH/brands/{id}право products:write
Удаления нет — только в панели.
Параметры
| Параметр | Где | Тип | Описание |
|---|---|---|---|
id обязателен | в пути | целое | Номер объекта. |
Тело запроса
| Поле | Тип | Описание |
|---|---|---|
name | строка | |
slug | строка | |
visible | true / false |
Пример запроса
curl -X PATCH https://api.okeysait.ru/v1/brands/2 \
-H "Authorization: Bearer $OKEANO_KEY" \
-H "Content-Type: application/json" \
-d '{
"visible": false
}'<?php
$ch = curl_init('https://api.okeysait.ru/v1/brands/2');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('OKEANO_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode(['visible' => false], JSON_UNESCAPED_UNICODE),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_RESPONSE_CODE);
echo $status, PHP_EOL, $response, PHP_EOL;import os
import requests
r = requests.patch(
"https://api.okeysait.ru/v1/brands/2",
headers={"Authorization": f"Bearer {os.environ['OKEANO_KEY']}"},
json={"visible": False},
timeout=30,
)
print(r.status_code)
print(r.text)// Node.js 18+: файл .mjs (await на верхнем уровне)
const res = await fetch("https://api.okeysait.ru/v1/brands/2", {
method: "PATCH",
headers: {
Authorization: `Bearer ${process.env.OKEANO_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ visible: false }),
});
console.log(res.status);
console.log(await res.text());// 1С:Предприятие 8.3
КлючОкеано = "oks_…"; // ключ из панели магазина; в рабочей базе храните его отдельно от кода
Соединение = Новый HTTPСоединение("api.okeysait.ru", 443, , , , 30, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("/v1/brands/2");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Запрос.Заголовки.Вставить("Content-Type", "application/json");
Данные = Новый Структура;
Данные.Вставить("visible", Ложь);
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку();
ЗаписатьJSON(Запись, Данные);
Запрос.УстановитьТелоИзСтроки(Запись.Закрыть(), КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
Ответ = Соединение.ВызватьHTTPМетод("PATCH", Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
)
func main() {
body := strings.NewReader(`{
"visible": false
}`)
req, err := http.NewRequest("PATCH", "https://api.okeysait.ru/v1/brands/2", body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("OKEANO_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(resp.StatusCode)
fmt.Println(string(data))
}Ответ 200
{
"id": 2,
"name": "Лесная мануфактура",
"slug": "lesnaya-manufaktura",
"visible": true
}Другие ответы: 400, 401, 403, 404, 422, 429 — коды ошибок.