Читайте й змінюйте колекції та предмети користувача Owlect через HTTPS. Кожен запит містить токен доступу OAuth, який користувач надав вашому застосунку, і бачить лише дані цього користувача.
Owlect - сервер авторизації OAuth 2.1. Застосунки є публічними клієнтами й підтверджують себе через PKCE, тож секрету, який можна втратити, немає.
1. Зареєструйте клієнт
Адреси повернення - https або http на localhost. Реєстрація відкрита й обмежена за частотою.
bash
curl -X POST https://owlect.app/api/oauth/register \
-H "Content-Type: application/json" \
-d '{"client_name": "My app", "redirect_uris": ["https://myapp.example/callback"]}'
2. Відправте користувача на авторизацію
Використайте response_type=code, code_challenge PKCE S256, свою redirect_uri, значення state і scope="read create update delete" (просіть лише те, що потрібно). Користувач увійде через Google, побачить екран дозволу з адресою вашого застосунку й позначить, що дозволити: перегляд і створення вибрані заздалегідь. Поле scope у відповіді з токеном показує, що надано.
Надішліть POST із кодом і code_verifier на ендпоінт токенів. Ви отримаєте токен доступу (термін: 1 година) і токен оновлення (30 днів), що змінюється при кожному використанні: завжди зберігайте найновіший.
Переглядати ваші колекції та предмети. Завжди увімкнено.
create
Додавати колекції та предмети. Увімкнено за замовчуванням.
update
Змінювати колекції та предмети. Вимкнено, поки ви не позначите.
delete
Видаляти колекції та предмети. Вимкнено, поки ви не позначите.
Особистих API-ключів поки немає: кожен токен з'являється, коли користувач схвалює ваш застосунок, і користувач може будь-коли відкликати його в Налаштування -> Підключені застосунки.
Усі ендпоінти приймають і повертають JSON. Ідентифікатори - UUID.
Акаунт
GET/api/v1/account(getAccount)
Тариф і використання, порівняння Free, Plus і Pro (ліміти, можливості, ціна), доступ цього токена, залишок денних лімітів змін і видалень, розміри пакетів, стан підписки (статус, дата продовження чи завершення, посилання для керування) і посилання на сторінки застосунку. Викликайте першим; це не витрачає ліміт.
Без параметрів.
Колекції
GET/api/v1/collections(listCollections)
Усі колекції користувача, нещодавно змінені - першими.
Без параметрів.
POST/api/v1/collections(createCollection)
Створює колекцію. Вбудовані типи отримують стандартні поля, якщо не передано fieldDefinitions. Власний тип (custom) потребує Owlect Plus.
Токена немає, або він недійсний, прострочений чи відкликаний. Оновіть його або знову пройдіть авторизацію.
403 insufficient_scope
Токен має лише область read.
403 plan_limit
Досягнуто ліміту тарифу користувача. У details - ліміт і upgradeUrl.
404 not_found
У цього користувача немає такої колекції чи предмета.
409 confirmation_required
confirmName не збігся з назвою колекції.
413 payload_too_large
Тіло запиту більше за 1 МБ. Надсилайте менше предметів за раз.
422 invalid_input
Вхідні дані не пройшли перевірку, або тіло містить ключ, якого ендпоінт не знає (details.unknownKeys). Якщо невідоме власне поле, details.validKeys містить ключі полів колекції.
429 rate_limited
Забагато запитів. Зачекайте стільки, скільки вказано в заголовку Retry-After.
503 unavailable
Тимчасова проблема на боці Owlect. Повторіть трохи згодом.
500 internal
Неочікувана помилка. Повторіть; якщо не минає, напишіть у підтримку.
GET /collections/{collectionId}/items повертає { items, nextCursor }. Передайте nextCursor як ?cursor=, щоб отримати наступну сторінку; на останній сторінці він null. Сторінки стабільні навіть під час запису.
Ліміти діють для кожного підключеного застосунку (дозволу). REST API і MCP-сервер ділять їх між собою.
120 запитів на хвилину.
500 запитів на зміну на день, з них до 20 на видалення.
На користувача, разом для всіх його підключених застосунків: 1000 запитів на зміну і 40 на видалення на день.
До 50 предметів за запит на створення і 25 за запит на видалення.
Ліміти тарифу на предмети й колекції діють так само, як у застосунку.
Кожна автентифікована відповідь містить заголовки RateLimit-Policy (хвилинна квота, напр. "minute";q=120;w=60) і RateLimit (скільки залишилося і через скільки секунд скинеться, напр. "minute";r=57;t=18) за чернеткою IETF про заголовки RateLimit. Відповідь 429 також містить Retry-After. Денні ліміти повертає GET /account.
3Введіть client ID і client secret, які Owlect видасть для вашого GPT, і скопіюйте callback URL, який покаже ChatGPT, щоб його зареєстрували.
Дії GPT використовують секрет клієнта, який Owlect видає окремо для кожного GPT на запит. Напишіть на support@owlect.app і додайте callback URL вашого GPT.
Це v1, і версія є частиною шляху. Нові ендпоінти, необов'язкові параметри чи поля відповіді не ламають клієнтів; зміни, що можуть зламати клієнт, виходять лише в новій версії. Перш ніж ендпоінт чи версію буде вилучено, щонайменше 6 місяців вони відповідають із заголовком Deprecation (RFC 9745) і заголовком Sunset (RFC 8594) з датою вилучення, а зміну оголошуємо на сторінці оновлень. Зараз нічого не застаріло.