# Създаване на тикети от други системи с API на Todomator

> Удостоверете се с токена на Todomator и създайте тикет с едно JSON извикване, от скрипт, имейл или уеб форма, с папки, хора, етикети, прикачени файлове и callback.

Framework: todomator
Product: Todomator (todomator@1.7)
Language: bg
Content-SHA256: 0d635a99df403ee9ab5a4f956beb2c47a40ad813f12d7cafc081cfa07ac892f3
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Todomator излага действията си през една API крайна точка: `POST /api/` с JSON тяло `{ "schema": "<name>", "data": { ... } }` (API маршрутите на Total.js; вижте рецептата [API маршрути](/en/total5/api-routes/)). Адресът `/api/` идва от реда `$api` във файла `config`.

## Удостоверяване с токена

Освен сесията на влязъл човек, API приема **токен**: изпратете го в заглавката `x-token` или в параметъра на заявката `token`. Ако е равен на настройката `token` (вижте [настройките](/en/todomator/settings-and-database/)), заявката се изпълнява като вграден потребител на име *Bot*, администратор с правото `bot`; всеки друг токен се отхвърля. Използвайте дълъг случаен токен, пазете го на сървъра си и го изпращайте само през HTTPS.

## Създаване на тикет

Извикването се казва `tickets_create`. Само `name` е задължително; останалото е по избор:

| Поле | Бележки |
|---|---|
| `name` | заглавието |
| `folder` или `folderid` | папката, по **име** (Todomator я търси) или по id; тикетът взема флага за таксуване на папката |
| `users` | хората за възлагане, по **име или имейл**; непознат човек е грешка (`User "..." not found`) |
| `watcherid` | хората, които го следят, по **id** (за разлика от `users`, схемата на тази версия не ги приема по име) |
| `statusid` | `pending` (по подразбиране), `open`, `review`, `postponed`, `note` или `closed` |
| `markdown`, `html` | съдържанието |
| `tags`, `ispriority`, `isbillable`, `ispublic` | етикети и флагове |
| `date`, `deadline`, `worked` | денят, краен срок и вече отработените минути |
| `attachments` | списък от `{ name, data }`, където `data` е файлът в Base64 |
| `reference`, `source`, `attrs` | свободни полета за свързване на тикета с вашата система |
| `callback` | адрес, който получава тикета |

```json
{
	"schema": "tickets_create",
	"data": {
		"name": "The invoice page fails with a 500",
		"folder": "Customer support",
		"users": ["jane@example.com"],
		"markdown": "Reported by the contact form.\n\nSteps: open the invoice and click *Print*.",
		"tags": ["bug"],
		"source": "website",
		"reference": "form-2041"
	}
}
```

Отговорът е id на новия тикет. Възложените хора получават известие и отворените сесии на хората, които могат да го виждат, се опресняват.

## Callback

Когато `callback` е зададен, Todomator изпраща `POST` към този адрес с данните на тикета, когато тикетът се създава, актуализира или клонира, и когато се добави коментар (при създаване и актуализация изпраща и списъка с подадените полета, `keys`). Вашата система може да го ползва, за да отразява състоянието на тикета.

## Други извиквания

Същата крайна точка обслужва останалите действия, с имената от `controllers/api.js`: `tickets` (списък), `tickets_detail/{id}`, `tickets_update/{id}`, `tickets_clone/{id}`, `tickets_remove/{id}`, `logwork_create`, `folders`, `tags` и други. Официалната документация на API е на [docs.totaljs.com/todomator](https://docs.totaljs.com/todomator/).
