Быстрый старт
Ключ, проверочный запрос и первый вызов.
1. Создайте ключ
В панели магазина: «Настройки» → «API и вебхуки» → «Ключи». Назовите ключ, отметьте права и нажмите «Создать ключ». Ключ oks_… показывается один раз — сохраните его.
В примерах ключ лежит в переменной окружения OKEANO_KEY:
export OKEANO_KEY=oks_…2. Проверьте ключ
GET /shop доступен любому ключу: в ответе магазин, тариф и права ключа.
curl https://api.okeysait.ru/v1/shop \
-H "Authorization: Bearer $OKEANO_KEY"<?php
$ch = curl_init('https://api.okeysait.ru/v1/shop');
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/shop",
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/shop", {
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/shop");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + КлючОкеано);
Ответ = Соединение.Получить(Запрос);
Сообщить(Ответ.КодСостояния);
Сообщить(Ответ.ПолучитьТелоКакСтроку());package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://api.okeysait.ru/v1/shop", 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))
}{
"site": "myshop",
"name": "Мой магазин",
"host": "myshop.okeysait.ru",
"url": "https://myshop.okeysait.ru",
"currency": "RUB",
"plan": "free",
"limits": {
"requests_per_minute": 60
},
"key": {
"name": "Склад",
"scopes": [
"products:read",
"products:write"
]
},
"scopes": [
"products:read",
"products:write"
],
"products_count": 12,
"products_limit": 50,
"order_statuses": [
{
"id": 1,
"name": "Новый"
},
{
"id": 2,
"name": "Принят"
}
]
}3. Вызовите метод
Например, создайте товар — нужно право products:write:
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))
}Дальше — товары, заказы и вебхуки.
Ключ — только для сервера: почему. Магазин на вашем сайте без ключа — в разделе «Магазин на своём сайте».