Edge Functions Справочник по HTTP API
Полная поверхность HTTP службы функций с указанием роли, необходимой для каждого маршрута.
1. Соглашения
Базовый URL. URL-адрес вашего проекта, например https://my-app.aurabase.cloud. Проект идентифицируется хостом, поэтому приведенные ниже пути не содержат идентификатора проекта. Полная форма /v1/functions/{project_id}/… также принимается.
Аутентификация. Отправьте свой ключ в заголовке apikey. Добавьте Authorization: Bearer <JWT> для звонка от имени вошедшего в систему пользователя. Студия вызывает те же маршруты с помощью маркера сеанса консоли, что дает ей роль admin.
| Роль | Как ты это получишь | Может позвонить |
|---|---|---|
anon | Открытый ключ проекта | POST …/invoke |
authenticated | Открытый ключ плюс JWT пользователя. | POST …/invoke |
service_role | Ключ service_role (только сервер) | Каждый маршрут ниже |
admin | Консольный сеанс (Студия) | Каждый маршрут ниже |
Любой другой маршрут отвечает 403 на anon и authenticated:
Формат. Тела имеют формат JSON и требуют Content-Type: application/json. Успех — { "data": …, "meta": null }. Ошибка — { "error": { "code", "message", "type", "request_id" } }.
Функциональный объект.
| Поле | Тип | |
|---|---|---|
id, project_id, name | нить | |
runtime | "deno" или "wasm" | |
code | нить | Источник для deno; base64 скомпилированного двоичного файла для wasm |
code_hash | нить | SHA-256 из code |
env_vars | объект | Ключ к ценности |
permissions | объект | allow_net (массив строк), memory_mb, timeout_secs |
is_active | логическое значение | |
created_at, updated_at | ИСО 8601 |
2. Функции
| Метод и путь | Роль | Тело | Ответ |
|---|---|---|---|
GET /v1/functions | роль_службы | никто | массив функциональных объектов |
POST /v1/functions | роль_службы | { name, runtime, code, env_vars? } | объект функции |
GET /v1/functions/{name} | роль_службы | никто | объект функции. {name} — это имя или идентификатор, если ни одна функция не имеет такого имени. |
PATCH /v1/functions/{name} | роль_службы | { code?, env_vars?, is_active?, permissions? } | объект функции |
DELETE /v1/functions/{name} | роль_службы | никто | { "data": null } |
GET /v1/functions/{name}/code | роль_службы | никто | { "data": { "code": "…" } } |
GET /v1/functions/{name}/env | роль_службы | никто | { "data": [ { "key", "value" } ] }, значения расшифрованы |
PUT /v1/functions/{name}/env | роль_службы | { "vars": [ { "key", "value" } ] } | { "data": null } |
Примечания:
POST— это дополнение кname: публикация существующего имени заменяет его код. Полеenv_varsв этом теле заменяет существующие переменные; опустите это, чтобы сохранить их.- В
PATCH``permissionsобъединяется поле за полем:{ "permissions": { "timeout_secs": 60 } }сохраняетallow_netиmemory_mb. Поле за пределами его границ возвращает400. PUT …/envзаменяет весь набор переменных и является единственным маршрутом, который их шифрует. См. секреты .- Функция с
is_active: falseне найдена ниinvoke, ни заданиями.
3. Вызов
POST /v1/functions/{name}/invoke. Роль: anon, authenticated или service_role.
| Поле | Тип | По умолчанию | |
|---|---|---|---|
method | нить | POST | Метод HTTP, видимый функцией |
path | нить | / | Путь, видимый функцией |
headers | объект | никто | Заголовки, передаваемые функции. Зарезервированные заголовки удаляются. |
body | любой JSON | никто | Тело, данное функции |
| Заголовок запроса | |
|---|---|
apikey | Необходимый |
Content-Type: application/json | Необходимый |
Authorization: Bearer <JWT> | Необязательно: позвоните от имени этого пользователя |
X-Aurabase-Invoke-Mode: raw | Необязательно: верните собственный ответ функции |
Ответ по умолчанию, всегда 200:
status — это статус вашей функции. logs пуст для deno. В необработанном режиме ответ является собственным ответом вашей функции: статус, content-type, байты плюс x-aurabase-invoke-origin: function.
| Отказ | Статус | error.code |
|---|---|---|
| Функция не найдена или неактивна | 404 | NOT_FOUND |
| Время выполнения недоступно | 503 | SERVICE_UNAVAILABLE |
Платформа перестала ждать выполнения (после timeout_secs плюс запас) | 504 | TIMEOUT |
| Плановая квота исчерпана | 403 | QUOTA_EXCEEDED |
| Слишком много звонков от одного клиента | 429 | rate_limit_exceeded |
| Тело выше примерно 256 КиБ | 503 | SERVICE_UNAVAILABLE |
4. Задания и очередь недоставленных писем
| Метод и путь | Роль | Тело или запрос | Ответ |
|---|---|---|---|
POST /v1/functions/jobs | роль_службы | { function_name, payload?, delay_secs?, max_attempts? } | работа |
GET /v1/functions/jobs | роль_службы | ?status=&limit= (от 1 до 500, по умолчанию 50) | массив вакансий |
GET /v1/functions/jobs/{id} | роль_службы | никто | работа |
POST /v1/functions/jobs/{id}/retry | роль_службы | никто | задание, вернемся к pending |
GET /v1/functions/jobs/dlq | роль_службы | ?limit= | массив мертвых рабочих мест |
POST /v1/functions/jobs/dlq/requeue | роль_службы | никто | { "data": { "requeued": 1 } } |
Объект задания: id, project_id, function_name, payload, status (pending, running, completed, failed, dead), attempts, max_attempts, error, scheduled_at, started_at, completed_at, created_at. Поведение: Задания, cron и очередь недоставленных сообщений.
5. Крон
| Метод и путь | Роль | Тело | Ответ |
|---|---|---|---|
POST /v1/functions/cron | роль_службы | { name, schedule, function_name, payload? } | запись в cron |
GET /v1/functions/cron | роль_службы | никто | массив записей |
DELETE /v1/functions/cron/{name} | роль_службы | никто | { "data": null } или 404 для неизвестного имени |
Запись: id, project_id, name, schedule (хранится в 6 полях), function_name, payload, is_active, last_run, next_run, created_at.
6. Оповещения
| Метод и путь | Роль | Тело или запрос |
|---|---|---|
POST /v1/functions/alerts | роль_службы | { name, metric, condition, threshold, channel, destination } |
GET /v1/functions/alerts | роль_службы | никто |
PATCH /v1/functions/alerts/{id} | роль_службы | { "enabled": true } |
DELETE /v1/functions/alerts/{id} | роль_службы | никто |
GET /v1/functions/alerts/{id}/events | роль_службы | ?limit=&offset= |
GET /v1/functions/alerts/events | роль_службы | ?limit=&offset= |
Значения и поведение: Оповещения.