me
Kthen emailin e llogarisë, numrin e aplikacioneve, detyrat sipas statusit, kufijtë dhe sa kërkesa të kanë mbetur këtë minutë. Nuk kërkon fusha të tjera.
Për zhvilluesit
Lidh tabelën tënde me çdo program, skript ose mjet. Me çelësin tënd personal lexon aplikacionet dhe detyrat, shton të reja, i lëviz nëpër statuse dhe i fshin, njësoj si në tabelë.
Krijo çelësin
Në tabelë, shtyp butonin e llogarisë, pastaj API dhe Krijo çelësin.
Ruaje diku të sigurt
Çelësi shfaqet i plotë vetëm një herë. Nëse e humbet, ndërroje dhe merr një të ri.
Bëj thirrjen e parë
Dërgo veprimin me për të parë llogarinë dhe numrin e detyrave.
curl -X POST https://puna.bfzli.com/__fn/api \
-H "Content-Type: application/json" \
-d '{"input":{"key":"puna_ÇELËSI_YT","action":"me"}}'
// Përgjigjja
{
"result": {
"ok": true,
"apps": 4,
"tasks": { "active": 31, "draft": 12, "in_progress": 6, "completed": 13, "trashed": 4 },
"limits": { "tasks": 2000, "apps": 50, "text": 10000, "requests_per_minute": 120 },
"email": "ti@shembull.com",
"requests_left": 119,
"rev": 128
}
}
Çdo veprim shkon te e njëjta adresë, me metodën POST dhe trup JSON. Brenda input vendos çelësin, veprimin dhe fushat e tij.
POST https://puna.bfzli.com/__fn/api
Content-Type: application/json
{
"input": {
"key": "puna_ÇELËSI_YT",
"action": "tasks.create",
"text": "Përgatit faturën e muajit",
"status": "in_progress"
}
}
Një ndihmës i vogël në JavaScript, që mund ta përdorësh në çdo projekt:
const KEY = process.env.PUNA_API_KEY
async function puna(action, params = {}) {
const res = await fetch('https://puna.bfzli.com/__fn/api', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ input: { key: KEY, action, ...params } })
})
const body = await res.json()
const result = body.result || body
if (!result.ok) throw new Error(result.message || result.error)
return result
}
// Merr detyrat në punë dhe kryej të parën
const { tasks } = await puna('tasks.list', { status: 'in_progress' })
await puna('tasks.move', { todo_id: tasks[0].id, status: 'completed', position: 'top' })
Përgjigjja vjen gjithmonë brenda result. Kur veprimi ia del, ok është true. Kur jo, vjen ok: false me kodin e gabimit në error dhe një shpjegim në message.
{ "result": { "ok": false, "error": "bad_status", "message": "Status must be draft, in_progress or completed." } }
Çdo përgjigje e suksesshme mban edhe rev, numrin e versionit të listës. Rritet me çdo ndryshim, nga API ose nga tabela, ndaj mjafton ta krahasosh për të ditur nëse diçka ka ndryshuar.
Vetëm kur mungon fusha key ose action, adresa kthen kodin HTTP 400 me një error të shkurtër, pa result.
| Kufiri | Vlera |
|---|---|
| Kërkesa | 120 në minutë për çdo çelës. Mbi to vjen rate_limited me retry_after në sekonda. |
| Detyra | Deri në 2.000 për llogari, bashkë me koshin. |
| Aplikacione | Deri në 50 për llogari. |
| Teksti | Deri në 10.000 karaktere për detyrë. Emri i aplikacionit deri në 40. |
| Disa njëherësh | Deri në 500 detyra në ids për një kërkesë. |
| Lista | tasks.list kthen deri në 500 detyra, ose deri në 2.000 me limit. |
| Fusha | Çfarë mban |
|---|---|
| id | Kodi i detyrës. |
| text | Teksti, me rreshta të rinj. |
| status | draft, in_progress ose completed, njësoj si kolonat Draft, Në punë dhe Të kryera. |
| trashed | true kur është në kosh, me datën në trashed_at. |
| app_id | Aplikacioni ku bën pjesë, ose bosh. Emri vjen në app_name. |
| position | Vendi në renditje. Numri më i vogël del më lart. |
| created_at | Kur u krijua, si datë ISO. Kur u ndryshua vjen në updated_at. |
| files | Fotot dhe skedarët: key, name, mime, size, kind dhe për fotot width e height. |
| Fusha | Çfarë mban |
|---|---|
| id | Kodi i aplikacionit. |
| name | Emri, i vetëm në llogari. |
| color | Një nga ngjyrat e gatshme ose një ngjyrë e jotja si #rrggbb. |
| url | Adresa e faqes së projektit, ose bosh. |
| icon | Ikona e faqes si foto e gatshme për t'u shfaqur, ose bosh. |
| created_at | Kur u krijua. Kur u ndryshua vjen në updated_at. |
Ngjyrat e gatshme: indigo blue sky teal green lime yellow orange red pink fuchsia violet brown black gray.
| Veprimi | Çfarë bën |
|---|---|
| me | Llogaria, numri i detyrave dhe kufijtë. |
| apps.list | Të gjitha aplikacionet. |
| apps.get | Një aplikacion. |
| apps.create | Shton një aplikacion. |
| apps.update | Ndryshon emrin, ngjyrën ose adresën. |
| apps.delete | Fshin një aplikacion. Detyrat e tij mbeten, pa aplikacion. |
| tasks.list | Detyrat, sipas aplikacionit, statusit ose koshit. |
| tasks.get | Një detyrë. |
| tasks.create | Shton një detyrë. |
| tasks.update | Ndryshon tekstin, statusin ose aplikacionin, për një ose disa detyra. |
| tasks.move | Lëviz një detyrë në status, aplikacion ose vend tjetër. |
| tasks.trash | Hedh në kosh një ose disa detyra. |
| tasks.restore | I rikthen nga koshi. |
| tasks.delete | I fshin përgjithmonë, bashkë me skedarët. |
| files.link | Lidhje për një foto ose skedar, që punon një orë. |
Kthen emailin e llogarisë, numrin e aplikacioneve, detyrat sipas statusit, kufijtë dhe sa kërkesa të kanë mbetur këtë minutë. Nuk kërkon fusha të tjera.
Kthen apps, të renditura sipas emrit, dhe count.
Kthen një aplikacion në app. Fusha: app_id.
| Fusha | Përshkrimi |
|---|---|
| name | E detyrueshme. Deri në 40 karaktere, e vetme në llogari. |
| color | Sipas dëshirës. Pa të, merr ngjyrën e parë të papërdorur. |
| url | Sipas dëshirës. Kontrollohet që faqja ekziston dhe ikona merret vetë. |
{ "input": { "key": "puna_ÇELËSI_YT", "action": "apps.create", "name": "Uebfaqe", "color": "violet", "url": "uebfaqe.app" } }
Fusha: app_id, dhe të paktën një nga name, color ose url. Ndryshohet vetëm ajo që dërgon. Për ta hequr adresën, dërgo "url": "none".
Fusha: app_id. Detyrat e tij mbeten pa aplikacion; sa u prekën vjen në tasks_moved.
Kthen tasks në renditjen e tabelës, me total, count, offset dhe limit.
| Fusha | Përshkrimi |
|---|---|
| app_id | Vetëm detyrat e një aplikacioni. none për ato pa aplikacion. |
| status | Vetëm një status. |
| trashed | exclude (si fillim), only për vetëm koshin, include për të gjitha. |
| limit | Sa detyra, nga 1 deri në 2.000. Si fillim 500. |
| offset | Nga cila detyrë të nisë, për faqe të tjera. |
Kthen një detyrë në task, edhe kur është në kosh. Fusha: todo_id.
| Fusha | Përshkrimi |
|---|---|
| text | E detyrueshme. Deri në 10.000 karaktere. |
| status | Sipas dëshirës. Si fillim draft. |
| app_id | Sipas dëshirës. Aplikacioni ku shkon. |
| position | top (si fillim, njësoj si në tabelë) ose bottom. |
{ "input": { "key": "puna_ÇELËSI_YT", "action": "tasks.create", "text": "Rregullo formularin e kontaktit", "app_id": "3f9a1c2b7d4e8f60" } }
Për një detyrë dërgo todo_id dhe kthehet task. Për disa dërgo ids si listë dhe kthehen tasks e count. Ndryshohet vetëm ajo që dërgon.
| Fusha | Përshkrimi |
|---|---|
| text | Teksti i ri. Vetëm për një detyrë njëherësh. |
| status | Statusi i ri. |
| app_id | Aplikacioni i ri, ose none për ta hequr. |
{ "input": { "key": "puna_ÇELËSI_YT", "action": "tasks.update", "ids": ["a1b2c3d4e5f60718", "0f1e2d3c4b5a6978"], "status": "completed" } }
Njësoj si të tërheqësh kartën në tabelë. Fusha: todo_id, dhe çdo kombinim i atyre më poshtë.
| Fusha | Përshkrimi |
|---|---|
| status | Kolona e re. |
| app_id | Aplikacioni i ri, ose none. |
| before_id | Vendose menjëherë mbi këtë detyrë. |
| after_id | Vendose menjëherë nën këtë detyrë. |
| position | top ose bottom e listës. |
{ "input": { "key": "puna_ÇELËSI_YT", "action": "tasks.move", "todo_id": "a1b2c3d4e5f60718", "status": "in_progress", "position": "top" } }
Fusha: todo_id ose ids. Kthen count dhe ids e detyrave që shkuan në kosh.
Fusha: todo_id ose ids. I kthen nga koshi në vendin ku ishin.
Fusha: todo_id ose ids. I fshin përgjithmonë, edhe pa kaluar nga koshi, bashkë me fotot dhe skedarët e tyre. Nuk kthehet më mbrapsht.
Fusha: todo_id dhe file_key nga files e detyrës. Kthen url, një lidhje private që punon një orë, me name, mime dhe size.
| Kodi | Kuptimi |
|---|---|
| key_missing | Mungon çelësi. |
| bad_key | Çelësi nuk vlen: është ndërruar, çaktivizuar ose është shkruar gabim. |
| rate_limited | Shumë kërkesa këtë minutë. Prit sa thotë retry_after. |
| unknown_action | Veprim i panjohur. Lista e plotë vjen në actions. |
| missing | Nuk ka detyrë me këtë kod. Kur dërgon disa, kodi vjen në id. |
| in_trash | Detyra është në kosh. Riktheje më parë. |
| app_missing | Nuk ka aplikacion me këtë kod. |
| text_required | Mungon teksti i detyrës. |
| text_many | Teksti ndryshohet vetëm për një detyrë njëherësh. |
| bad_status | Statusi duhet të jetë draft, in_progress ose completed. |
| bad_trashed | trashed duhet të jetë exclude, only ose include. |
| bad_position | position duhet të jetë top ose bottom. |
| bad_place | Detyra te before_id ose after_id nuk u gjet, është në kosh ose është vetë ajo që lëviz. |
| ids_required | Dërgo todo_id ose ids. |
| nothing_to_change | Nuk dërgove asgjë për të ndryshuar. |
| name_required | Mungon emri i aplikacionit. |
| name_taken | Ke tashmë një aplikacion me këtë emër. |
| bad_color | Ngjyrë e panjohur. |
| bad_url | Kjo nuk është adresë faqeje. |
| no_site | Nuk ekziston asnjë faqe në këtë adresë. |
| too_many_apps | U arrit kufiri prej 50 aplikacionesh. |
| list_full | U arrit kufiri prej 2.000 detyrash. Fshi disa nga koshi. |
| file_missing | Detyra nuk ka skedar me këtë kod. |
| busy | Tabela ndryshoi në të njëjtin çast disa herë rresht. Provo përsëri. |
| unavailable | Diçka nuk shkoi nga ana jonë. Provo përsëri pas pak. |