Era içgörüleri API

Era içgörüleri modülünün tüm işlemleri (6) ve veri modelleri (2): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.

Era sen sormadan söyler: işinde neyin değiştiğini kaynaklarıyla, doğrulayamadıklarıyla ve bir sonraki adımla — yalnız sana.

Modül kodu insights · 6 işlem · 2 veri modeli · 0 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ı: insights (hepsi), insights:read (yalnız okuma) ya da insights:<yetenek>.

Kaynaklar

KaynakTabloListeleme ve okumaPOSTPATCHDELETE
insight_settingsmember_insight_setting/api/v1/insight_settings
insightsmember_insight/api/v1/insights

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

İşlemGereken izinNe yapar
insights.ackinsights:writeİçgörüyü işaretle
insights.feedbackinsights:writeİşe yaradı mı?
insights.mark_deliveredinsights:writeİçgörüyü iletildi say
insights.muteinsights:writeBu türü sustur
insights.recordinsights:writeBenim için içgörü kaydet
insights.update_settingsinsights:writeİçgörü ayarları

insights.ack

İçgörüyü işaretle — Görüldü, yapıldı ya da kapatıldı (durum çözüldüyse süresi doldu).

Gereken izin insights:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/insights/{id}/actions/ack
API anahtarı ya da OAuth token · insights:write
  • Asıl adres: POST /api/v1/actions/insights.ack

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · İçgörü · kimliği: member_insight
statusstring (enum)Durum · İzin verilen değerler: seen, done, dismissed, expired

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
bad_statusDurum görüldü, yapıldı, kapatıldı ya da süresi doldu olmalı.
insight_not_foundİçgörü senin olmalı.

Neye yazar: member_insight (update) — Saves the status

curl -X POST https://app.getera.io/api/v1/insights/INSIGHT_ID/actions/ack \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"status":"seen"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": []
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.insights.ack("INSIGHT_ID", {
  status: "seen"
})
era insights ack INSIGHT_ID \
  --status "seen"
