Kalo te përmbajtja
Logo Puna Puna API Hap tabelën

Për zhvilluesit

API e Punës

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ë.

Një adresë për çdo veprim 120 kërkesa në minutë Vetëm lista jote

Fillimi i shpejtë

  1. 01

    Krijo çelësin

    Në tabelë, shtyp butonin e llogarisë, pastaj API dhe Krijo çelësin.

  2. 02

    Ruaje diku të sigurt

    Çelësi shfaqet i plotë vetëm një herë. Nëse e humbet, ndërroje dhe merr një të ri.

  3. 03

    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
  }
}

Kërkesa

Ç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

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.

Kufijtë

KufiriVlera
Kërkesa120 në minutë për çdo çelës. Mbi to vjen rate_limited me retry_after në sekonda.
DetyraDeri në 2.000 për llogari, bashkë me koshin.
AplikacioneDeri në 50 për llogari.
TekstiDeri në 10.000 karaktere për detyrë. Emri i aplikacionit deri në 40.
Disa njëherëshDeri në 500 detyra në ids për një kërkesë.
Listatasks.list kthen deri në 500 detyra, ose deri në 2.000 me limit.

Detyra dhe aplikacioni

Detyra

FushaÇfarë mban
idKodi i detyrës.
textTeksti, me rreshta të rinj.
statusdraft, in_progress ose completed, njësoj si kolonat Draft, Në punë dhe Të kryera.
trashedtrue kur është në kosh, me datën në trashed_at.
app_idAplikacioni ku bën pjesë, ose bosh. Emri vjen në app_name.
positionVendi në renditje. Numri më i vogël del më lart.
created_atKur u krijua, si datë ISO. Kur u ndryshua vjen në updated_at.
filesFotot dhe skedarët: key, name, mime, size, kind dhe për fotot width e height.

Aplikacioni

FushaÇfarë mban
idKodi i aplikacionit.
nameEmri, i vetëm në llogari.
colorNjë nga ngjyrat e gatshme ose një ngjyrë e jotja si #rrggbb.
urlAdresa e faqes së projektit, ose bosh.
iconIkona e faqes si foto e gatshme për t'u shfaqur, ose bosh.
created_atKur 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.

Të gjitha veprimet

VeprimiÇfarë bën
meLlogaria, numri i detyrave dhe kufijtë.
apps.listTë gjitha aplikacionet.
apps.getNjë aplikacion.
apps.createShton një aplikacion.
apps.updateNdryshon emrin, ngjyrën ose adresën.
apps.deleteFshin një aplikacion. Detyrat e tij mbeten, pa aplikacion.
tasks.listDetyrat, sipas aplikacionit, statusit ose koshit.
tasks.getNjë detyrë.
tasks.createShton një detyrë.
tasks.updateNdryshon tekstin, statusin ose aplikacionin, për një ose disa detyra.
tasks.moveLëviz një detyrë në status, aplikacion ose vend tjetër.
tasks.trashHedh në kosh një ose disa detyra.
tasks.restoreI rikthen nga koshi.
tasks.deleteI fshin përgjithmonë, bashkë me skedarët.
files.linkLidhje për një foto ose skedar, që punon një orë.

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.

Aplikacionet

apps.list

Kthen apps, të renditura sipas emrit, dhe count.

apps.get

Kthen një aplikacion në app. Fusha: app_id.

apps.create

FushaPërshkrimi
nameE detyrueshme. Deri në 40 karaktere, e vetme në llogari.
colorSipas dëshirës. Pa të, merr ngjyrën e parë të papërdorur.
urlSipas 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" } }

apps.update

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".

apps.delete

Fusha: app_id. Detyrat e tij mbeten pa aplikacion; sa u prekën vjen në tasks_moved.

Detyrat

tasks.list

Kthen tasks në renditjen e tabelës, me total, count, offset dhe limit.

FushaPërshkrimi
app_idVetëm detyrat e një aplikacioni. none për ato pa aplikacion.
statusVetëm një status.
trashedexclude (si fillim), only për vetëm koshin, include për të gjitha.
limitSa detyra, nga 1 deri në 2.000. Si fillim 500.
offsetNga cila detyrë të nisë, për faqe të tjera.

