Edge Functions Informacje o interfejsie API HTTP
Kompletna powierzchnia HTTP usługi funkcji z rolą wymaganą przez każdą trasę.
1. Konwencje
Podstawowy adres URL. Adres URL Twojego projektu, na przykład https://my-app.aurabase.cloud. Projekt jest identyfikowany przez hosta, więc poniższe ścieżki nie mają identyfikatora projektu. Akceptowana jest również długa forma /v1/functions/{project_id}/….
Uwierzytelnianie. Wyślij swój klucz w nagłówku apikey. Dodaj Authorization: Bearer <JWT>, aby dzwonić jako zalogowany użytkownik. Studio wywołuje te same trasy za pomocą tokena sesji konsoli, co nadaje mu rolę admin.
| Rola | Jak to dostaniesz | Może zadzwonić |
|---|---|---|
anon | Klucz publiczny projektu | POST …/invoke |
authenticated | Klucz publiczny plus JWT użytkownika | POST …/invoke |
service_role | Klucz service_role (tylko serwer) | Poniżej każda trasa |
admin | Sesja konsolowa (Studio) | Poniżej każda trasa |
Każda inna trasa odpowiada 403 do anon i authenticated:
Format. Ciała są w formacie JSON i wymagają Content-Type: application/json. Sukcesem jest { "data": …, "meta": null }. Błąd to { "error": { "code", "message", "type", "request_id" } }.
Obiekt funkcyjny.
| Pole | Typ | |
|---|---|---|
id, project_id, name | smyczkowy | |
runtime | "deno" lub "wasm" | |
code | smyczkowy | Źródło dla deno; base64 skompilowanego pliku binarnego dla wasm |
code_hash | smyczkowy | SHA-256 z code |
env_vars | obiekt | Klucz do wartości |
permissions | obiekt | allow_net (tablica ciągów), memory_mb, timeout_secs |
is_active | wartość logiczna | |
created_at, updated_at | ISO8601 |
2. Funkcje
| Metoda i ścieżka | Rola | Ciało | Odpowiedź |
|---|---|---|---|
GET /v1/functions | rola_usługi | nic | tablica obiektów funkcyjnych |
POST /v1/functions | rola_usługi | { name, runtime, code, env_vars? } | obiekt funkcji |
GET /v1/functions/{name} | rola_usługi | nic | obiekt funkcji. {name} to nazwa lub identyfikator, jeśli żadna funkcja nie ma tej nazwy. |
PATCH /v1/functions/{name} | rola_usługi | { code?, env_vars?, is_active?, permissions? } | obiekt funkcji |
DELETE /v1/functions/{name} | rola_usługi | nic | { "data": null } |
GET /v1/functions/{name}/code | rola_usługi | nic | { "data": { "code": "…" } } |
GET /v1/functions/{name}/env | rola_usługi | nic | { "data": [ { "key", "value" } ] }, wartości odszyfrowane |
PUT /v1/functions/{name}/env | rola_usługi | { "vars": [ { "key", "value" } ] } | { "data": null } |
Uwagi:
POSTjest dodatkiem doname: opublikowanie istniejącej nazwy zastępuje jej kod. Poleenv_varsw tej treści zastępuje istniejące zmienne; pomiń to, aby je zachować.- W
PATCH,permissionsjest łączone pole po polu:{ "permissions": { "timeout_secs": 60 } }zachowujeallow_netimemory_mb. Pole poza jego granicami zwraca400. PUT …/envzastępuje cały zestaw zmiennych i jest jedyną trasą, która je szyfruje. Zobacz sekrety.- Funkcja z
is_active: falsenie została znaleziona przezinvokeani przez zadania.
3. Wywołaj
POST /v1/functions/{name}/invoke. Rola: anon, authenticated lub service_role.
| Pole | Typ | Domyślny | |
|---|---|---|---|
method | smyczkowy | POST | Metoda HTTP widziana przez funkcję |
path | smyczkowy | / | Ścieżka widziana przez funkcję |
headers | obiekt | nic | Nagłówki nadane funkcji. Zarezerwowane nagłówki są usuwane. |
body | dowolny JSON | nic | Ciało nadane funkcji |
| Nagłówek żądania | |
|---|---|
apikey | Wymagany |
Content-Type: application/json | Wymagany |
Authorization: Bearer <JWT> | Opcjonalnie: zadzwoń jako ten użytkownik |
X-Aurabase-Invoke-Mode: raw | Opcjonalnie: zwróć własną odpowiedź funkcji |
Domyślna odpowiedź, zawsze 200:
status to status Twojej funkcji. logs jest pusty dla deno. W trybie surowym odpowiedź jest własną funkcją: status, content-type, bajty plus x-aurabase-invoke-origin: function.
| Awaria | Status | error.code |
|---|---|---|
| Nie znaleziono funkcji lub jest ona nieaktywna | 404 | NOT_FOUND |
| Czas wykonania nieosiągalny | 503 | SERVICE_UNAVAILABLE |
Platforma przestała czekać na runtime (po timeout_secs plus margines) | 504 | TIMEOUT |
| Limit planu wyczerpany | 403 | QUOTA_EXCEEDED |
| Zbyt wiele połączeń od jednego klienta | 429 | rate_limit_exceeded |
| Treść powyżej około 256 KiB | 503 | SERVICE_UNAVAILABLE |
4. Zadania i kolejka niedostarczonych wiadomości
| Metoda i ścieżka | Rola | Treść lub zapytanie | Odpowiedź |
|---|---|---|---|
POST /v1/functions/jobs | rola_usługi | { function_name, payload?, delay_secs?, max_attempts? } | praca |
GET /v1/functions/jobs | rola_usługi | ?status=&limit= (1 do 500, domyślnie 50) | szereg miejsc pracy |
GET /v1/functions/jobs/{id} | rola_usługi | nic | praca |
POST /v1/functions/jobs/{id}/retry | rola_usługi | nic | praca, powrót do pending |
GET /v1/functions/jobs/dlq | rola_usługi | ?limit= | szereg martwych stanowisk pracy |
POST /v1/functions/jobs/dlq/requeue | rola_usługi | nic | { "data": { "requeued": 1 } } |
Obiekt pracy: id, project_id, function_name, payload, status (pending, running, completed, failed, dead), attempts, max_attempts, error, scheduled_at, started_at, completed_at, created_at. Zachowanie: Zadania, cron i kolejka utraconych wiadomości.
5. Kron
| Metoda i ścieżka | Rola | Ciało | Odpowiedź |
|---|---|---|---|
POST /v1/functions/cron | rola_usługi | { name, schedule, function_name, payload? } | wpis crona |
GET /v1/functions/cron | rola_usługi | nic | tablica wpisów |
DELETE /v1/functions/cron/{name} | rola_usługi | nic | { "data": null } lub 404 dla nieznanej nazwy |
Wpis: id, project_id, name, schedule (przechowywany z 6 polami), function_name, payload, is_active, last_run, next_run, created_at.
6. Alerty
| Metoda i ścieżka | Rola | Treść lub zapytanie |
|---|---|---|
POST /v1/functions/alerts | rola_usługi | { name, metric, condition, threshold, channel, destination } |
GET /v1/functions/alerts | rola_usługi | nic |
PATCH /v1/functions/alerts/{id} | rola_usługi | { "enabled": true } |
DELETE /v1/functions/alerts/{id} | rola_usługi | nic |
GET /v1/functions/alerts/{id}/events | rola_usługi | ?limit=&offset= |
GET /v1/functions/alerts/events | rola_usługi | ?limit=&offset= |
Wartości i zachowanie: Alerty.