tools/call
{
  "name": "era__insights__ack",
  "arguments": {
    "id": "INSIGHT_ID",
    "status": "seen"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde insights:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 bad_status, insight_not_found · 429 çok sık istek

insights.feedback

İşe yaradı mı? — İşe yaradı ya da yaramadı — Era bu türü senin için yukarı ya da aşağı taşır.

Gereken izin insights:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/insights/{id}/actions/feedback
API anahtarı ya da OAuth token · insights:write
  • Asıl adres: POST /api/v1/actions/insights.feedback

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · İçgörü · kimliği: member_insight
verdictstring (enum)evetKarar · İzin verilen değerler: useful, not_useful

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
bad_verdictCevap “işe yaradı” ya da “işe yaramadı” olmalı.
insight_not_foundİçgörü senin olmalı.

Neye yazar: member_insight (update) — Saves your verdict; member_insight_setting (update) — Moves that kind’s rank for you

curl -X POST https://app.getera.io/api/v1/insights/INSIGHT_ID/actions/feedback \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"verdict":"useful"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": []
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.insights.feedback("INSIGHT_ID", {
  verdict: "useful"
})
era insights feedback INSIGHT_ID \
  --verdict "useful"
tools/call
{
  "name": "era__insights__feedback",
  "arguments": {
    "id": "INSIGHT_ID",
    "verdict": "useful"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde insights:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 bad_verdict, insight_not_found · 429 çok sık istek

insights.mark_delivered

İçgörüyü iletildi say — Bir yüzey (zil, masaüstü sohbeti, masaüstü bildirimi) içgörüyü gösterdiğini bildirir.

Gereken izin insights:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/insights/{id}/actions/mark_delivered
API anahtarı ya da OAuth token · insights:write
  • Asıl adres: POST /api/v1/actions/insights.mark_delivered

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · İçgörü · kimliği: member_insight
channelstring (enum)evetKanal · İzin verilen değerler: desktop_chat, desktop_notification, bell, digest_email, digest_whatsapp

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
bad_channelKanal içgörülerin gittiği kanallardan biri olmalı.
insight_not_foundİçgörü senin olmalı.

Neye yazar: member_insight (update) — Stamps where it was shown

curl -X POST https://app.getera.io/api/v1/insights/INSIGHT_ID/actions/mark_delivered \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"channel":"desktop_chat"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": []
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.insights.markDelivered("INSIGHT_ID", {
  channel: "desktop_chat"
})
era insights mark_delivered INSIGHT_ID \
  --channel "desktop_chat"
tools/call
{
  "name": "era__insights__mark_delivered",
  "arguments": {
    "id": "INSIGHT_ID",
    "channel": "desktop_chat"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde insights:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 bad_channel, insight_not_found · 429 çok sık istek

insights.mute

Bu türü sustur — Bir içgörü türünü senin için durdurur ya da yeniden açar.

Gereken izin insights:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/insight_settings/actions/mute
API anahtarı ya da OAuth token · insights:write
  • Asıl adres: POST /api/v1/actions/insights.mute

Girdi

AlanTürZorunluAçıklama
kindstring (enum)evetTür · İzin verilen değerler: assigned_to_me, dependency_changed, blocker, deadline, customer_complaint, order_late, invoice_overdue, conflicting_facts, asked_of_me, today_open_questions
mutedbooleanSessize alındı · false resumes it

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
unknown_kindTür Era’nın bildiği bir tür olmalı.

Neye yazar: member_insight_setting (update) — Switches the kind off or on for you; member_insight (update) — Dismisses what was waiting of that kind

curl -X POST https://app.getera.io/api/v1/insight_settings/actions/mute \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"kind":"assigned_to_me"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": []
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.insightSettings.mute({
  kind: "assigned_to_me"
})
era insight_settings mute \
  --kind "assigned_to_me"
tools/call
{
  "name": "era__insights__mute",
  "arguments": {
    "kind": "assigned_to_me"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde insights:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 unknown_kind · 429 çok sık istek

insights.record

Benim için içgörü kaydet — Era’nın taraması seni ilgilendiren bir şeyi kaynaklarıyla, doğrulayamadıklarıyla ve bir sonraki adımla not eder.

Gereken izin insights:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/insights/actions/record
API anahtarı ya da OAuth token · insights:write
  • Asıl adres: POST /api/v1/actions/insights.record

Girdi

AlanTürZorunluAçıklama
kindstring (enum)evetTür · İzin verilen değerler: assigned_to_me, dependency_changed, blocker, deadline, customer_complaint, order_late, invoice_overdue, conflicting_facts, asked_of_me, today_open_questions
dedupeKeystringevetSame-situation key · en çok 300
titlestringevetBaşlık · en çok 200
bodystringMesaj · en çok 4000
severitystring (enum)How pressing · İzin verilen değerler: info, attention, urgent
scorenumberRank · en az -10 · en çok 10
factsobject / arrayFacts it was drawn from
sourcesobject / arrayKaynaklar · [{label, href, kind, ref}]
unverifiedobject / arrayWhat could not be verified
actionsobject / arrayNext steps · [{kind: open|reply|create_task|ask, label, href}]
localestring (enum)Dil · İzin verilen değerler: tr, en
composedByobject / arrayWritten by
deliverAfterdate-timeHold until
expiresAtdate-timeSona erme

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
unknown_kindİçgörü Era’nın bildiği türlerden biri olmalı.
empty_titleİçgörünün bir başlığı olmalı.
invalid_evidenceKaynaklar, gerçekler, çekinceler ve adımlar doğru biçimde kısa listeler olmalı.
already_notedAynı durum aynı hâliyle bir kez söylenir.

Neye yazar: member_insight (insert) — Adds the insight, for you only

curl -X POST https://app.getera.io/api/v1/insights/actions/record \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"kind":"assigned_to_me","dedupeKey":"Same-situation key","title":"Title"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": []
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.insights.record({
  kind: "assigned_to_me",
  dedupeKey: "Same-situation key",
  title: "Title"
})
era insights record \
  --kind "assigned_to_me" \
  --dedupe-key "Same-situation key" \
  --title "Title"
tools/call
{
  "name": "era__insights__record",
  "arguments": {
    "kind": "assigned_to_me",
    "dedupeKey": "Same-situation key",
    "title": "Title"
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde insights:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 unknown_kind, empty_title, invalid_evidence, already_noted · 429 çok sık istek

insights.update_settings

İçgörü ayarları — İçgörüleri aç/kapa; türleri, sessiz saatleri, kanalları ve günlük sınırı seç.

Gereken izin insights:write · veriyi değiştirir

POSThttps://app.getera.io/api/v1/insight_settings/actions/update_settings
API anahtarı ya da OAuth token · insights:write
  • Asıl adres: POST /api/v1/actions/insights.update_settings

Girdi

AlanTürZorunluAçıklama
enabledbooleanAçık
kindsobject / arrayKinds · {kind: true|false}
quietStartnumberQuiet from (hour) · en az 0 · en çok 23
quietEndnumberQuiet until (hour) · en az 0 · en çok 23
timezonestringSaat dilimi · en çok 64
channelsobject / arrayKanallar · desktop_chat · desktop_notification · bell · digest_email · digest_whatsapp
dailyCapnumberGünde en fazla · en az 0 · en çok 20

Ön koşullar

Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:

KodNe zaman reddedilir
bad_hoursSessiz saatler bilinen bir saat diliminde tam saatler olmalı.
bad_capGünlük sınır 0 ile 20 arasında olmalı.
bad_switchesTürler ve kanallar açık/kapalı değerli bilinen adlar olmalı.

Neye yazar: member_insight_setting (update) — Saves your insight settings

curl -X POST https://app.getera.io/api/v1/insight_settings/actions/update_settings \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"enabled":true}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": []
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.insightSettings.updateSettings({
  enabled: true
})
era insight_settings update_settings \
  --enabled true
tools/call
{
  "name": "era__insights__update_settings",
  "arguments": {
    "enabled": true
  }
}

Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde insights:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 bad_hours, bad_cap, bad_switches · 429 çok sık istek

Veri modelleri

MemberInsightSetting

Tablo member_insight_setting · Kaynak insight_settings

  • GET /api/v1/insight_settings
  • GET /api/v1/insight_settings/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
user_idstring (uuid) · uuidapp_user
enabledboolean · bool
kindsobject · jsonb
weightsobject · jsonb
quiet_startinteger · int2
quiet_endinteger · int2
timezonestring · text
channelsobject · jsonb
daily_capinteger · int2
watermarkstring (int64) · int8
last_swept_atstring (date-time) · timestamptzevet
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz

Birincil anahtar: id

Tekil: workspace_id, user_id

Denetimler:

  • CHECK ((jsonb_typeof(channels) = 'object'::text))
  • CHECK (((daily_cap >= 0) AND (daily_cap <= 20)))
  • CHECK ((jsonb_typeof(kinds) = 'object'::text))
  • CHECK (((quiet_end >= 0) AND (quiet_end <= 23)))
  • CHECK (((quiet_start >= 0) AND (quiet_start <= 23)))
  • CHECK (((length(timezone) >= 1) AND (length(timezone) <= 64)))
  • CHECK ((jsonb_typeof(weights) = 'object'::text))

MemberInsight

Tablo member_insight · Kaynak insights

  • GET /api/v1/insights
  • GET /api/v1/insights/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
user_idstring (uuid) · uuidapp_user
kindstring · textassigned_to_me, dependency_changed, blocker, deadline, customer_complaint, order_late, invoice_overdue, conflicting_facts, asked_of_me, today_open_questions
dedupe_keystring · text
severitystring · textinfo, attention, urgent
scorenumber · float4
titlestring · text
bodystring · text
factsobject · jsonb
sourcesobject · jsonb
unverifiedobject · jsonb
actionsobject · jsonb
localestring · texttr, en
composed_byobject · jsonb
statusstring · textnew, seen, done, dismissed, expired
feedbackstring · textevet
deliveredobject · jsonb
deliver_afterstring (date-time) · timestamptzevet
expires_atstring (date-time) · timestamptzevet
seen_atstring (date-time) · timestamptzevet
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz

Birincil anahtar: id

Tekil: workspace_id, user_id, dedupe_key

Denetimler:

  • CHECK ((jsonb_typeof(actions) = 'array'::text))
  • CHECK ((length(body) <= 4000))
  • CHECK ((jsonb_typeof(composed_by) = 'object'::text))
  • CHECK (((length(dedupe_key) >= 1) AND (length(dedupe_key) <= 300)))
  • CHECK ((jsonb_typeof(delivered) = 'object'::text))
  • CHECK ((jsonb_typeof(facts) = 'array'::text))
  • CHECK (((feedback IS NULL) OR (feedback = ANY (ARRAY['useful'::text, 'not_useful'::text]))))
  • CHECK ((jsonb_typeof(sources) = 'array'::text))
  • CHECK (((length(btrim(title)) >= 1) AND (length(btrim(title)) <= 200)))
  • CHECK ((jsonb_typeof(unverified) = 'array'::text))
Bu sayfa yardımcı oldu mu?