tasks.get

Kthen një detyrë në task, edhe kur është në kosh. Fusha: todo_id.

tasks.create

FushaPërshkrimi
textE detyrueshme. Deri në 10.000 karaktere.
statusSipas dëshirës. Si fillim draft.
app_idSipas dëshirës. Aplikacioni ku shkon.
positiontop (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" } }

tasks.update

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.

FushaPërshkrimi
textTeksti i ri. Vetëm për një detyrë njëherësh.
statusStatusi i ri.
app_idAplikacioni i ri, ose none për ta hequr.
{ "input": { "key": "puna_ÇELËSI_YT", "action": "tasks.update", "ids": ["a1b2c3d4e5f60718", "0f1e2d3c4b5a6978"], "status": "completed" } }

tasks.move

Njësoj si të tërheqësh kartën në tabelë. Fusha: todo_id, dhe çdo kombinim i atyre më poshtë.

FushaPërshkrimi
statusKolona e re.
app_idAplikacioni i ri, ose none.
before_idVendose menjëherë mbi këtë detyrë.
after_idVendose menjëherë nën këtë detyrë.
positiontop ose bottom e listës.
{ "input": { "key": "puna_ÇELËSI_YT", "action": "tasks.move", "todo_id": "a1b2c3d4e5f60718", "status": "in_progress", "position": "top" } }

tasks.trash

Fusha: todo_id ose ids. Kthen count dhe ids e detyrave që shkuan në kosh.

tasks.restore

Fusha: todo_id ose ids. I kthen nga koshi në vendin ku ishin.

tasks.delete

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.

Skedarët

Gabimet

KodiKuptimi
key_missingMungon çelësi.
bad_keyÇelësi nuk vlen: është ndërruar, çaktivizuar ose është shkruar gabim.
rate_limitedShumë kërkesa këtë minutë. Prit sa thotë retry_after.
unknown_actionVeprim i panjohur. Lista e plotë vjen në actions.
missingNuk ka detyrë me këtë kod. Kur dërgon disa, kodi vjen në id.
in_trashDetyra është në kosh. Riktheje më parë.
app_missingNuk ka aplikacion me këtë kod.
text_requiredMungon teksti i detyrës.
text_manyTeksti ndryshohet vetëm për një detyrë njëherësh.
bad_statusStatusi duhet të jetë draft, in_progress ose completed.
bad_trashedtrashed duhet të jetë exclude, only ose include.
bad_positionposition duhet të jetë top ose bottom.
bad_placeDetyra te before_id ose after_id nuk u gjet, është në kosh ose është vetë ajo që lëviz.
ids_requiredDërgo todo_id ose ids.
nothing_to_changeNuk dërgove asgjë për të ndryshuar.
name_requiredMungon emri i aplikacionit.
name_takenKe tashmë një aplikacion me këtë emër.
bad_colorNgjyrë e panjohur.
bad_urlKjo nuk është adresë faqeje.
no_siteNuk ekziston asnjë faqe në këtë adresë.
too_many_appsU arrit kufiri prej 50 aplikacionesh.
list_fullU arrit kufiri prej 2.000 detyrash. Fshi disa nga koshi.
file_missingDetyra nuk ka skedar me këtë kod.
busyTabela ndryshoi në të njëjtin çast disa herë rresht. Provo përsëri.
unavailableDiçka nuk shkoi nga ana jonë. Provo përsëri pas pak.

Siguria

  • Çelësi hap vetëm aplikacionet dhe detyrat e llogarisë tënde, asgjë tjetër.
  • Ne nuk e ruajmë çelësin e plotë, vetëm një gjurmë të tij. Prandaj shfaqet vetëm një herë.
  • Mbaje në serverin ose skriptin tënd, kurrë në një faqe që e hapin të tjerët.
  • Nëse dyshon se e ka parë dikush, ndërroje te Llogaria → API. I vjetri ndalon menjëherë.
  • Ndryshimet nga API shfaqen në tabelë herën tjetër që hapet ose rifreskohet.