Быстрый старт

Ключ, проверочный запрос и первый вызов.

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))
}
Ответ 200
{
  "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))
}

Дальше — товары, заказы и вебхуки.

Ключ — только для сервера: почему. Магазин на вашем сайте без ключа — в разделе «Магазин на своём сайте».

Выбор города
Ваш город можно выбрать через корзину или в комментариях к заказу