İşler API
İşler modülünün tüm işlemleri (23) ve veri modelleri (5): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.
Bir kez iste: Era planlar, işi paralel çalışan uzmanlara böler ve kullanıp yayımlayabileceğin bitmiş işi getirir.
Modül kodu work · 23 işlem · 5 veri modeli · 18 olay. Bir anahtar ya da token, arkasındaki kişinin bu modülde yapabildiğinden fazlasını asla yapamaz; satır düzeyindeki güvenlik uygulamadakiyle birebir aynıdır. Yetki kapsamları: work (hepsi), work:read (yalnız okuma) ya da work:<yetenek>.
Kaynaklar
| Kaynak | Tablo | Listeleme ve okuma | POST | PATCH | DELETE |
|---|---|---|---|---|---|
shop_orders | shop_order | /api/v1/shop_orders | |||
shop_rules | shop_rule | /api/v1/shop_rules | |||
work_computer_forks | work_computer_fork | /api/v1/work_computer_forks | |||
work_jobs | work_job | /api/v1/work_jobs | |||
work_steps | work_step | /api/v1/work_steps |
Listeler limit (en çok 200), cursor, order (ör. -created_at), fields ve q alır; diğer her sorgu parametresi bir sütun süzgecidir: ?status=paid, ?total[gte]=100, ?id[in]=a,b, ?x=null.
İşlemler
| İşlem | Gereken izin | Ne yapar |
|---|---|---|
work.add_step | work:write | Plana adım ekle |
work.answer_need | work:write | Seni bekleyen adımı yanıtla |
work.approve_plan | work:write | Planı onayla |
work.assign_job | work:write | Bir planı birine ver |
work.change_step | work:write | Bir adımı değiştir |
work.message_step | work:write | Çalışan bir ajana bir şey söyle |
work.propose_skill | work:handle | Era’nın öğrendiğini öner |
work.record_fork | work:handle | Ödünç bilgisayarı kaydet |
work.record_shop_order | work:handle | Era’nın verdiği siparişi kaydet |
work.record_step | work:handle | Bir adımın ilerlemesini kaydet |
work.release_fork | work:write | Ödünç bilgisayarı geri ver |
work.replan_step | work:handle | Bir adımın eksik girdisini yeniden planla |
work.request_fork | work:write | Bulut bilgisayarımın bir kopyasını ödünç al |
work.requeue_step | work:handle | Bir adımı sıraya geri koy |
work.resume_job | work:write | Planı sürdür |
work.retry_step | work:write | Bir adımı yeniden dene |
work.review_skill | work:write | Era’nın neyi tutacağına karar ver |
work.set_limits | work:write | Planın bütçesini ya da süresini değiştir |
work.set_shop_rule | work:write | Era’nın sormadan alacağı tutarı ayarla |
work.start_job | work:write | Bir plan başlat |
work.stop_job | work:write | Planı durdur |
work.supervise_step | work:handle | Çalışan bir adımı gözet |
work.use_result | work:write | Bir sonucu kullan |
work.add_step
Plana adım ekle — "Şunu da ekle": bir uzman için bir adım daha; beklediği bitince başlar.
Gereken izin work:write · veriyi değiştirir
https://app.getera.io/api/v1/work_jobs/{id}/actions/add_step- Asıl adres:
POST /api/v1/actions/work.add_step
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
jobId | uuid | evet | Doldurulduğu yer: adresteki {id} · Plan · kimliği: work_job |
title | string | evet | Adım · en çok 200 |
worker | string | evet | Süreç · dev | research | growth | marketing | creative | data | business | computer · en çok 20 |
instruction | string | Ne yapılacak · en çok 8000 | |
run | object / array | Nasıl çalışır | |
dependsOn | object / array | Beklediği · Aynı plandaki adım kimlikleri. | |
confirm | boolean | Çalışmadan önce bana sor | |
note | string | Söylediğin · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Plan bu çalışma alanında olmalı. |
unknown_worker | Adım sekiz çalışandan birini belirtmeli. |
unknown_executor | Adımın çalıştırılması, Era’da bulunan bir yürütücüyü belirtmeli. |
unknown_credential | Erişim bilgisi adımı, Era’nın isteyebildiği bir erişim bilgisini belirtmeli. |
too_many_steps | Bir planda en fazla 12 adım olabilir. |
bad_steps | Adımın bir başlığı olmalı. |
bad_dependency | Bir adım yalnız aynı planın adımlarını bekleyebilir. |
duplicate_step | Planda bu iş, yapılacak ya da yapılmış olarak zaten bulunmamalı. |
Yayımladığı olaylar: work.step_changed
Neye yazar: work_step (insert) — Adds the step, queued; work_job (update) — Reopens the plan and notes what was said
curl -X POST https://app.getera.io/api/v1/work_jobs/WORK_JOB_ID/actions/add_step \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"title":"Step","worker":"Worker"}'{
"ok": true,
"result": "…",
"events": [
"work.step_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workJobs.addStep("WORK_JOB_ID", {
title: "Step",
worker: "Worker"
})era work_jobs add_step WORK_JOB_ID \
--title "Step" \
--worker "Worker"{
"name": "era__work__add_step",
"arguments": {
"jobId": "WORK_JOB_ID",
"title": "Step",
"worker": "Worker"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, unknown_worker, unknown_executor, unknown_credential, too_many_steps, bad_steps, bad_dependency, duplicate_step · 429 çok sık istek
work.answer_need
Seni bekleyen adımı yanıtla — Riskli bir adımı onayla (bir kez çalışır) ya da reddet (atlanır).
Gereken izin work:write · veriyi değiştirir
https://app.getera.io/api/v1/work_steps/{id}/actions/answer_need- Asıl adres:
POST /api/v1/actions/work.answer_need
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Adım · kimliği: work_step |
decision | string (enum) | evet | Karar · İzin verilen değerler: approve, deny |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
step_not_found | Bu adım bu çalışma alanında bulunamadı. |
nothing_to_answer | Yalnızca sizi bekleyen bir adım yanıtlanabilir. |
Yayımladığı olaylar: work.step_changed, work.job_finished, work.needs_you
Neye yazar: work_step (update) — Queues or skips the step; work_job (update) — Updates the plan’s status
curl -X POST https://app.getera.io/api/v1/work_steps/WORK_STEP_ID/actions/answer_need \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"decision":"approve"}'{
"ok": true,
"result": "…",
"events": [
"work.step_changed",
"work.job_finished",
"work.needs_you"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workSteps.answerNeed("WORK_STEP_ID", {
decision: "approve"
})era work_steps answer_need WORK_STEP_ID \
--decision "approve"{
"name": "era__work__answer_need",
"arguments": {
"id": "WORK_STEP_ID",
"decision": "approve"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 step_not_found, nothing_to_answer · 429 çok sık istek
work.approve_plan
Planı onayla — Başla işareti: uzmanlar hiçbir şey beklemeyen her adıma başlar.
Gereken izin work:write · veriyi değiştirir
https://app.getera.io/api/v1/work_jobs/{id}/actions/approve_plan- Asıl adres:
POST /api/v1/actions/work.approve_plan
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Plan · kimliği: work_job |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Plan bu çalışma alanında olmalı. |
not_proposed | Yalnızca onay bekleyen bir plan onaylanabilir. |
Yayımladığı olaylar: work.plan_approved
Neye yazar: work_job (update) — Marks the plan approved and running
curl -X POST https://app.getera.io/api/v1/work_jobs/WORK_JOB_ID/actions/approve_plan \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"work.plan_approved"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workJobs.approvePlan("WORK_JOB_ID")era work_jobs approve_plan WORK_JOB_ID{
"name": "era__work__approve_plan",
"arguments": {
"id": "WORK_JOB_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, not_proposed · 429 çok sık istek
work.assign_job
Bir planı birine ver — Bir planı bir kişiye ya da yeniden Era’ya verir; kimin göreceğini belirler: tüm çalışma alanı ya da yalnızca işin kişileri.
Gereken izin work:write · veriyi değiştirir
https://app.getera.io/api/v1/work_jobs/{id}/actions/assign_job- Asıl adres:
POST /api/v1/actions/work.assign_job
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Plan · kimliği: work_job |
assigneeUserId | uuid | Kime · kimliği: app_user | |
visibility | string (enum) | Kim görür · İzin verilen değerler: workspace, private |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Plan bu çalışma alanında olmalı. |
not_allowed | Planı yalnızca isteyen kişi, verildiği kişi ya da iş yöneticisi devredebilir. |
finished | Biten bir planın sorumlusu değişmez. |
not_a_member | Plan yalnızca çalışma alanının etkin bir üyesine verilebilir. |
Yayımladığı olaylar: work.job_assigned
Neye yazar: work_job (update) — Writes who answers for the plan and who sees it
curl -X POST https://app.getera.io/api/v1/work_jobs/WORK_JOB_ID/actions/assign_job \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"assigneeUserId":"APP_USER_ID"}'{
"ok": true,
"result": "…",
"events": [
"work.job_assigned"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workJobs.assignJob("WORK_JOB_ID", {
assigneeUserId: "APP_USER_ID"
})era work_jobs assign_job WORK_JOB_ID \
--assignee-user-id "APP_USER_ID"{
"name": "era__work__assign_job",
"arguments": {
"id": "WORK_JOB_ID",
"assigneeUserId": "APP_USER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, not_allowed, finished, not_a_member · 429 çok sık istek
work.change_step
Bir adımı değiştir — "Bunu değiştir": henüz başlamamış bir adımı yeniden yazar.
Gereken izin work:write · veriyi değiştirir
https://app.getera.io/api/v1/work_steps/{id}/actions/change_step- Asıl adres:
POST /api/v1/actions/work.change_step
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Adım · kimliği: work_step |
title | string | Adım · en çok 200 | |
instruction | string | Ne yapılacak · en çok 8000 | |
note | string | Söylediğin · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
step_not_found | Bu adım bu çalışma alanında bulunamadı. |
step_started | Başlamış bir adım yeniden yazılamaz; bunun yerine ardından yeni bir adım ekleyin. |
bad_steps | Adımın başlığı boş bırakılamaz. |
Yayımladığı olaylar: work.step_changed
Neye yazar: work_step (update) — Rewrites the step; work_job (update) — Notes what was said
curl -X POST https://app.getera.io/api/v1/work_steps/WORK_STEP_ID/actions/change_step \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"title":"Step"}'{
"ok": true,
"result": "…",
"events": [
"work.step_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workSteps.changeStep("WORK_STEP_ID", {
title: "Step"
})era work_steps change_step WORK_STEP_ID \
--title "Step"{
"name": "era__work__change_step",
"arguments": {
"id": "WORK_STEP_ID",
"title": "Step"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 step_not_found, step_started, bad_steps · 429 çok sık istek
work.message_step
Çalışan bir ajana bir şey söyle — Bilgisayarında çalışan ajana iş sürerken mesaj gönderir ("şunu da yap", "dur, şöyle yap"); bir sonraki adımında dikkate alır.
Gereken izin work:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)
https://app.getera.io/api/v1/work_steps/{id}/actions/message_step- Asıl adres:
POST /api/v1/actions/work.message_step
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Adım · kimliği: work_step |
text | string | evet | Mesaj |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
step_not_found | Bu adım bu çalışma alanında bulunamadı. |
empty_message | Mesaj bir şey söylemeli. |
step_not_running | Yalnızca çalışan (ya da iş ortasında seni bekleyen) bir adıma bir şey söylenebilir. |
step_not_talkable | Mesajı yalnızca bir bilgisayarda çalışan ajan (canlı oturum) duyabilir. |
Yayımladığı olaylar: work.step_changed
Neye yazar: work_job (update) — Adds the message to the plan’s steering; work_step (update) — Shows the message as the step’s activity
curl -X POST https://app.getera.io/api/v1/work_steps/WORK_STEP_ID/actions/message_step \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"text":"Message"}'{
"ok": true,
"result": "…",
"events": [
"work.step_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workSteps.messageStep("WORK_STEP_ID", {
text: "Message"
})era work_steps message_step WORK_STEP_ID \
--text "Message"{
"name": "era__work__message_step",
"arguments": {
"id": "WORK_STEP_ID",
"text": "Message"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 step_not_found, empty_message, step_not_running, step_not_talkable · 429 çok sık istek
work.propose_skill
Era’nın öğrendiğini öner — “Era bu işten yeni bir beceri öğrendi — tutalım mı?”: işe yarayan yöntem, planın sahibini bekler. Yalnızca makine.
Gereken izin work:handle · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/work_jobs/{id}/actions/propose_skill- Asıl adres:
POST /api/v1/actions/work.propose_skill
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Plan · kimliği: work_job |
name | string | Beceri adı · en çok 64 | |
description | string | Ne yapar · en çok 600 | |
content | string | Adımlar · en çok 20000 | |
why | string | Şuradan öğrenildi · en çok 600 | |
nothing | boolean | Saklamaya değer bir şey yok |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Plan bu çalışma alanında olmalı. |
not_done | Era yalnızca işe yarayan bir plandan öğrenir. |
already_proposed | Bu plan için zaten bir öneri yapılmış. |
bad_skill | Küçük harf ve tirelerden oluşan bir ad, ne yaptığını anlatan bir satır ve adımlar gerekiyor. |
Yayımladığı olaylar: work.skill_proposed
Neye yazar: work_job (update) — Writes the offer on the plan
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, not_done, already_proposed, bad_skill · 429 çok sık istek
work.record_fork
Ödünç bilgisayarı kaydet — Bilgisayar çalışanı kopyanın açıldığını, çalıştığını, geri verildiğini ya da açılamadığını ve süresini bildirir. Yalnızca makine.
Gereken izin work:handle · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/work_computer_forks/{id}/actions/record_fork- Asıl adres:
POST /api/v1/actions/work.record_fork
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Kopyala · kimliği: work_computer_fork |
state | string | evet | Durum · forking | running | released | failed · en çok 20 |
externalId | string | Sağlayıcı kimliği · en çok 200 | |
deviceId | string | Çalıştırıcı · en çok 200 | |
error | string | Hata · en çok 500 | |
addSeconds | number | Çalıştığı saniye · en az 0 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
fork_not_found | Bu kopya bu çalışma alanında bulunamadı. |
bad_state | Durum geçerli bir kopya durumu olmalı. |
Yayımladığı olaylar: work.fork_changed
Neye yazar: work_computer_fork (update) — Writes the copy’s state and time
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 fork_not_found, bad_state · 429 çok sık istek
work.record_shop_order
Era’nın verdiği siparişi kaydet — Alışveriş adımının raporu: ne alındı, tutar, kartın son dört hanesi, sipariş numarası ve sonra nerede olduğu. Asla kart numarası değil. Yalnızca makine.
Gereken izin work:handle · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/shop_orders/{id}/actions/record_shop_order- Asıl adres:
POST /api/v1/actions/work.record_shop_order
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | Doldurulduğu yer: adresteki {id} · Sipariş (güncellenecek) · kimliği: shop_order | |
store | string | evet | Mağaza · en çok 40 |
request | string | Ne istendi · en çok 1000 | |
items | object / array | Öğe · [{ name, qty, price (kuruş), image, variant }] | |
totalMinor | number | Toplam (kuruş) · en az 0 | |
deliveryFeeMinor | number | Teslimat ücreti (kuruş) · en az 0 | |
currency | string | Para birimi · en çok 3 | |
status | string | Durum · placed | preparing | on_the_way | delivered | cancelled | unknown · en çok 20 | |
eta | string | Geliş · en çok 200 | |
courier | string | Kurye · en çok 200 | |
orderNo | string | Sipariş numarası · en çok 120 | |
trackUrl | string | Takip sayfası · en çok 2000 | |
cardLast4 | string | Kart (son dört hane) · Dört hane; daha uzunu kabul edilmez. · en çok 40 | |
addressLabel | string | Teslimat adresi · en çok 300 | |
space | string (enum) | Kişisel veya işletme · İzin verilen değerler: personal, business | |
jobId | uuid | Plan · kimliği: work_job | |
stepId | uuid | Adım · kimliği: work_step | |
autoApproved | boolean | Sınırın altında olduğu için sormadan alındı | |
expenseId | uuid | Gider |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
bad_store | Mağaza, Era’nın alışveriş yaptığı mağazalardan biri olmalı. |
bad_order | Bir siparişte adı olan 1–50 ürün, tam kuruş tutarlar ve bilinen bir durum olur. |
card_number_refused | Kart numarası asla saklanmaz — yalnızca son dört hane. |
order_not_found | Güncelleme senin siparişlerinden birini göstermeli. |
Yayımladığı olaylar: work.order_placed, work.order_updated
Neye yazar: shop_order (update) — Writes the order, or its tracking
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 bad_store, bad_order, card_number_refused, order_not_found · 429 çok sık istek
work.record_step
Bir adımın ilerlemesini kaydet — Motorun raporu: alındı, ilerleme, şu an ne yaptığı, neye ihtiyacı olduğu, sonucu. Planın durumunu çıkarır. Yalnızca sistem.
Gereken izin work:handle · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/work_steps/{id}/actions/record_step- Asıl adres:
POST /api/v1/actions/work.record_step
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Adım · kimliği: work_step |
claim | boolean | Üstlen | |
status | string | Durum · queued | running | needs_you | done | failed | skipped | stopped · en çok 20 | |
progress | number | İlerleme · en az 0 · en çok 100 | |
activity | string | Şu an yaptığı · en çok 300 | |
need | object / array | Beklediği | |
executorRef | string | Yürütücü kaydı · en çok 200 | |
runtime | string | Çalıştığı yer · en çok 300 | |
result | object / array | Sonuç | |
error | string | Hata · en çok 1000 | |
checkpoint | object / array | Kontrol noktası · Yeniden başlatmadan sonra yürütücünün kaldığı yer: kaydı, imleci, o ana kadarki metin. |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
step_not_found | Bu adım bu çalışma alanında bulunamadı. |
bad_status | Durum geçerli bir adım durumu olmalı. |
bad_transition | Bitmiş bir adım değiştirilemez; yeniden denenebilir. |
bad_result | Sonuç ve ihtiyaç geçerli biçimde olmalı. |
bad_checkpoint | Ara kayıt en fazla 40.000 karakter olmalı. |
Yayımladığı olaylar: work.step_changed, work.needs_you, work.job_finished, work.held
Neye yazar: work_step (update) — Writes the step’s progress, checkpoint and result; work_job (update) — Holds the plan at its time limit and derives its status from its steps
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 step_not_found, bad_status, bad_transition, bad_result, bad_checkpoint · 429 çok sık istek
work.release_fork
Ödünç bilgisayarı geri ver — Adımın kopyayla işi bitti; bilgisayar çalışanı onu siler.
Gereken izin work:write · veriyi değiştirir
https://app.getera.io/api/v1/work_computer_forks/{id}/actions/release_fork- Asıl adres:
POST /api/v1/actions/work.release_fork
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Kopyala · kimliği: work_computer_fork |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
fork_not_found | Bu kopya bu çalışma alanında bulunamadı. |
already_released | Bu kopya zaten geri verilmiş. |
Yayımladığı olaylar: work.fork_requested
Neye yazar: work_computer_fork (update) — Marks it to be deleted
curl -X POST https://app.getera.io/api/v1/work_computer_forks/WORK_COMPUTER_FORK_ID/actions/release_fork \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"work.fork_requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workComputerForks.releaseFork("WORK_COMPUTER_FORK_ID")era work_computer_forks release_fork WORK_COMPUTER_FORK_ID{
"name": "era__work__release_fork",
"arguments": {
"id": "WORK_COMPUTER_FORK_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 fork_not_found, already_released · 429 çok sık istek
work.replan_step
Bir adımın eksik girdisini yeniden planla — İhtiyaç duyduğu girdiyi bulamayan adım (dışa ya da içe aktarılacak satır yok) için onu üretecek bir adım ekler ve onu bekler. Yalnız sistem kullanır.
Gereken izin work:handle · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/work_steps/{id}/actions/replan_step- Asıl adres:
POST /api/v1/actions/work.replan_step
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Adım · kimliği: work_step |
title | string | evet | Yeni adım · en çok 200 |
worker | string | evet | Süreç · en çok 20 |
instruction | string | Ne yapılacak · en çok 8000 | |
run | object / array | Nasıl çalışır | |
reason | string | Neden · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
step_not_found | Bu adım bu çalışma alanında bulunamadı. |
not_running | Eksik girdisini yalnızca çalışan bir adım ister. |
already_replanned | Bir adım girdisini bir kez yeniden planlar; ikinci eksik başarısızlık sayılır. |
unknown_worker | Yeni adım sekiz çalışandan birini belirtmeli. |
unknown_executor | Yeni adımın çalıştırılışı, Era’da bulunan bir yürütücüyü belirtmeli. |
unknown_credential | Erişim bilgisi adımı, Era’nın isteyebildiği bir erişim bilgisini belirtmeli. |
too_many_steps | Bir planda en fazla 12 adım olabilir. |
bad_steps | Yeni adımın bir başlığı olmalı. |
Yayımladığı olaylar: work.step_changed, work.needs_you, work.job_finished
Neye yazar: work_step (insert) — Adds the step that produces the missing input; work_step (update) — The consumer waits for it and goes back in line; work_job (update) — Notes the re-plan and derives the plan’s status
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 step_not_found, not_running, already_replanned, unknown_worker, unknown_executor, unknown_credential, too_many_steps, bad_steps · 429 çok sık istek
work.request_fork
Bulut bilgisayarımın bir kopyasını ödünç al — Bir adım için kendi giriş yapılmış bulut bilgisayarının kopyası — paralel uzmanların her biri kendi makinesinde çalışır.
Gereken izin work:write · veriyi değiştirir
https://app.getera.io/api/v1/work_computer_forks/actions/request_fork- Asıl adres:
POST /api/v1/actions/work.request_fork
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
stepId | uuid | evet | Adım · kimliği: work_step |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
step_not_found | Bu adım bu çalışma alanında bulunamadı. |
not_found | Adımın planı bulunamadı. |
not_owner | Bilgisayarının bir kopyasını yalnızca planı oluşturan kişi verebilir. |
no_base_computer | Planı oluşturan kişinin çalışan ya da uyku modunda bir bulut bilgisayarı olmalı. |
fork_limit | Bir iş için en fazla, çalışma alanı paketinizin "aynı anda" sayısı kadar kopya açılabilir. |
hours_used_up | Bu ayın bulut bilgisayar saatleri doldu. |
Yayımladığı olaylar: work.fork_requested
Neye yazar: work_computer_fork (insert) — Asks the computer worker for a copy
curl -X POST https://app.getera.io/api/v1/work_computer_forks/actions/request_fork \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"stepId":"WORK_STEP_ID"}'{
"ok": true,
"result": "…",
"events": [
"work.fork_requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workComputerForks.requestFork({
stepId: "WORK_STEP_ID"
})era work_computer_forks request_fork \
--step-id "WORK_STEP_ID"{
"name": "era__work__request_fork",
"arguments": {
"stepId": "WORK_STEP_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 step_not_found, not_found, not_owner, no_base_computer, fork_limit, hours_used_up · 429 çok sık istek
work.requeue_step
Bir adımı sıraya geri koy — Süreci kesilen adım sıraya döner; sonraki deneme son kayıt noktasından devam eder. Yalnızca makine.
Gereken izin work:handle · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/work_steps/{id}/actions/requeue_step- Asıl adres:
POST /api/v1/actions/work.requeue_step
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Adım · kimliği: work_step |
reason | string | Neden · en çok 300 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
step_not_found | Bu adım bu çalışma alanında bulunamadı. |
not_running | Yalnız çalışan bir adım sıraya geri döner. |
Yayımladığı olaylar: work.step_changed, work.needs_you, work.job_finished
Neye yazar: work_step (update) — Queues the step, keeping its checkpoint; work_job (update) — Derives the plan’s status
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 step_not_found, not_running · 429 çok sık istek
work.resume_job
Planı sürdür — Durmuş ya da başarısız bir planın bitmemiş adımlarını yeniden sıraya koyar.
Gereken izin work:write · veriyi değiştirir
https://app.getera.io/api/v1/work_jobs/{id}/actions/resume_job- Asıl adres:
POST /api/v1/actions/work.resume_job
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Plan · kimliği: work_job |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Plan bu çalışma alanında olmalı. |
not_stopped | Yalnız durmuş ya da başarısız bir plan sürdürülebilir. |
Yayımladığı olaylar: work.job_resumed
Neye yazar: work_step (update) — Queues the stopped and failed steps again; work_job (update) — Marks the plan running
curl -X POST https://app.getera.io/api/v1/work_jobs/WORK_JOB_ID/actions/resume_job \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"work.job_resumed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workJobs.resumeJob("WORK_JOB_ID")era work_jobs resume_job WORK_JOB_ID{
"name": "era__work__resume_job",
"arguments": {
"id": "WORK_JOB_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, not_stopped · 429 çok sık istek
work.retry_step
Bir adımı yeniden dene — Başarısız, durmuş ya da atlanmış bir adımı yeniden sıraya koyar.
Gereken izin work:write · veriyi değiştirir
https://app.getera.io/api/v1/work_steps/{id}/actions/retry_step- Asıl adres:
POST /api/v1/actions/work.retry_step
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Adım · kimliği: work_step |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
step_not_found | Bu adım bu çalışma alanında bulunamadı. |
not_failed | Yalnız başarısız, durmuş ya da atlanmış bir adım yeniden denenebilir. |
Yayımladığı olaylar: work.step_changed
Neye yazar: work_step (update) — Queues the step again; work_job (update) — Marks the plan running
curl -X POST https://app.getera.io/api/v1/work_steps/WORK_STEP_ID/actions/retry_step \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"work.step_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workSteps.retryStep("WORK_STEP_ID")era work_steps retry_step WORK_STEP_ID{
"name": "era__work__retry_step",
"arguments": {
"id": "WORK_STEP_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 step_not_found, not_failed · 429 çok sık istek
work.review_skill
Era’nın neyi tutacağına karar ver — Tut (çalışma alanının Era’ları kullanabilir), gizli tut (yalnız senin), düzelt ya da unut.
Gereken izin work:write · veriyi değiştirir
https://app.getera.io/api/v1/work_jobs/{id}/actions/review_skill- Asıl adres:
POST /api/v1/actions/work.review_skill
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Plan · kimliği: work_job |
decision | string (enum) | evet | Karar · İzin verilen değerler: keep, private, forget |
content | string | Düzeltilmiş adımlar · en çok 20000 | |
skillId | string | Kaydedilen beceri · en çok 200 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Plan bu çalışma alanında olmalı. |
no_proposal | Era bu plandan bir öneri yapmamış. |
already_reviewed | Bu öneri için zaten karar verilmiş. |
not_owner | Buna yalnızca planı oluşturan kişi karar verebilir. |
bad_skill | Saklanan bir becerinin adımları olmalı. |
Yayımladığı olaylar: work.skill_reviewed
Neye yazar: work_job (update) — Records the decision
curl -X POST https://app.getera.io/api/v1/work_jobs/WORK_JOB_ID/actions/review_skill \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"decision":"keep"}'{
"ok": true,
"result": "…",
"events": [
"work.skill_reviewed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workJobs.reviewSkill("WORK_JOB_ID", {
decision: "keep"
})era work_jobs review_skill WORK_JOB_ID \
--decision "keep"{
"name": "era__work__review_skill",
"arguments": {
"id": "WORK_JOB_ID",
"decision": "keep"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, no_proposal, already_reviewed, not_owner, bad_skill · 429 çok sık istek
work.set_limits
Planın bütçesini ya da süresini değiştir — Bir planın kaç dakika çalışabileceği. Süre sınırına takılan plan kaldığı yerden devam eder.
Gereken izin work:write · veriyi değiştirir
https://app.getera.io/api/v1/work_jobs/{id}/actions/set_limits- Asıl adres:
POST /api/v1/actions/work.set_limits
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Plan · kimliği: work_job |
maxMinutes | number | Süre sınırı (başlangıçtan itibaren dakika, boş = sınır yok) |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Plan bu çalışma alanında olmalı. |
already_finished | Bitmiş bir planın sınırları değiştirilemez. |
bad_limits | Süre sınırı 1 dakika ile bir hafta arasında olmalı. |
still_over | Yeni süre sınırı şu andan sonra bitmeli. |
Yayımladığı olaylar: work.limits_changed, work.needs_you, work.job_finished
Neye yazar: work_job (update) — Writes the time limit; lifts the hold it caused
curl -X POST https://app.getera.io/api/v1/work_jobs/WORK_JOB_ID/actions/set_limits \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"maxMinutes":1}'{
"ok": true,
"result": "…",
"events": [
"work.limits_changed",
"work.needs_you",
"work.job_finished"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workJobs.setLimits("WORK_JOB_ID", {
maxMinutes: 1
})era work_jobs set_limits WORK_JOB_ID \
--max-minutes 1{
"name": "era__work__set_limits",
"arguments": {
"id": "WORK_JOB_ID",
"maxMinutes": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_finished, bad_limits, still_over · 429 çok sık istek
work.set_shop_rule
Era’nın sormadan alacağı tutarı ayarla — Bu mağazada (ya da tüm mağazalarda) bu tutara kadarki alışverişler onay kartı olmadan alınır. Boş ya da 0 = her seferinde sor (varsayılan).
Gereken izin work:write · veriyi değiştirir
https://app.getera.io/api/v1/shop_rules/actions/set_shop_rule- Asıl adres:
POST /api/v1/actions/work.set_shop_rule
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
store | string | evet | Mağaza · getir | trendyol | yemeksepeti | hepsiburada | amazon_tr | migros | mock | * (tüm mağazalar) · en çok 40 |
askAboveMinor | number | Sormadan alışveriş sınırı (kuruş) · Tam kuruş, 0 ile 10 000 000 (100 000 TL) arası; 0 veya boş = her seferinde sor. | |
currency | string | Para birimi · en çok 3 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
bad_store | Mağaza, Era’nın alışveriş yaptığı mağazalardan biri ya da tümü için * olmalı. |
bad_amount | Sınır 1 kuruş ile 100.000 TL arasında bir tutar olmalı. |
Yayımladığı olaylar: work.shop_rule_changed
Neye yazar: shop_rule (update) — Writes or clears the person’s limit for that store
curl -X POST https://app.getera.io/api/v1/shop_rules/actions/set_shop_rule \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"store":"Store"}'{
"ok": true,
"result": "…",
"events": [
"work.shop_rule_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.shopRules.setShopRule({
store: "Store"
})era shop_rules set_shop_rule \
--store "Store"{
"name": "era__work__set_shop_rule",
"arguments": {
"store": "Store"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 bad_store, bad_amount · 429 çok sık istek
work.start_job
Bir plan başlat — Era’nın tek bir istek için planı: her biri bir uzmana (geliştirici, araştırma, büyüme, pazarlama, kreatif, veri, işletme, bilgisayar) verilen numaralı adımlar; birbirini beklemeyenler aynı anda çalışır.
Gereken izin work:write · veriyi değiştirir
https://app.getera.io/api/v1/work_jobs/actions/start_job- Asıl adres:
POST /api/v1/actions/work.start_job
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
title | string | evet | Ad · en çok 200 |
goal | string | Ne istendi · en çok 8000 | |
mode | string (enum) | Başlatıldığı yer · İzin verilen değerler: chat, background, scheduled | |
conversationId | string | Konuşma · en çok 200 | |
agentRef | string | Era · en çok 200 | |
askFirst | boolean | Plan için onayımı bekle | |
nextStep | string | Önerilen sonraki adım · en çok 300 | |
scopeCtx | object / array | Kapsam · Çalışanların kullandığı yetki kapsamı (yalnızca kimlikler). | |
steps | object / array | evet | Adımlar · [{ title, worker, instruction, run?: { kind, … }, dependsOn?: [önceki adım numaraları], confirm? }] |
deliverable | string | Teslim et · none (sonuçlar) | report (PDF + slayt olarak bir rapor) · en çok 20 | |
maxMinutes | number | Süre sınırı (dakika) |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
bad_limits | Süre sınırı 1 dakika ile bir hafta arasında olmalı. |
bad_deliverable | Plan ya sonuçlarını ya da bir rapor teslim etmeli. |
empty_title | Bir planın adı olmalı. |
no_steps | Bir planın en az bir adımı olmalı. |
too_many_steps | Bir planda en fazla 12 adım olabilir. |
bad_steps | Her adımın bir başlığı olmalı. |
unknown_worker | Her adım sekiz çalışandan birini belirtmeli. |
unknown_executor | Adımın çalıştırılması, Era’da bulunan bir yürütücüyü belirtmeli. |
unknown_credential | Erişim bilgisi adımı, Era’nın isteyebildiği bir erişim bilgisini belirtmeli. |
bad_dependency | Bir adım yalnızca aynı plandaki önceki bir adımı bekleyebilir. |
duplicate_step | Bir plan aynı işi bir kez yapar: aynı başlıkta, aynı dışa aktarma biçiminde ya da iki Satış aktarımında iki adım olmaz. |
Yayımladığı olaylar: work.job_started
Neye yazar: work_job (insert) — Writes the plan, running or waiting for approval; work_step (insert) — Writes its steps, queued
curl -X POST https://app.getera.io/api/v1/work_jobs/actions/start_job \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"title":"Name","steps":{}}'{
"ok": true,
"result": "…",
"events": [
"work.job_started"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workJobs.startJob({
title: "Name",
steps: {}
})era work_jobs start_job --data '{"title":"Name","steps":{}}'{
"name": "era__work__start_job",
"arguments": {
"title": "Name",
"steps": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 bad_limits, bad_deliverable, empty_title, no_steps, too_many_steps, bad_steps, unknown_worker, unknown_executor, unknown_credential, bad_dependency, duplicate_step · 429 çok sık istek
work.stop_job
Planı durdur — "Dur": bitmemiş her adım durur; biten bitmiş kalır.
Gereken izin work:write · veriyi değiştirir
https://app.getera.io/api/v1/work_jobs/{id}/actions/stop_job- Asıl adres:
POST /api/v1/actions/work.stop_job
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Plan · kimliği: work_job |
reason | string | Neden · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
not_found | Plan bu çalışma alanında olmalı. |
already_finished | Bitmiş bir plan durdurulamaz. |
Yayımladığı olaylar: work.job_stopped
Neye yazar: work_step (update) — Stops every unfinished step; work_job (update) — Marks the plan stopped and notes it
curl -X POST https://app.getera.io/api/v1/work_jobs/WORK_JOB_ID/actions/stop_job \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"reason":"Why"}'{
"ok": true,
"result": "…",
"events": [
"work.job_stopped"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workJobs.stopJob("WORK_JOB_ID", {
reason: "Why"
})era work_jobs stop_job WORK_JOB_ID \
--reason "Why"{
"name": "era__work__stop_job",
"arguments": {
"id": "WORK_JOB_ID",
"reason": "Why"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 not_found, already_finished · 429 çok sık istek
work.supervise_step
Çalışan bir adımı gözet — İş taramasının basamakları: sessiz kalan adımı dürt, kesip yeniden gönder (en çok iki kez), takılı kalırsa sana bırak, yanıtlanmamış bir onayı bir kez hatırlat. Yalnızca makine.
Gereken izin work:handle · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/work_steps/{id}/actions/supervise_step- Asıl adres:
POST /api/v1/actions/work.supervise_step
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Adım · kimliği: work_step |
op | string | evet | Basamak · nudge | recover | give_up | remind · en çok 20 |
quietMinutes | number | Sessiz kalma süresi (dakika) · en az 0 | |
reason | string | Neden · en çok 300 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
step_not_found | Bu adım bu çalışma alanında bulunamadı. |
bad_supervision | Dürt, yeniden başlat, sana bırak ya da hatırlat. |
not_running | Yalnızca çalışan bir adım dürtülür, yeniden başlatılır ya da sana bırakılır. |
recoveries_used | Bir adım en çok iki kez yeniden başlatılır; sonra seni bekler. |
not_waiting | Yalnızca seni bekleyen bir adım için hatırlatma yapılır. |
already_reminded | Her bekleyiş için tek hatırlatma. |
Yayımladığı olaylar: work.step_changed, work.needs_you, work.job_finished
Neye yazar: work_step (update) — Writes the ladder’s state; queues a restarted step (keeping its checkpoint) or hands a stuck one to you; work_job (update) — Derives the plan’s status
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 step_not_found, bad_supervision, not_running, recoveries_used, not_waiting, already_reminded · 429 çok sık istek
work.use_result
Bir sonucu kullan — Bir sonuç kartının kullanıldığını ya da yayımlandığını kaydeder (kartın kendi işlemi senin adına çalışır).
Gereken izin work:write · veriyi değiştirir
https://app.getera.io/api/v1/work_steps/{id}/actions/use_result- Asıl adres:
POST /api/v1/actions/work.use_result
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
stepId | uuid | evet | Doldurulduğu yer: adresteki {id} · Adım · kimliği: work_step |
card | number | evet | Sonuç · en az 0 · en çok 50 |
kind | string (enum) | evet | Ne · İzin verilen değerler: use, publish, approve, open |
target | string | Koşul · en çok 200 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
step_not_found | Bu adım bu çalışma alanında bulunamadı. |
no_such_card | Sonuç, adımın kartlarından biri olmalı. |
Yayımladığı olaylar: work.result_used
Neye yazar: work_step (update) — Marks the card used or live
curl -X POST https://app.getera.io/api/v1/work_steps/WORK_STEP_ID/actions/use_result \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"card":1,"kind":"use"}'{
"ok": true,
"result": "…",
"events": [
"work.result_used"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workSteps.useResult("WORK_STEP_ID", {
card: 1,
kind: "use"
})era work_steps use_result WORK_STEP_ID \
--card 1 \
--kind "use"{
"name": "era__work__use_result",
"arguments": {
"stepId": "WORK_STEP_ID",
"card": 1,
"kind": "use"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde work:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 step_not_found, no_such_card · 429 çok sık istek
Veri modelleri
ShopOrder
Tablo shop_order · Kaynak shop_orders
GET /api/v1/shop_ordersGET /api/v1/shop_orders/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
user_id | string (uuid) · uuid | app_user | ||
store | string · text | |||
request | string · text | |||
items | object · jsonb | |||
total_minor | string (int64) · int8 | evet | ||
delivery_fee_minor | string (int64) · int8 | evet | ||
currency | string · text | |||
status | string · text | placed, preparing, on_the_way, delivered, cancelled, unknown | ||
status_at | string (date-time) · timestamptz | |||
eta | string · text | evet | ||
courier | string · text | evet | ||
order_no | string · text | evet | ||
track_url | string · text | evet | ||
card_last4 | string · text | evet | ||
address_label | string · text | evet | ||
space | string · text | personal, business | ||
expense_id | string (uuid) · uuid | evet | ||
job_id | string (uuid) · uuid | evet | work_job | |
step_id | string (uuid) · uuid | evet | work_step | |
auto_approved | boolean · bool | |||
visibility | string · text | private, workspace | ||
placed_at | string (date-time) · timestamptz | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK (((address_label IS NULL) OR (length(address_label) <= 300)))CHECK (((card_last4 IS NULL) OR (card_last4 ~ '^[0-9]{4}$'::text)))CHECK (((courier IS NULL) OR (length(courier) <= 200)))CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK (((delivery_fee_minor IS NULL) OR (delivery_fee_minor >= 0)))CHECK (((eta IS NULL) OR (length(eta) <= 200)))CHECK ((jsonb_typeof(items) = 'array'::text))CHECK (((order_no IS NULL) OR (length(order_no) <= 120)))CHECK ((length(request) <= 1000))CHECK ((store ~ '^[a-z_]{2,40}$'::text))CHECK (((total_minor IS NULL) OR (total_minor >= 0)))CHECK (((track_url IS NULL) OR (length(track_url) <= 2000)))
ShopRule
Tablo shop_rule · Kaynak shop_rules
GET /api/v1/shop_rulesGET /api/v1/shop_rules/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
user_id | string (uuid) · uuid | app_user | ||
store | string · text | |||
ask_above_minor | string (int64) · int8 | |||
currency | string · text | |||
visibility | string · text | private, workspace | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: workspace_id, user_id, store
Denetimler:
CHECK (((ask_above_minor > 0) AND (ask_above_minor <= 10000000)))CHECK ((currency ~ '^[A-Z]{3}$'::text))CHECK ((store ~ '^(\*\|[a-z_]{2,40})$'::text))
WorkComputerFork
Tablo work_computer_fork · Kaynak work_computer_forks
GET /api/v1/work_computer_forksGET /api/v1/work_computer_forks/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
job_id | string (uuid) · uuid | work_job | ||
step_id | string (uuid) · uuid | work_step | ||
owner_user_id | string (uuid) · uuid | app_user | ||
base_machine_id | string (uuid) · uuid | computer_machine | ||
provider | string · text | |||
external_id | string · text | evet | ||
device_id | string · text | evet | ||
state | string · text | requested, forking, running, releasing, released, failed | ||
error | string · text | evet | ||
seconds_used | string (int64) · int8 | |||
started_at | string (date-time) · timestamptz | evet | ||
released_at | string (date-time) · timestamptz | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK (((device_id IS NULL) OR (length(device_id) <= 200)))CHECK (((error IS NULL) OR (length(error) <= 500)))CHECK (((external_id IS NULL) OR (length(external_id) <= 200)))CHECK ((seconds_used >= 0))
WorkJob
Tablo work_job · Kaynak work_jobs
GET /api/v1/work_jobsGET /api/v1/work_jobs/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
title | string · text | |||
goal | string · text | |||
status | string · text | proposed, running, needs_you, done, failed, stopped | ||
mode | string · text | chat, background, scheduled | ||
conversation_id | string · text | evet | ||
agent_ref | string · text | evet | ||
ask_first | boolean · bool | |||
plan_approved_at | string (date-time) · timestamptz | evet | ||
next_step | string · text | evet | ||
steering | object · jsonb | |||
scope_ctx | object · jsonb | |||
summary | string · text | evet | ||
created_by | string (uuid) · uuid | app_user | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
finished_at | string (date-time) · timestamptz | evet | ||
deliverable | string · text | none, report | ||
max_minutes | integer · int4 | evet | ||
deadline_at | string (date-time) · timestamptz | evet | ||
hold | object · jsonb | evet | ||
learned | object · jsonb | evet | ||
assignee_user_id | string (uuid) · uuid | evet | app_user | |
visibility | string · text | private, workspace |
Birincil anahtar: id
Denetimler:
CHECK ((length(goal) <= 8000))CHECK (((hold IS NULL) OR ((jsonb_typeof(hold) = 'object'::text) AND (hold ? 'kind'::text))))CHECK (((learned IS NULL) OR ((jsonb_typeof(learned) = 'object'::text) AND (learned ? 'status'::text))))CHECK (((max_minutes IS NULL) OR ((max_minutes >= 1) AND (max_minutes <= 10080))))CHECK (((next_step IS NULL) OR (length(next_step) <= 300)))CHECK ((jsonb_typeof(scope_ctx) = 'object'::text))CHECK ((jsonb_typeof(steering) = 'array'::text))CHECK (((summary IS NULL) OR (length(summary) <= 4000)))CHECK (((length(btrim(title)) >= 1) AND (length(btrim(title)) <= 200)))
WorkStep
Tablo work_step · Kaynak work_steps
GET /api/v1/work_stepsGET /api/v1/work_steps/{id}
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
job_id | string (uuid) · uuid | work_job | ||
position | integer · int4 | |||
title | string · text | |||
instruction | string · text | |||
worker | string · text | dev, research, growth, marketing, creative, data, business, computer | ||
run | object · jsonb | |||
depends_on | string[] · uuid[] | |||
confirm | boolean · bool | |||
status | string · text | queued, running, needs_you, done, failed, skipped, stopped | ||
progress | integer · int4 | |||
activity | string · text | evet | ||
need | object · jsonb | evet | ||
executor_ref | string · text | evet | ||
runtime | string · text | evet | ||
result | object · jsonb | |||
error | string · text | evet | ||
started_at | string (date-time) · timestamptz | evet | ||
finished_at | string (date-time) · timestamptz | evet | ||
heartbeat_at | string (date-time) · timestamptz | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
checkpoint | object · jsonb | evet | ||
checkpoint_at | string (date-time) · timestamptz | evet | ||
attempts | integer · int4 | |||
supervision | object · jsonb | evet |
Birincil anahtar: id
Denetimler:
CHECK (((activity IS NULL) OR (length(activity) <= 300)))CHECK (((attempts >= 0) AND (attempts <= 1000)))CHECK (((checkpoint IS NULL) OR (jsonb_typeof(checkpoint) = 'object'::text)))CHECK (((error IS NULL) OR (length(error) <= 1000)))CHECK (((executor_ref IS NULL) OR (length(executor_ref) <= 200)))CHECK ((length(instruction) <= 8000))CHECK (((need IS NULL) OR (jsonb_typeof(need) = 'object'::text)))CHECK ((("position" >= 1) AND ("position" <= 50)))CHECK (((progress >= 0) AND (progress <= 100)))CHECK ((jsonb_typeof(result) = 'object'::text))CHECK (((jsonb_typeof(run) = 'object'::text) AND (run ? 'kind'::text)))CHECK (((runtime IS NULL) OR (length(runtime) <= 300)))CHECK (((supervision IS NULL) OR (jsonb_typeof(supervision) = 'object'::text)))CHECK (((length(btrim(title)) >= 1) AND (length(btrim(title)) <= 200)))
Olaylar
İş akışları ve webhook'lar bu olaylara tepki verir.
| Olay | Ne olur | Taşıdığı alanlar |
|---|---|---|
work.fork_changed | Ödünç bir bulut bilgisayarı açıldı, çalıştı, geri verildi ya da açılamadı. | id, state, jobId, stepId |
work.fork_requested | Bir adım, sahibinin bulut bilgisayarının bir kopyasını istedi (ya da geri verdi). | id, op, jobId, stepId |
work.held | Bir plan bütçesine ya da süre sınırına ulaştı ve seni bekliyor. | id, title, kind, steps |
work.job_assigned | Bir plan bir kişiye ya da yeniden Era’ya verildi, ya da kimin göreceği değişti. | id, title, assigneeUserId, visibility, link, recipientUserId |
work.job_finished | Bir plan bitti (tamamlandı, başarısız oldu ya da durduruldu). | id, title, status, message, link, recipientUserId |
work.job_resumed | Durmuş bir plan sürdürüldü. | id, title, steps |
work.job_started | Era bir plan başlattı (ya da onaya sundu). | id, title, steps, status, recipientUserId |
work.job_stopped | Biri bir planı durdurdu. | id, title |
work.limits_changed | Bir planın bütçesi ya da süresi değişti. | id, maxMinutes, resumed |
work.needs_you | Bir plan seni bekliyor — bir onay, bir kimlik bilgisi ya da bir bilgisayar. | id, title, message, link, recipientUserId |
work.order_placed | Era, kişinin mağaza hesabından sipariş verdi. | id, store, title, total, currency, status, eta, recipientUserId |
work.order_updated | Era’nın verdiği sipariş ilerledi (hazırlanıyor, yolda, teslim edildi). | id, store, status, eta, recipientUserId |
work.plan_approved | Bir plan onaylandı; uzmanlar başlıyor. | id, title |
work.result_used | Bir sonuç kartı kullanıldı ya da yayımlandı. | id, jobId, card, kind, target |
work.shop_rule_changed | Birisi Era’nın sormadan alacağı tutarı değiştirdi. | store, askAboveMinor |
work.skill_proposed | Era işe yarayan bir plandan bir yöntem öğrendi ve tutulup tutulmayacağını soruyor. | id, title, name, message, link, recipientUserId |
work.skill_reviewed | Planın sahibi Era’nın öğrendiğini tuttu, gizli tuttu ya da unutturdu. | id, decision, skillId |
work.step_changed | Bir adım alındı, bitti, eklendi, değiştirildi ya da yanıtlandı. | id, jobId, status |