Prompty AI - API
Autoryzacja: Authorization: Bearer TOKEN
Content-Type: application/json; charset=utf-8
Endpoints
| Metoda | Ścieżka | Opis |
|---|---|---|
| GET | /noe/prompts.json |
Lista promptów z bazy (bez systemowych z plików) |
| GET | /noe/prompts/:id.json |
Szczegóły prompta (id to UUID) |
| POST | /noe/prompts.json |
Tworzenie prompta |
| PATCH | /noe/prompts/:id.json |
Aktualizacja prompta |
| DELETE | /noe/prompts/:id.json |
Usunięcie prompta (wraca wersja systemowa, jeśli istnieje) |
| GET | /noe/prompts/:id.md |
Surowa treść, bez renderowania Liquid |
| GET | /noe/prompt/:code.md |
Treść po kaskadzie, z podstawionymi {{api_token}} i {{host}}
|
| GET | /noe/prompts/system/:code.md |
Treść systemowa z pliku |
GET /noe/prompts.json zwraca gołą tablicę, nie obiekt z kluczem prompts.
Pola
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
name |
string | tak | Nazwa prompta |
code |
string | tak | Kod, unikalny w ramach (konto, scope, scope_id) |
kind |
string | tak |
chat albo agent
|
content |
text | tak | Treść prompta (Markdown + Liquid) |
scope |
string | nie |
user, team, department, account (domyślnie account) |
scope_id |
integer | nie | ID użytkownika, zespołu lub departamentu |
ai_placeholder |
string | nie | Podpowiedź w polu modala AI, zapisywana w fields.ai_placeholder
|
Pole token nie jest zwracane przez API.
Kaskadowe wyszukiwanie
Endpoint /noe/prompt/:code.md szuka prompta w kolejności:
- Użytkownik (
scope: user,scope_id= id użytkownika) - Zespół (
scope: team) - Departament (
scope: department) - Konto (
scope: account) - Plik systemowy (
app/src/noe/prompts/:code.agent.mdlub:code.md)
Jeśli istnieje dodatkowo prompt o kodzie :code_extra, jego treść zostaje dopisana na końcu jako “Dodatkowe instrukcje”. To sposób na uzupełnienie prompta systemowego bez kopiowania go w całości.
POST - tworzenie prompta
POST /noe/prompts.json
{
"prompt": {
"name": "Redaktor treści",
"code": "content_editor",
"kind": "agent",
"scope": "account",
"content": "Jesteś doświadczonym redaktorem. Poprawiaj styl i gramatykę."
}
}
Odpowiedź: 201 Created z pełnym obiektem prompta.
PATCH - zmiana samej treści
{ "prompt": { "content": "Nowa treść..." } }
Pozostałych pól nie trzeba wysyłać. Odpowiedź: 200 OK.
Błąd 422 z {"code": ["zostało już zajęte"]} oznacza, że prompt o tym kodzie już istnieje w tym samym zakresie. Zamiast tworzyć nowy, pobierz istniejący przez GET /noe/prompts.json?code=... i zrób PATCH.
Wyszukiwanie
| Parametr | Opis |
|---|---|
q |
Szuka w name i code
|
code, kind, scope
|
Filtr po dokładnej wartości |
order_by |
id, created_at, updated_at, name, code (sufiks _desc odwraca kolejność) |
Zmienne Liquid
-
{{api_token}}- token API bieżącego użytkownika -
{{host}}- adres konta, np.https://firma.intum.com -
{{date}}- data z parametrudate, domyślnie dzisiejsza -
{{ "code" \| prompt_url }}- link do innego prompta - zmienne kontekstowe przekazywane przez przycisk AI, np.
{{desk_id}},{{prompt_id}}
Warunek na obecność zmiennej: {% if prompt_id != blank %}...{% else %}...{% endif %}
Pierwsza linia pliku systemowego może zawierać nagłówek NAME: Nazwa - staje się nazwą prompta i nie trafia do treści wysyłanej do modelu.
Zasady
- Nie wstawiaj prawdziwego tokena do
content- zawsze{{api_token}}, bo treść prompta widzą inni użytkownicy konta - Przy edycji zachowaj
{{api_token}}i{{host}}- bez nich prompt agentowy traci dostęp do API - Przed DELETE sprawdź
scope,scope_idicreated_by_id, żeby nie skasować cudzego prompta