Gelen kutusu API
Gelen kutusu modülünün tüm işlemleri (63) ve veri modelleri (22): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.
Tüm kanallar tek gelen kutusunda — konuşmalar, yanıtlar, ekipler ve kimin yanıtladığı.
Modül kodu inbox · 63 işlem · 22 veri modeli · 45 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ı: inbox (hepsi), inbox:read (yalnız okuma) ya da inbox:<yetenek>.
Kaynaklar
| Kaynak | Tablo | Listeleme ve okuma | POST | PATCH | DELETE |
|---|---|---|---|---|---|
agent_bot_inboxes | agent_bot_inbox | /api/v1/agent_bot_inboxes | |||
agent_bots | agent_bot | /api/v1/agent_bots | inbox.save_agent_bot | inbox.delete_agent_bot | |
applied_slas | applied_sla | /api/v1/applied_slas | |||
assignment_policies | assignment_policy | /api/v1/assignment_policies | inbox.save_assignment_policy | ||
canned_responses | canned_response | /api/v1/canned_responses | inbox.save_canned_response | inbox.delete_canned_response | |
conversation_mentions | conversation_mention | /api/v1/conversation_mentions | |||
conversation_participants | conversation_participant | /api/v1/conversation_participants | |||
conversations | conversation | /api/v1/conversations | inbox.open_conversation | ||
csat_survey_responses | csat_survey_response | /api/v1/csat_survey_responses | |||
inbox_member_preferences | inbox_member_preference | /api/v1/inbox_member_preferences | |||
inbox_members | inbox_member | /api/v1/inbox_members | |||
inbox_working_hours | inbox_working_hour | /api/v1/inbox_working_hours | |||
inboxes | inbox | /api/v1/inboxes | inbox.create_inbox | inbox.update_inbox | |
macros | macro | /api/v1/macros | inbox.save_macro | inbox.delete_macro | |
message_attachments | message_attachment | /api/v1/message_attachments | |||
messages | message | /api/v1/messages | inbox.delete_message | ||
reporting_events | reporting_event | /api/v1/reporting_events | |||
sla_events | sla_event | /api/v1/sla_events | |||
sla_policies | sla_policy | /api/v1/sla_policies | inbox.save_sla_policy | inbox.delete_sla_policy | |
team_members | team_member | /api/v1/team_members | |||
teams | team | /api/v1/teams | inbox.save_team | inbox.delete_team | |
whatsapp_message_templates | whatsapp_message_template | /api/v1/whatsapp_message_templates |
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 |
|---|---|---|
inbox.add_participant | inbox:write | Takipçi ekle |
inbox.add_private_note | inbox:comment | Özel not ekle |
inbox.apply_sla | inbox:write | SLA uygula |
inbox.assign | inbox:write | Konuşmayı ata |
inbox.assign_bot | inbox:write | Konuşmayı bota devret |
inbox.assign_era | inbox:write | Bir konuşmayı Era’ya ver |
inbox.assign_team | inbox:write | Konuşmayı ekibe taşı |
inbox.auto_assign | inbox:write | Otomatik ata |
inbox.bot_reply | inbox:handle | Bot yanıtlar |
inbox.bot_set_status | inbox:handle | Bot devreder ya da çözer |
inbox.bulk_update | inbox:write | Birden çok konuşmayı değiştir |
inbox.change_customer | inbox:write | Konuşmayı başka bir kişiye taşı |
inbox.create_inbox | inbox:manage | Kanal bağla |
inbox.deactivate_inbox | inbox:manage | Kanalı hizmetten çıkar |
inbox.delete_agent_bot | inbox:manage | Botu kaldır |
inbox.delete_canned_response | inbox:manage | Hazır yanıtı sil |
inbox.delete_macro | inbox:write | Makroyu sil |
inbox.delete_message | inbox:delete | Mesajı sil |
inbox.delete_sla_policy | inbox:manage | SLA politikasını sil |
inbox.delete_team | inbox:manage | Ekibi sil |
inbox.edit_message | inbox:write | Mesajı düzenle |
inbox.evaluate_sla | inbox:handle | SLA’yı kontrol et |
inbox.ingest | inbox:handle | Gelen mesajı al |
inbox.mark_read | inbox:read | Okundu işaretle |
inbox.mark_unread | inbox:read | Okunmadı olarak işaretle |
inbox.mute | inbox:write | Sessize al |
inbox.open_conversation | inbox:write | Konuşma başlat |
inbox.record_bot_delivery | inbox:handle | Bot teslimatını kaydet |
inbox.record_channel_health | inbox:handle | Bağlantı testini kaydet |
inbox.record_delivery | inbox:handle | Kanalın bildirdiğini kaydet |
inbox.record_poll_state | inbox:handle | Posta kutusu imlecini kaydet |
inbox.record_visitor_seen | inbox:handle | Ziyaretçinin konuşmayı gördüğünü kaydet |
inbox.remove_participant | inbox:write | Takipçiyi kaldır |
inbox.reopen | inbox:write | Konuşmayı yeniden aç |
inbox.reply | inbox:write | Yanıtla |
inbox.reset_agent_bot_credentials | inbox:manage | Botun anahtarını sıfırla |
inbox.resolve | inbox:write | Konuşmayı çöz |
inbox.retry_delivery | inbox:write | Yeniden göndermeyi dene |
inbox.review_csat | inbox:write | Puanı incele |
inbox.run_macro | inbox:write | Makroyu çalıştır |
inbox.save_agent_bot | inbox:manage | Bot kaydet |
inbox.save_assignment_policy | inbox:manage | Yönlendirme kuralını kaydet |
inbox.save_canned_response | inbox:manage | Hazır yanıtı kaydet |
inbox.save_macro | inbox:write | Makroyu kaydet |
inbox.save_reply_from_message | inbox:manage | Bunu hazır yanıt olarak kaydet |
inbox.save_sla_policy | inbox:manage | SLA politikasını kaydet |
inbox.save_team | inbox:manage | Ekibi kaydet |
inbox.send_transcript | inbox:write | Dökümü e-postala |
inbox.set_auto_resolve | inbox:manage | Otomatik çözmeyi ayarla |
inbox.set_inbox_bot | inbox:manage | Kanalın botunu seç |
inbox.set_inbox_members | inbox:manage | Gelen kutusunda kimin çalışacağını belirle |
inbox.set_inbox_policy | inbox:manage | Gelen kutusunun yönlendirme kuralını belirle |
inbox.set_mailbox | inbox:manage | Posta kutusunu Gmail ya da Outlook ile bağla |
inbox.set_member_preference | inbox:read | Gelen kutusu tercihlerini kaydet |
inbox.set_priority | inbox:write | Önceliği belirle |
inbox.set_team_members | inbox:manage | Ekip üyelerini belirle |
inbox.set_working_hours | inbox:manage | Çalışma saatlerini belirle |
inbox.snooze | inbox:write | Konuşmayı ertele |
inbox.submit_csat | inbox:handle | Puanı al |
inbox.sync_whatsapp_templates | inbox:manage | WhatsApp şablonlarını eşitle |
inbox.translate_message | inbox:write | Mesajı çevir |
inbox.unmute | inbox:write | Sesi aç |
inbox.update_inbox | inbox:manage | Gelen kutusunu düzenle |
inbox.add_participant
Takipçi ekle — Birinin atanmadan konuşmayı takip etmesini sağlar.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/conversation_participants/actions/add_participant- Asıl adres:
POST /api/v1/actions/inbox.add_participant
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Konuşma · kimliği: conversation |
userId | uuid | evet | Kişi |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
not_a_member | Kişi çalışma alanının aktif bir üyesi olmalı. |
already_participating | Kişi bunu zaten takip ediyor olmamalı. |
Yayımladığı olaylar: inbox.participant_added
Neye yazar: conversation_participant (insert) — Adds the follower
curl -X POST https://app.getera.io/api/v1/conversation_participants/actions/add_participant \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"CONVERSATION_ID","userId":"USER_ID"}'{
"ok": true,
"result": "…",
"events": [
"inbox.participant_added"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversationParticipants.addParticipant({
id: "CONVERSATION_ID",
userId: "USER_ID"
})era conversation_participants add_participant \
--id "CONVERSATION_ID" \
--user-id "USER_ID"{
"name": "era__inbox__add_participant",
"arguments": {
"id": "CONVERSATION_ID",
"userId": "USER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, not_a_member, already_participating · 429 çok sık istek
inbox.add_private_note
Özel not ekle — Konuşmaya müşterinin asla görmediği bir not bırakır.
Gereken izin inbox:comment · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/add_private_note- Asıl adres:
POST /api/v1/actions/inbox.add_private_note
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
conversationId | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
content | string | Mesaj · en çok 150000 | |
contentType | string (enum) | Tür · İzin verilen değerler: text, input_text, input_textarea, input_email, input_select, cards, form, article, incoming_email, input_csat, integrations, sticker, voice_call | |
attachments | object / array | Ekler | |
cannedResponseId | uuid | Kayıtlı yanıt · kimliği: canned_response | |
templateId | uuid | WhatsApp şablonu · kimliği: whatsapp_message_template | |
templateVariables | object / array | Şablon değerleri | |
cc | object / array | Cc · Yalnızca e-posta: yanıtı alacak diğer adresler. | |
bcc | object / array | Bcc · Yalnızca e-posta: yanıtı gizli olarak alacak adresler. | |
replyToMessageId | uuid | Yanıtlanan mesaj · kimliği: message |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
empty_message | Mesaj metin veya ek gerektirir. |
too_many_attachments | Bir mesaj en fazla on beş ek taşır. |
too_many_messages | Bir konuşmada bir dakikada çok fazla mesaj. |
canned_response_not_found | Hazır yanıt hâlâ bulunmalı. |
mentioned_cannot_read | Anılan herkes gelen kutusunda çalışır veya onu yönetir; böylece konuşmayı açabilirler. |
Yayımladığı olaylar: inbox.note_added, inbox.mentioned, inbox.user_mentioned
Neye yazar: message (insert) — Writes the private note; message_attachment (insert) — Attaches files; conversation (update) — Touches the activity clock; conversation_mention (upsert) — Records who was mentioned; conversation_participant (insert) — Makes the people mentioned followers
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/add_private_note \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"content":"Message"}'{
"ok": true,
"result": "…",
"events": [
"inbox.note_added",
"inbox.mentioned",
"inbox.user_mentioned"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.addPrivateNote("CONVERSATION_ID", {
content: "Message"
})era conversations add_private_note CONVERSATION_ID \
--content "Message"{
"name": "era__inbox__add_private_note",
"arguments": {
"conversationId": "CONVERSATION_ID",
"content": "Message"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:comment izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, empty_message, too_many_attachments, too_many_messages, canned_response_not_found, mentioned_cannot_read · 429 çok sık istek
inbox.apply_sla
SLA uygula — Bir konuşmayı bir yanıt süresi politikasına göre ölçer.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/applied_slas/actions/apply_sla- Asıl adres:
POST /api/v1/actions/inbox.apply_sla
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
conversationId | uuid | evet | Konuşma · kimliği: conversation |
policyId | uuid | evet | Politika · kimliği: sla_policy |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
sla_policy_not_found | Politika bulunmalı. |
sla_already_applied | Bir konuşma kendisine verilen ilk SLA’yı korur. |
Yayımladığı olaylar: inbox.sla_applied, inbox.sla_missed
Neye yazar: applied_sla (insert) — Starts measuring; sla_event (insert) — Records a target already missed
curl -X POST https://app.getera.io/api/v1/applied_slas/actions/apply_sla \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"conversationId":"CONVERSATION_ID","policyId":"SLA_POLICY_ID"}'{
"ok": true,
"result": "…",
"events": [
"inbox.sla_applied",
"inbox.sla_missed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appliedSlas.applySla({
conversationId: "CONVERSATION_ID",
policyId: "SLA_POLICY_ID"
})era applied_slas apply_sla \
--conversation-id "CONVERSATION_ID" \
--policy-id "SLA_POLICY_ID"{
"name": "era__inbox__apply_sla",
"arguments": {
"conversationId": "CONVERSATION_ID",
"policyId": "SLA_POLICY_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, sla_policy_not_found, sla_already_applied · 429 çok sık istek
inbox.assign
Konuşmayı ata — Konuşmayı o gelen kutusunda çalışan birine verir ya da kuyruğa geri koyar.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/assign- Asıl adres:
POST /api/v1/actions/inbox.assign
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
userId | uuid | Ajan |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
not_a_member | Temsilci çalışma alanının aktif bir üyesi olmalı. |
not_an_inbox_member | Temsilci o gelen kutusunda çalışmalı. |
not_in_conversation_team | Konuşmanın ekibi dışındaki bir temsilciye verilemez. |
Yayımladığı olaylar: inbox.assigned
Neye yazar: conversation (update) — Sets the assignee
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/assign \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"userId":"USER_ID"}'{
"ok": true,
"result": "…",
"events": [
"inbox.assigned"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.assign("CONVERSATION_ID", {
userId: "USER_ID"
})era conversations assign CONVERSATION_ID \
--user-id "USER_ID"{
"name": "era__inbox__assign",
"arguments": {
"id": "CONVERSATION_ID",
"userId": "USER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, not_a_member, not_an_inbox_member, not_in_conversation_team · 429 çok sık istek
inbox.assign_bot
Konuşmayı bota devret — Konuşmayı o gelen kutusuna bağlı bir bota verir ya da geri alır.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/assign_bot- Asıl adres:
POST /api/v1/actions/inbox.assign_bot
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
agentBotId | uuid | Bot · kimliği: agent_bot |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
bot_not_on_inbox | Bot o gelen kutusuna bağlı ve aktif olmalı. |
Yayımladığı olaylar: inbox.assigned, inbox.bot_handoff
Neye yazar: conversation (update) — Sets or clears the bot; reporting_event (insert) — Writes the report clock reading (sql/126)
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/assign_bot \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"agentBotId":"AGENT_BOT_ID"}'{
"ok": true,
"result": "…",
"events": [
"inbox.assigned",
"inbox.bot_handoff"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.assignBot("CONVERSATION_ID", {
agentBotId: "AGENT_BOT_ID"
})era conversations assign_bot CONVERSATION_ID \
--agent-bot-id "AGENT_BOT_ID"{
"name": "era__inbox__assign_bot",
"arguments": {
"id": "CONVERSATION_ID",
"agentBotId": "AGENT_BOT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, bot_not_on_inbox · 429 çok sık istek
inbox.assign_era
Bir konuşmayı Era’ya ver — Era her yanıtı özel not olarak taslak yazar ya da yanıtlar — izin vermediysen yanıt yine onayını bekler.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/assign_era- Asıl adres:
POST /api/v1/actions/inbox.assign_era
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
mode | string (enum) | evet | Era · İzin verilen değerler: draft, answer, off |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
era_off | Era (yapay zekâ modülü) bu çalışma alanında açık olmalı. |
Yayımladığı olaylar: inbox.era_assigned
Neye yazar: conversation (update) — Gives the conversation to Era, or takes it back
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/assign_era \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"mode":"draft"}'{
"ok": true,
"result": "…",
"events": [
"inbox.era_assigned"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.assignEra("CONVERSATION_ID", {
mode: "draft"
})era conversations assign_era CONVERSATION_ID \
--mode "draft"{
"name": "era__inbox__assign_era",
"arguments": {
"id": "CONVERSATION_ID",
"mode": "draft"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, era_off · 429 çok sık istek
inbox.assign_team
Konuşmayı ekibe taşı — Konuşmayı bir ekibe yönlendirir; ekipte olmayan atananı çıkarır.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/assign_team- Asıl adres:
POST /api/v1/actions/inbox.assign_team
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
teamId | uuid | Ekip · kimliği: team |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
team_not_found | Ekip bulunmalı. |
Yayımladığı olaylar: inbox.team_assigned
Neye yazar: conversation (update) — Sets the team
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/assign_team \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"teamId":"TEAM_ID"}'{
"ok": true,
"result": "…",
"events": [
"inbox.team_assigned"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.assignTeam("CONVERSATION_ID", {
teamId: "TEAM_ID"
})era conversations assign_team CONVERSATION_ID \
--team-id "TEAM_ID"{
"name": "era__inbox__assign_team",
"arguments": {
"id": "CONVERSATION_ID",
"teamId": "TEAM_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, team_not_found · 429 çok sık istek
inbox.auto_assign
Otomatik ata — Sıradaki temsilciyi gelen kutusunun yönlendirme kuralına göre, adil payı içinde seçer.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/auto_assign- Asıl adres:
POST /api/v1/actions/inbox.auto_assign
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
inbox_not_found | Gelen kutusu bulunmalı. |
auto_assignment_off | Gelen kutusu için otomatik atama açık olmalı. |
policy_disabled | Gelen kutusunun yönlendirme kuralı etkin olmalı. |
Yayımladığı olaylar: inbox.assigned
Neye yazar: conversation (update) — Sets the assignee; inbox_member (update) — Moves the agent to the back of the queue
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/auto_assign \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"inbox.assigned"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.autoAssign("CONVERSATION_ID")era conversations auto_assign CONVERSATION_ID{
"name": "era__inbox__auto_assign",
"arguments": {
"id": "CONVERSATION_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, inbox_not_found, auto_assignment_off, policy_disabled · 429 çok sık istek
inbox.bot_reply
Bot yanıtlar — Botun müşteriye söyledikleri, bot API’si üzerinden.
Gereken izin inbox:handle · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)
https://app.getera.io/api/v1/conversations/{id}/actions/bot_reply- Asıl adres:
POST /api/v1/actions/inbox.bot_reply
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
agentBotId | uuid | evet | Bot · kimliği: agent_bot |
conversationId | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
content | string | Mesaj · en çok 150000 | |
contentType | string | Mesaj türü · en çok 40 | |
contentAttributes | object / array | Seçenekler, kartlar veya form |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
agent_bot_not_found | Bot var olmalı. |
conversation_not_found | Konuşma bulunmalı. |
bot_not_on_inbox | Konuşma botta olmalı ya da bot o kanalda yanıtlıyor olmalı. |
unsupported_content_type | Bot metin, seçenek, kart, form, makale ya da giriş isteği gönderir. |
empty_message | Metin mesajı boş olamaz. |
conversation_resolved | Çözülmüş konuşma, yalnızca kanal izin veriyorsa mesaj alır. |
too_many_messages | Dakika başına sınır botlar için de geçerlidir. |
Yayımladığı olaylar: inbox.message_sent
Neye yazar: message (insert) — Writes the bot’s message, queued for delivery; conversation (update) — Clears the waiting clock
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/bot_reply \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"agentBotId":"AGENT_BOT_ID"}'{
"ok": true,
"result": "…",
"events": [
"inbox.message_sent"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.botReply("CONVERSATION_ID", {
agentBotId: "AGENT_BOT_ID"
})era conversations bot_reply CONVERSATION_ID \
--agent-bot-id "AGENT_BOT_ID"{
"name": "era__inbox__bot_reply",
"arguments": {
"conversationId": "CONVERSATION_ID",
"agentBotId": "AGENT_BOT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 agent_bot_not_found, conversation_not_found, bot_not_on_inbox, unsupported_content_type, empty_message, conversation_resolved, too_many_messages · 429 çok sık istek
inbox.bot_set_status
Bot devreder ya da çözer — Bot konuşmayı ekibe verir ya da kapatır.
Gereken izin inbox:handle · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/bot_set_status- Asıl adres:
POST /api/v1/actions/inbox.bot_set_status
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
agentBotId | uuid | evet | Bot · kimliği: agent_bot |
conversationId | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
status | string (enum) | evet | Durum · İzin verilen değerler: open, resolved |
reason | string | Neden · en çok 40 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
agent_bot_not_found | Bot var olmalı. |
conversation_not_found | Konuşma bulunmalı. |
bot_not_on_inbox | Konuşma botta olmalı ya da bot o kanalda yanıtlıyor olmalı. |
already_open | Zaten ekipte olan konuşma yeniden devredilmez. |
already_resolved | Çözülmüş bir konuşma iki kez çözülmez. |
Yayımladığı olaylar: inbox.bot_handoff, inbox.resolved, inbox.message_sent
Neye yazar: conversation (update) — Opens it for people, or resolves it; message (insert) — The rating request, when resolving asks for one; reporting_event (insert) — Writes the report clock reading (sql/126)
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/bot_set_status \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"agentBotId":"AGENT_BOT_ID","status":"open"}'{
"ok": true,
"result": "…",
"events": [
"inbox.bot_handoff",
"inbox.resolved",
"inbox.message_sent"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.botSetStatus("CONVERSATION_ID", {
agentBotId: "AGENT_BOT_ID",
status: "open"
})era conversations bot_set_status CONVERSATION_ID \
--agent-bot-id "AGENT_BOT_ID" \
--status "open"{
"name": "era__inbox__bot_set_status",
"arguments": {
"conversationId": "CONVERSATION_ID",
"agentBotId": "AGENT_BOT_ID",
"status": "open"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 agent_bot_not_found, conversation_not_found, bot_not_on_inbox, already_open, already_resolved · 429 çok sık istek
inbox.bulk_update
Birden çok konuşmayı değiştir — Bir seçimi tek seferde çözer, erteler, atar, yönlendirir veya önceliklendirir — hepsi ya da hiçbiri.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/messages/actions/bulk_update- Asıl adres:
POST /api/v1/actions/inbox.bulk_update
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
ids | object / array | evet | Konuşmalar |
status | string (enum) | Durum · İzin verilen değerler: open, resolved, pending, snoozed | |
snoozedUntil | date-time | Şu zamana kadar ertele | |
assigneeUserId | uuid | Şuna ata | |
unassign | boolean | Kuyruğa geri gönder | |
teamId | uuid | Ekip · kimliği: team | |
clearTeam | boolean | Ekipten çıkar | |
priority | string (enum) | Öncelik · İzin verilen değerler: low, medium, high, urgent, none |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
invalid_selection | Bir ile yüz arasında konuşma seçilir. |
nothing_to_change | Değiştirilecek bir şey seçilir. |
Yayımladığı olaylar: inbox.assigned, inbox.team_assigned, inbox.resolved, inbox.reopened, inbox.snoozed, inbox.priority_changed, inbox.message_sent
Neye yazar: conversation (update) — Applies the change to each conversation; inbox_member (update) — Moves an assignee to the back of the queue; message (insert) — A rating request, when resolving asks for one; reporting_event (insert) — Writes the report clock reading (sql/126)
curl -X POST https://app.getera.io/api/v1/messages/actions/bulk_update \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"ids":{}}'{
"ok": true,
"result": "…",
"events": [
"inbox.assigned",
"inbox.team_assigned",
"inbox.resolved",
"inbox.reopened",
"inbox.snoozed",
"inbox.priority_changed",
"inbox.message_sent"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.messages.bulkUpdate({
ids: {}
})era messages bulk_update --data '{"ids":{}}'{
"name": "era__inbox__bulk_update",
"arguments": {
"ids": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_selection, nothing_to_change · 429 çok sık istek
inbox.change_customer
Konuşmayı başka bir kişiye taşı — Konuşmanın kiminle olduğunu düzeltir; geldiği kanal adresini korur.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/change_customer- Asıl adres:
POST /api/v1/actions/inbox.change_customer
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
customerId | uuid | evet | Kişi · kimliği: customer |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
customer_not_found | Kişi zaten kayıtlı olmalı. |
customer_archived | Arşivlenmiş bir kişiye yazılamaz. |
Yayımladığı olaylar: inbox.customer_changed
Neye yazar: conversation (update) — Repoints the conversation
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/change_customer \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"customerId":"CUSTOMER_ID"}'{
"ok": true,
"result": "…",
"events": [
"inbox.customer_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.changeCustomer("CONVERSATION_ID", {
customerId: "CUSTOMER_ID"
})era conversations change_customer CONVERSATION_ID \
--customer-id "CUSTOMER_ID"{
"name": "era__inbox__change_customer",
"arguments": {
"id": "CONVERSATION_ID",
"customerId": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, customer_not_found, customer_archived · 429 çok sık istek
inbox.create_inbox
Kanal bağla — Desteklenen kanallardan birinde yeni bir gelen kutusu açar.
Gereken izin inbox:manage · veriyi değiştirir
https://app.getera.io/api/v1/inboxes/actions/create_inbox- REST kısayolu:
POST /api/v1/inboxes - Asıl adres:
POST /api/v1/actions/inbox.create_inbox
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
name | string | evet | Ad · en çok 200 |
channelType | string (enum) | evet | Kanal · İzin verilen değerler: web_widget, api, email, whatsapp, sms, twilio_sms, facebook_page, instagram, telegram, line, tiktok, twitter, voice |
identifier | string | Numara veya hesap · Bu kanalın yanıt verdiği telefon numarası, sayfa kimliği, bot adı veya erişim anahtarı. · en çok 200 | |
channelConfig | object / array | Kanal ayarları | |
credentialId | uuid | Kimlik bilgisi | |
memberUserIds | object / array | Kimin ilgilendiği |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
identifier_taken | Bir numara veya hesap yalnızca bir gelen kutusuna hizmet edebilir. |
channel_config_incomplete | Bir kanal bağlanmadan önce sağlayıcısının ihtiyaç duyduğu her şey verilmeli. |
not_a_member | Ona atanan herkes aktif bir üye olmalı. |
mailbox_connection_required | Gmail ya da Outlook ile bağlanan bir posta kutusu, hesabı belirtmeli. |
mailbox_not_mail_app | Bu hesap bir Gmail ya da Outlook bağlantısı olmalı. |
connection_not_usable | Bu hesap bu kişinin, şirketin ya da onunla paylaşılmış olmalı. |
connection_not_found | Hesap bu çalışma alanında hâlâ bağlı olmalı. |
connection_inactive | Hesap etkin olmalı; duraklatılmış ya da iptal edilmiş olamaz. |
Yayımladığı olaylar: inbox.channel_connected
Neye yazar: inbox (insert) — Opens the channel; inbox_member (insert) — Records who works it
curl -X POST https://app.getera.io/api/v1/inboxes/actions/create_inbox \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name","channelType":"web_widget"}'{
"ok": true,
"result": "…",
"events": [
"inbox.channel_connected"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.inboxes.create({
name: "Name",
channelType: "web_widget"
})era inboxes create \
--name "Name" \
--channel-type "web_widget"{
"name": "era__inbox__create_inbox",
"arguments": {
"name": "Name",
"channelType": "web_widget"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 identifier_taken, channel_config_incomplete, not_a_member, mailbox_connection_required, mailbox_not_mail_app, connection_not_usable, connection_not_found, connection_inactive · 429 çok sık istek
inbox.deactivate_inbox
Kanalı hizmetten çıkar — Gelen kutusunun yeni konuşma almasını durdurur; içindekileri korur.
Gereken izin inbox:manage · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/inboxes/{id}/actions/deactivate_inbox- Asıl adres:
POST /api/v1/actions/inbox.deactivate_inbox
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Gelen kutusu · kimliği: inbox |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
inbox_not_found | Gelen kutusu bulunmalı. |
inbox_has_open_conversations | Bir kanal kapatılmadan önce açık konuşmalar çözülür veya taşınır. |
Yayımladığı olaylar: inbox.channel_deactivated
Neye yazar: inbox (update) — Marks the channel inactive
curl -X POST https://app.getera.io/api/v1/inboxes/INBOXE_ID/actions/deactivate_inbox \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"inbox.channel_deactivated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.inboxes.deactivateInbox("INBOXE_ID")era inboxes deactivate_inbox INBOXE_ID{
"name": "era__inbox__deactivate_inbox",
"arguments": {
"id": "INBOXE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 inbox_not_found, inbox_has_open_conversations · 429 çok sık istek
inbox.delete_agent_bot
Botu kaldır — Botu kaldırır; elindeki konuşmalar ekibe geçer.
Gereken izin inbox:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/agent_bots/{id}/actions/delete_agent_bot- REST kısayolu:
DELETE /api/v1/agent_bots/{id} - Asıl adres:
POST /api/v1/actions/inbox.delete_agent_bot
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Bot · kimliği: agent_bot |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
agent_bot_not_found | Bot var olmalı. |
Yayımladığı olaylar: inbox.agent_bot_changed
Neye yazar: conversation (update) — Hands its pending conversations to people; agent_bot (delete) — Removes the bot and its inbox bindings
curl -X POST https://app.getera.io/api/v1/agent_bots/AGENT_BOT_ID/actions/delete_agent_bot \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"inbox.agent_bot_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.agentBots.deleteAgentBot("AGENT_BOT_ID")era agent_bots delete_agent_bot AGENT_BOT_ID{
"name": "era__inbox__delete_agent_bot",
"arguments": {
"id": "AGENT_BOT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 agent_bot_not_found · 429 çok sık istek
inbox.delete_canned_response
Hazır yanıtı sil — Bir kısa kodu yazma alanından kaldırır.
Gereken izin inbox:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/canned_responses/{id}/actions/delete_canned_response- REST kısayolu:
DELETE /api/v1/canned_responses/{id} - Asıl adres:
POST /api/v1/actions/inbox.delete_canned_response
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Kayıtlı yanıt · kimliği: canned_response |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
canned_response_not_found | Hazır yanıt bulunmalı. |
Yayımladığı olaylar: inbox.canned_response_changed
Neye yazar: canned_response (delete) — Removes the saved reply
curl -X POST https://app.getera.io/api/v1/canned_responses/CANNED_RESPONSE_ID/actions/delete_canned_response \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"inbox.canned_response_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.cannedResponses.deleteCannedResponse("CANNED_RESPONSE_ID")era canned_responses delete_canned_response CANNED_RESPONSE_ID{
"name": "era__inbox__delete_canned_response",
"arguments": {
"id": "CANNED_RESPONSE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 canned_response_not_found · 429 çok sık istek
inbox.delete_macro
Makroyu sil — Bir makroyu kaldırır.
Gereken izin inbox:write · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/macros/{id}/actions/delete_macro- REST kısayolu:
DELETE /api/v1/macros/{id} - Asıl adres:
POST /api/v1/actions/inbox.delete_macro
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Makro · kimliği: macro |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
macro_not_found | Makro bulunmalı ve size görünür olmalı. |
not_macro_owner | Makroyu yalnızca yazarı veya bir yönetici siler. |
Yayımladığı olaylar: inbox.macro_changed
Neye yazar: macro (delete) — Removes the macro
curl -X POST https://app.getera.io/api/v1/macros/MACRO_ID/actions/delete_macro \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"inbox.macro_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.macros.deleteMacro("MACRO_ID")era macros delete_macro MACRO_ID{
"name": "era__inbox__delete_macro",
"arguments": {
"id": "MACRO_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 macro_not_found, not_macro_owner · 429 çok sık istek
inbox.delete_message
Mesajı sil — Mesajı konuşmadan kaldırır; denetim kaydı için satırı saklar.
Gereken izin inbox:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/messages/{id}/actions/delete_message- REST kısayolu:
DELETE /api/v1/messages/{id} - Asıl adres:
POST /api/v1/actions/inbox.delete_message
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Mesaj · kimliği: message |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
message_not_found | Mesaj bulunmalı. |
Yayımladığı olaylar: inbox.message_deleted
Neye yazar: message (update) — Writes the tombstone
curl -X POST https://app.getera.io/api/v1/messages/MESSAGE_ID/actions/delete_message \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"inbox.message_deleted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.messages.deleteMessage("MESSAGE_ID")era messages delete_message MESSAGE_ID{
"name": "era__inbox__delete_message",
"arguments": {
"id": "MESSAGE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 message_not_found · 429 çok sık istek
inbox.delete_sla_policy
SLA politikasını sil — Hiçbir şeyin ona göre ölçülmediği bir politikayı kaldırır.
Gereken izin inbox:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/sla_policies/{id}/actions/delete_sla_policy- REST kısayolu:
DELETE /api/v1/sla_policies/{id} - Asıl adres:
POST /api/v1/actions/inbox.delete_sla_policy
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Politika · kimliği: sla_policy |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
sla_policy_not_found | Politika bulunmalı. |
sla_policy_in_use | Konuşmalara uygulanmış bir politika geçmişini korur. |
Yayımladığı olaylar: inbox.sla_policy_changed
Neye yazar: sla_policy (delete) — Deletes the policy
curl -X POST https://app.getera.io/api/v1/sla_policies/SLA_POLICY_ID/actions/delete_sla_policy \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"inbox.sla_policy_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.slaPolicies.deleteSlaPolicy("SLA_POLICY_ID")era sla_policies delete_sla_policy SLA_POLICY_ID{
"name": "era__inbox__delete_sla_policy",
"arguments": {
"id": "SLA_POLICY_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 sla_policy_not_found, sla_policy_in_use · 429 çok sık istek
inbox.delete_team
Ekibi sil — Bir ekibi kaldırır; konuşmaları ekipsiz kalır.
Gereken izin inbox:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/teams/{id}/actions/delete_team- REST kısayolu:
DELETE /api/v1/teams/{id} - Asıl adres:
POST /api/v1/actions/inbox.delete_team
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Ekip · kimliği: team |
force | boolean | Yine de sil |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
team_not_found | Ekip bulunmalı. |
team_has_open_conversations | Ekip kaldırılmadan önce ekipteki açık konuşmalar sayılır. |
Yayımladığı olaylar: inbox.team_changed
Neye yazar: team (delete) — Removes the team
curl -X POST https://app.getera.io/api/v1/teams/TEAM_ID/actions/delete_team \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"force":true}'{
"ok": true,
"result": "…",
"events": [
"inbox.team_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.teams.deleteTeam("TEAM_ID", {
force: true
})era teams delete_team TEAM_ID \
--force true{
"name": "era__inbox__delete_team",
"arguments": {
"id": "TEAM_ID",
"force": true
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 team_not_found, team_has_open_conversations · 429 çok sık istek
inbox.edit_message
Mesajı düzenle — Gönderdiğiniz bir mesajı düzeltir.
Gereken izin inbox:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)
https://app.getera.io/api/v1/messages/{id}/actions/edit_message- Asıl adres:
POST /api/v1/actions/inbox.edit_message
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Mesaj · kimliği: message |
content | string | evet | Mesaj · en çok 150000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
message_not_found | Mesaj bulunmalı. |
message_not_editable | Yalnızca giden bir mesaj düzenlenebilir. |
empty_message | Mesaj metin veya ek gerektirir. |
Yayımladığı olaylar: inbox.message_edited
Neye yazar: message (update) — Rewrites the message and marks it edited
curl -X POST https://app.getera.io/api/v1/messages/MESSAGE_ID/actions/edit_message \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"content":"Message"}'{
"ok": true,
"result": "…",
"events": [
"inbox.message_edited"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.messages.editMessage("MESSAGE_ID", {
content: "Message"
})era messages edit_message MESSAGE_ID \
--content "Message"{
"name": "era__inbox__edit_message",
"arguments": {
"id": "MESSAGE_ID",
"content": "Message"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 message_not_found, message_not_editable, empty_message · 429 çok sık istek
inbox.evaluate_sla
SLA’yı kontrol et — Konuşmanın kaçırdığı hedefleri kaydeder ve çözüldüğünde tutuldu veya kaçırıldı olarak kesinleştirir.
Gereken izin inbox:handle · veriyi değiştirir
https://app.getera.io/api/v1/applied_slas/{id}/actions/evaluate_sla- Asıl adres:
POST /api/v1/actions/inbox.evaluate_sla
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Uygulanan SLA · kimliği: applied_sla |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
applied_sla_not_found | Uygulanan SLA bulunmalı. |
Yayımladığı olaylar: inbox.sla_missed, inbox.sla_closed
Neye yazar: applied_sla (update) — Writes the status and the next deadline; sla_event (insert) — One row per missed target
curl -X POST https://app.getera.io/api/v1/applied_slas/APPLIED_SLA_ID/actions/evaluate_sla \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"inbox.sla_missed",
"inbox.sla_closed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.appliedSlas.evaluateSla("APPLIED_SLA_ID")era applied_slas evaluate_sla APPLIED_SLA_ID{
"name": "era__inbox__evaluate_sla",
"arguments": {
"id": "APPLIED_SLA_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 applied_sla_not_found · 429 çok sık istek
inbox.ingest
Gelen mesajı al — Bir kanala gelen mesajı kaydeder; yeniyse konuşmayı açar.
Gereken izin inbox:handle · veriyi değiştirir
https://app.getera.io/api/v1/conversations/actions/ingest- Asıl adres:
POST /api/v1/actions/inbox.ingest
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
inboxId | uuid | evet | Gelen kutusu · kimliği: inbox |
customerId | uuid | evet | Kişi · kimliği: customer |
sourceId | string | evet | Sağlayıcının bu mesaja verdiği kimlik · Yeniden gelen bir webhook’un iki değil tek mesaj sayılmasını sağlayan değer. · en çok 200 |
content | string | Ne dediler · en çok 150000 | |
senderName | string | Sağlayıcıdaki adı · en çok 200 | |
customerIdentityId | uuid | Kanal adresi · kimliği: customer_identity | |
channelAddress | string | Kanal adresi değeri · channel türündeki customer_identity değeri — konuşma bu değere göre eşleştirilir. · en çok 300 | |
contentType | string (enum) | Mesaj türü · İzin verilen değerler: text, input_text, input_textarea, input_email, input_select, cards, form, article, incoming_email, input_csat, integrations, sticker, voice_call | |
attachments | object / array | Ekler | |
inReplyTo | object / array | Yanıtladığı e-postalar (kimlikler) | |
newThread | boolean | Yanıt değilse yeni konuşma başlat |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
inbox_not_found | Gelen kutusu bulunmalı. |
inbox_inactive | Kanal hâlâ hizmette olmalı. |
no_source_id | Gelen mesaj sağlayıcının ona verdiği kimliği taşımalı. |
empty_message | Mesaj metin veya ek gerektirir. |
malformed_message | Ekler ve yanıtlanan mesajlar liste olarak gelmeli. |
duplicate_message | Aynı teslimat yalnızca bir kez kaydedilir. |
customer_not_found | Kişi zaten kayıtlı olmalı. |
customer_archived | Arşivlenmiş bir kişiye yazılamaz. |
Yayımladığı olaylar: inbox.message_received, inbox.conversation_opened, inbox.reopened, inbox.message_sent
Neye yazar: conversation (upsert) — Finds the thread, or opens a new one; message (insert) — Files what arrived; message_attachment (insert) — Files what came with it; reporting_event (insert) — Writes the report clock reading (sql/126)
curl -X POST https://app.getera.io/api/v1/conversations/actions/ingest \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"inboxId":"INBOX_ID","customerId":"CUSTOMER_ID","sourceId":"The provider’s id for this message"}'{
"ok": true,
"result": "…",
"events": [
"inbox.message_received",
"inbox.conversation_opened",
"inbox.reopened",
"inbox.message_sent"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.ingest({
inboxId: "INBOX_ID",
customerId: "CUSTOMER_ID",
sourceId: "The provider’s id for this message"
})era conversations ingest \
--inbox-id "INBOX_ID" \
--customer-id "CUSTOMER_ID" \
--source-id "The provider’s id for this message"{
"name": "era__inbox__ingest",
"arguments": {
"inboxId": "INBOX_ID",
"customerId": "CUSTOMER_ID",
"sourceId": "The provider’s id for this message"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 inbox_not_found, inbox_inactive, no_source_id, empty_message, malformed_message, duplicate_message, customer_not_found, customer_archived · 429 çok sık istek
inbox.mark_read
Okundu işaretle — Konuşmanın görüldüğünü kaydeder.
Gereken izin inbox:read · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/mark_read- Asıl adres:
POST /api/v1/actions/inbox.mark_read
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
Neye yazar: conversation (update) — Stamps the read marks
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/mark_read \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": []
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.markRead("CONVERSATION_ID")era conversations mark_read CONVERSATION_ID{
"name": "era__inbox__mark_read",
"arguments": {
"id": "CONVERSATION_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:read izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found · 429 çok sık istek
inbox.mark_unread
Okunmadı olarak işaretle — Okundu işaretini ilk gelen mesajın gerisine çeker; böylece konuşma okunmamışlar listesine döner.
Gereken izin inbox:read · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/mark_unread- Asıl adres:
POST /api/v1/actions/inbox.mark_unread
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
Neye yazar: conversation (update) — Moves the read marker back
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/mark_unread \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": []
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.markUnread("CONVERSATION_ID")era conversations mark_unread CONVERSATION_ID{
"name": "era__inbox__mark_unread",
"arguments": {
"id": "CONVERSATION_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:read izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found · 429 çok sık istek
inbox.mute
Sessize al — Konuşmayı çözer ve kişinin sonra göndereceklerini konuşmayı yeniden açmadan kaydeder.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/mute- Asıl adres:
POST /api/v1/actions/inbox.mute
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
already_muted | Zaten sessizde olmamalı. |
Yayımladığı olaylar: inbox.muted
Neye yazar: conversation (update) — Mutes and resolves it; reporting_event (insert) — Writes the report clock reading (sql/126)
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/mute \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"inbox.muted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.mute("CONVERSATION_ID")era conversations mute CONVERSATION_ID{
"name": "era__inbox__mute",
"arguments": {
"id": "CONVERSATION_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, already_muted · 429 çok sık istek
inbox.open_conversation
Konuşma başlat — Kanallarınızdan birinde biriyle konuşma başlatır.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/conversations/actions/open_conversation- REST kısayolu:
POST /api/v1/conversations - Asıl adres:
POST /api/v1/actions/inbox.open_conversation
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
inboxId | uuid | evet | Gelen kutusu · kimliği: inbox |
customerId | uuid | evet | Kişi · kimliği: customer |
customerIdentityId | uuid | Kanal adresi · kimliği: customer_identity | |
teamId | uuid | Ekip · kimliği: team | |
priority | string (enum) | Öncelik · İzin verilen değerler: low, medium, high, urgent | |
externalIdentifier | string | Kanal referansı · en çok 200 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
inbox_not_found | Gelen kutusu bulunmalı. |
inbox_inactive | Kanal hâlâ hizmette olmalı. |
customer_not_found | Kişi zaten kayıtlı olmalı. |
customer_archived | Arşivlenmiş bir kişiye yazılamaz. |
identity_not_theirs | Kanal adresi o kişiye ait olmalı. |
conversation_already_open | Kişi başına tek konuşmaya kilitli bir gelen kutusu ikincisini reddeder. |
team_not_found | Ekip bulunmalı. |
Yayımladığı olaylar: inbox.conversation_opened
Neye yazar: conversation (insert) — Opens the conversation
curl -X POST https://app.getera.io/api/v1/conversations/actions/open_conversation \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"inboxId":"INBOX_ID","customerId":"CUSTOMER_ID"}'{
"ok": true,
"result": "…",
"events": [
"inbox.conversation_opened"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.create({
inboxId: "INBOX_ID",
customerId: "CUSTOMER_ID"
})era conversations create \
--inbox-id "INBOX_ID" \
--customer-id "CUSTOMER_ID"{
"name": "era__inbox__open_conversation",
"arguments": {
"inboxId": "INBOX_ID",
"customerId": "CUSTOMER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 inbox_not_found, inbox_inactive, customer_not_found, customer_archived, identity_not_theirs, conversation_already_open, team_not_found · 429 çok sık istek
inbox.record_bot_delivery
Bot teslimatını kaydet — Yalnızca sistem: bota gönderilen son olayın sonucu.
Gereken izin inbox:handle · veriyi değiştirir
403 machine_only).https://app.getera.io/api/v1/agent_bots/{id}/actions/record_bot_delivery- Asıl adres:
POST /api/v1/actions/inbox.record_bot_delivery
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
agentBotId | uuid | evet | Doldurulduğu yer: adresteki {id} · Bot · kimliği: agent_bot |
error | string | Ne ters gitti · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
agent_bot_not_found | Bot var olmalı. |
Neye yazar: agent_bot (update) — Stamps the last delivery and its error
Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 agent_bot_not_found · 429 çok sık istek
inbox.record_channel_health
Bağlantı testini kaydet — Kanalın şu anda sağlayıcısına ulaşıp ulaşamadığını yazar.
Gereken izin inbox:handle · veriyi değiştirir
https://app.getera.io/api/v1/inboxes/{id}/actions/record_channel_health- Asıl adres:
POST /api/v1/actions/inbox.record_channel_health
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
inboxId | uuid | evet | Doldurulduğu yer: adresteki {id} · Gelen kutusu · kimliği: inbox |
status | string (enum) | evet | Durum · İzin verilen değerler: healthy, degraded, reauth_required |
error | string | Neden · en çok 2000 | |
details | object / array | Sağlayıcı bilgileri |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
inbox_not_found | Gelen kutusu bulunmalı. |
Yayımladığı olaylar: inbox.channel_health_changed
Neye yazar: inbox (update) — Writes the health status, reason and provider details (quality rating, tier)
curl -X POST https://app.getera.io/api/v1/inboxes/INBOXE_ID/actions/record_channel_health \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"status":"healthy"}'{
"ok": true,
"result": "…",
"events": [
"inbox.channel_health_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.inboxes.recordChannelHealth("INBOXE_ID", {
status: "healthy"
})era inboxes record_channel_health INBOXE_ID \
--status "healthy"{
"name": "era__inbox__record_channel_health",
"arguments": {
"inboxId": "INBOXE_ID",
"status": "healthy"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 inbox_not_found · 429 çok sık istek
inbox.record_delivery
Kanalın bildirdiğini kaydet — Giden bir mesajı, kanalın bildirdiği gibi gönderildi, teslim edildi, okundu veya başarısız durumuna taşır.
Gereken izin inbox:handle · veriyi değiştirir
https://app.getera.io/api/v1/messages/{id}/actions/record_delivery- Asıl adres:
POST /api/v1/actions/inbox.record_delivery
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
messageId | uuid | Doldurulduğu yer: adresteki {id} · Mesaj · kimliği: message | |
inboxId | uuid | Gelen kutusu · kimliği: inbox | |
sourceId | string | Sağlayıcı mesaj kimliği · en çok 300 | |
status | string (enum) | evet | Durum · İzin verilen değerler: queued, sent, delivered, read, failed |
generation | number | Deneme sırası · en az 0 | |
providerMessageId | string | Sağlayıcı mesaj kimliği · en çok 300 | |
error | string | Neden · en çok 2000 | |
attempts | number | Denemeler · en az 0 · en çok 100 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
message_not_found | Mesaj bulunmalı. |
message_not_outgoing | Yalnızca giden bir mesajın teslimat durumu olur. |
Yayımladığı olaylar: inbox.message_delivered, inbox.message_failed
Neye yazar: message (update) — Writes the delivery state and the provider id
curl -X POST https://app.getera.io/api/v1/messages/MESSAGE_ID/actions/record_delivery \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"status":"queued"}'{
"ok": true,
"result": "…",
"events": [
"inbox.message_delivered",
"inbox.message_failed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.messages.recordDelivery("MESSAGE_ID", {
status: "queued"
})era messages record_delivery MESSAGE_ID \
--status "queued"{
"name": "era__inbox__record_delivery",
"arguments": {
"messageId": "MESSAGE_ID",
"status": "queued"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 message_not_found, message_not_outgoing · 429 çok sık istek
inbox.record_poll_state
Posta kutusu imlecini kaydet — E-posta okuyucunun hangi mesajları zaten kaydettiğini hatırlar.
Gereken izin inbox:handle · veriyi değiştirir
https://app.getera.io/api/v1/inboxes/{id}/actions/record_poll_state- Asıl adres:
POST /api/v1/actions/inbox.record_poll_state
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
inboxId | uuid | evet | Doldurulduğu yer: adresteki {id} · Gelen kutusu · kimliği: inbox |
pollState | object / array | evet | Cursor |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
inbox_not_found | Gelen kutusu bulunmalı. |
invalid_poll_state | İmleç bir nesnedir. |
Neye yazar: inbox (update) — Writes the poll cursor
curl -X POST https://app.getera.io/api/v1/inboxes/INBOXE_ID/actions/record_poll_state \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"pollState":{}}'{
"ok": true,
"result": "…",
"events": []
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.inboxes.recordPollState("INBOXE_ID", {
pollState: {}
})era inboxes record_poll_state INBOXE_ID --data '{"pollState":{}}'{
"name": "era__inbox__record_poll_state",
"arguments": {
"inboxId": "INBOXE_ID",
"pollState": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 inbox_not_found, invalid_poll_state · 429 çok sık istek
inbox.record_visitor_seen
Ziyaretçinin konuşmayı gördüğünü kaydet — Web sitesi ziyaretçisinin neyi okuduğunu işler ve o yanıtları okundu yapar.
Gereken izin inbox:handle · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/record_visitor_seen- Asıl adres:
POST /api/v1/actions/inbox.record_visitor_seen
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
conversationId | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
Neye yazar: conversation (update) — Stamps contact_last_seen_at; message (update) — Marks the replies it covered read
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/record_visitor_seen \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": []
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.recordVisitorSeen("CONVERSATION_ID")era conversations record_visitor_seen CONVERSATION_ID{
"name": "era__inbox__record_visitor_seen",
"arguments": {
"conversationId": "CONVERSATION_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found · 429 çok sık istek
inbox.remove_participant
Takipçiyi kaldır — Birinin konuşmayı takip etmesini durdurur.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/conversation_participants/actions/remove_participant- Asıl adres:
POST /api/v1/actions/inbox.remove_participant
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Konuşma · kimliği: conversation |
userId | uuid | evet | Kişi |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
not_participating | Kişi şu anda bunu takip ediyor olmalı. |
Neye yazar: conversation_participant (delete) — Removes the follower
curl -X POST https://app.getera.io/api/v1/conversation_participants/actions/remove_participant \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"CONVERSATION_ID","userId":"USER_ID"}'{
"ok": true,
"result": "…",
"events": []
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversationParticipants.removeParticipant({
id: "CONVERSATION_ID",
userId: "USER_ID"
})era conversation_participants remove_participant \
--id "CONVERSATION_ID" \
--user-id "USER_ID"{
"name": "era__inbox__remove_participant",
"arguments": {
"id": "CONVERSATION_ID",
"userId": "USER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, not_participating · 429 çok sık istek
inbox.reopen
Konuşmayı yeniden aç — Çözülmüş veya ertelenmiş bir konuşmayı kuyruğa geri getirir.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/reopen- Asıl adres:
POST /api/v1/actions/inbox.reopen
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
already_open | Zaten açık olmamalı. |
Yayımladığı olaylar: inbox.reopened
Neye yazar: conversation (update) — Reopens it; reporting_event (insert) — Writes the report clock reading (sql/126)
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/reopen \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"inbox.reopened"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.reopen("CONVERSATION_ID")era conversations reopen CONVERSATION_ID{
"name": "era__inbox__reopen",
"arguments": {
"id": "CONVERSATION_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, already_open · 429 çok sık istek
inbox.reply
Yanıtla — Müşteriye teslim edilmek üzere bir mesajı sıraya koyar; ilk yanıtsa ilk yanıt zamanını işler.
Gereken izin inbox:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)
https://app.getera.io/api/v1/conversations/{id}/actions/reply- Asıl adres:
POST /api/v1/actions/inbox.reply
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
conversationId | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
content | string | Mesaj · en çok 150000 | |
contentType | string (enum) | Tür · İzin verilen değerler: text, input_text, input_textarea, input_email, input_select, cards, form, article, incoming_email, input_csat, integrations, sticker, voice_call | |
attachments | object / array | Ekler | |
cannedResponseId | uuid | Kayıtlı yanıt · kimliği: canned_response | |
templateId | uuid | WhatsApp şablonu · kimliği: whatsapp_message_template | |
templateVariables | object / array | Şablon değerleri | |
cc | object / array | Cc · Yalnızca e-posta: yanıtı alacak diğer adresler. | |
bcc | object / array | Bcc · Yalnızca e-posta: yanıtı gizli olarak alacak adresler. | |
replyToMessageId | uuid | Yanıtlanan mesaj · kimliği: message |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
empty_message | Mesaj metin veya ek gerektirir. |
too_many_attachments | Bir mesaj en fazla on beş ek taşır. |
too_many_messages | Bir konuşmada bir dakikada çok fazla mesaj. |
canned_response_not_found | Hazır yanıt hâlâ bulunmalı. |
conversation_resolved | Çözülmüş bir konuşma yalnızca gelen kutusu izin veriyorsa yanıt alır. |
Yayımladığı olaylar: inbox.message_sent, inbox.reopened
Neye yazar: message (insert) — Writes the message; message_attachment (insert) — Attaches files and locations; conversation (update) — Clears the waiting clock and stamps the first reply; reporting_event (insert) — Writes the report clock reading (sql/126)
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/reply \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"content":"Message"}'{
"ok": true,
"result": "…",
"events": [
"inbox.message_sent",
"inbox.reopened"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.reply("CONVERSATION_ID", {
content: "Message"
})era conversations reply CONVERSATION_ID \
--content "Message"{
"name": "era__inbox__reply",
"arguments": {
"conversationId": "CONVERSATION_ID",
"content": "Message"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, empty_message, too_many_attachments, too_many_messages, canned_response_not_found, conversation_resolved · 429 çok sık istek
inbox.reset_agent_bot_credentials
Botun anahtarını sıfırla — Yeni bir API anahtarı oluşturur ya da olayların imzalandığı anahtarı değiştirir.
Gereken izin inbox:manage · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır) · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/agent_bots/{id}/actions/reset_agent_bot_credentials- Asıl adres:
POST /api/v1/actions/inbox.reset_agent_bot_credentials
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Bot · kimliği: agent_bot |
what | string (enum) | evet | Sıfırlanacak olan · İzin verilen değerler: token, secret |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
agent_bot_not_found | Bot var olmalı. |
Yayımladığı olaylar: inbox.agent_bot_changed
Neye yazar: agent_bot (update) — Replaces the token hash, or moves the secret on a generation
curl -X POST https://app.getera.io/api/v1/agent_bots/AGENT_BOT_ID/actions/reset_agent_bot_credentials \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"what":"token"}'{
"ok": true,
"result": "…",
"events": [
"inbox.agent_bot_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.agentBots.resetAgentBotCredentials("AGENT_BOT_ID", {
what: "token"
})era agent_bots reset_agent_bot_credentials AGENT_BOT_ID \
--what "token"{
"name": "era__inbox__reset_agent_bot_credentials",
"arguments": {
"id": "AGENT_BOT_ID",
"what": "token"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 agent_bot_not_found · 429 çok sık istek
inbox.resolve
Konuşmayı çöz — Konuşmayı kapatır ve bekleme sayacını durdurur.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/resolve- Asıl adres:
POST /api/v1/actions/inbox.resolve
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
already_resolved | Zaten çözülmüş olmamalı. |
Yayımladığı olaylar: inbox.resolved, inbox.message_sent
Neye yazar: conversation (update) — Resolves it and clears the clock; message (insert) — Queues the rating request, when the inbox asks for one; reporting_event (insert) — Writes the report clock reading (sql/126)
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/resolve \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"inbox.resolved",
"inbox.message_sent"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.resolve("CONVERSATION_ID")era conversations resolve CONVERSATION_ID{
"name": "era__inbox__resolve",
"arguments": {
"id": "CONVERSATION_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, already_resolved · 429 çok sık istek
inbox.retry_delivery
Yeniden göndermeyi dene — Başarısız bir mesajı yeniden gönderir ya da çok uzun süre sırada kalanı iter.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/messages/{id}/actions/retry_delivery- Asıl adres:
POST /api/v1/actions/inbox.retry_delivery
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Mesaj · kimliği: message |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
message_not_found | Mesaj bulunmalı. |
message_not_outgoing | Yalnızca giden bir mesaj yeniden gönderilebilir. |
not_retryable | Yalnızca başarısız ya da on dakikadır sırada bekleyen mesaj yeniden denenir. |
Yayımladığı olaylar: inbox.delivery_retried
Neye yazar: message (update) — Queues it again under a new generation
curl -X POST https://app.getera.io/api/v1/messages/MESSAGE_ID/actions/retry_delivery \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"inbox.delivery_retried"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.messages.retryDelivery("MESSAGE_ID")era messages retry_delivery MESSAGE_ID{
"name": "era__inbox__retry_delivery",
"arguments": {
"id": "MESSAGE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 message_not_found, message_not_outgoing, not_retryable · 429 çok sık istek
inbox.review_csat
Puanı incele — Müşterinin puanına ekibin notlarını bırakır.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/csat_survey_responses/{id}/actions/review_csat- Asıl adres:
POST /api/v1/actions/inbox.review_csat
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Puan · kimliği: csat_survey_response |
notes | string | İnceleme notları · en çok 5000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
csat_not_found | Puan bulunmalı. |
Neye yazar: csat_survey_response (update) — Writes the review notes
curl -X POST https://app.getera.io/api/v1/csat_survey_responses/CSAT_SURVEY_RESPONSE_ID/actions/review_csat \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"notes":"Review notes"}'{
"ok": true,
"result": "…",
"events": []
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.csatSurveyResponses.reviewCsat("CSAT_SURVEY_RESPONSE_ID", {
notes: "Review notes"
})era csat_survey_responses review_csat CSAT_SURVEY_RESPONSE_ID \
--notes "Review notes"{
"name": "era__inbox__review_csat",
"arguments": {
"id": "CSAT_SURVEY_RESPONSE_ID",
"notes": "Review notes"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 csat_not_found · 429 çok sık istek
inbox.run_macro
Makroyu çalıştır — Bir makronun her adımını seçilen konuşmalarda çalıştırır — hepsi ya da hiçbiri.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/messages/actions/run_macro- Asıl adres:
POST /api/v1/actions/inbox.run_macro
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Makro · kimliği: macro |
conversationIds | object / array | evet | Konuşmalar |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
macro_not_found | Makro bulunmalı ve size görünür olmalı. |
invalid_selection | Bir ile yüz arasında konuşma seçilir. |
invalid_macro_actions | Adımları artık okunamayan kayıtlı bir makro reddedilir. |
Yayımladığı olaylar: inbox.assigned, inbox.team_assigned, inbox.resolved, inbox.reopened, inbox.snoozed, inbox.priority_changed, inbox.message_sent, inbox.note_added, inbox.mentioned, inbox.user_mentioned, inbox.macro_executed, inbox.muted, inbox.transcript_requested
Neye yazar: conversation (update) — Applies the macro’s conversation steps; message (insert) — Writes the macro’s messages and notes; inbox_member (update) — Moves an assignee to the back of the queue; conversation_mention (upsert) — Records mentions in a note step; conversation_participant (insert) — Adds the people mentioned; reporting_event (insert) — Writes the report clock reading (sql/126)
curl -X POST https://app.getera.io/api/v1/messages/actions/run_macro \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"MACRO_ID","conversationIds":{}}'{
"ok": true,
"result": "…",
"events": [
"inbox.assigned",
"inbox.team_assigned",
"inbox.resolved",
"inbox.reopened",
"inbox.snoozed",
"inbox.priority_changed",
"inbox.message_sent",
"inbox.note_added",
"inbox.mentioned",
"inbox.user_mentioned",
"inbox.macro_executed",
"inbox.muted",
"inbox.transcript_requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.messages.runMacro({
id: "MACRO_ID",
conversationIds: {}
})era messages run_macro --data '{"id":"MACRO_ID","conversationIds":{}}'{
"name": "era__inbox__run_macro",
"arguments": {
"id": "MACRO_ID",
"conversationIds": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 macro_not_found, invalid_selection, invalid_macro_actions · 429 çok sık istek
inbox.save_agent_bot
Bot kaydet — Önce yanıtlayan ve yardımcı olamadığında devreden bir bot ekler ya da düzenler.
Gereken izin inbox:manage · veriyi değiştirir
https://app.getera.io/api/v1/agent_bots/{id}/actions/save_agent_bot- REST kısayolu:
PATCH /api/v1/agent_bots/{id} - Asıl adres:
POST /api/v1/actions/inbox.save_agent_bot
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | Doldurulduğu yer: adresteki {id} · Bot · kimliği: agent_bot | |
name | string | evet | Ad · en çok 200 |
description | string | Açıklama · en çok 2000 | |
outgoingUrl | string | Olaylarının gönderileceği adres · en çok 2048 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
agent_bot_not_found | Değiştirilen bot var olmalı. |
bot_name_taken | Bot adları bir çalışma alanında benzersizdir. |
invalid_outgoing_url | Botun adresi en fazla 2048 karakterlik bir http(s) adresidir. |
Yayımladığı olaylar: inbox.agent_bot_changed
Neye yazar: agent_bot (upsert) — Registers the bot; a new one gets its API token
curl -X POST https://app.getera.io/api/v1/agent_bots/AGENT_BOT_ID/actions/save_agent_bot \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"inbox.agent_bot_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.agentBots.saveAgentBot("AGENT_BOT_ID", {
name: "Name"
})era agent_bots save_agent_bot AGENT_BOT_ID \
--name "Name"{
"name": "era__inbox__save_agent_bot",
"arguments": {
"id": "AGENT_BOT_ID",
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 agent_bot_not_found, bot_name_taken, invalid_outgoing_url · 429 çok sık istek
inbox.save_assignment_policy
Yönlendirme kuralını kaydet — Konuşmaların nasıl paylaştırılacağına ve bir kişiye ne kadar düşeceğine karar verir.
Gereken izin inbox:manage · veriyi değiştirir
https://app.getera.io/api/v1/assignment_policies/{id}/actions/save_assignment_policy- REST kısayolu:
PATCH /api/v1/assignment_policies/{id} - Asıl adres:
POST /api/v1/actions/inbox.save_assignment_policy
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | Doldurulduğu yer: adresteki {id} · Kural · kimliği: assignment_policy | |
name | string | evet | Ad · en çok 200 |
description | string | Açıklama · en çok 2000 | |
assignmentOrder | string (enum) | Sipariş · İzin verilen değerler: round_robin, balanced | |
conversationPriority | string (enum) | Sıra · İzin verilen değerler: earliest_created, longest_waiting | |
fairDistributionLimit | number | Süre içinde temsilci başına en fazla · en az 1 | |
fairDistributionWindow | number | Süre (saniye) · en az 1 | |
enabled | boolean | Etkin |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
invalid_policy_name | Kuralın bir adı olmalı. |
policy_name_taken | Kural adları çalışma alanında benzersizdir. |
policy_not_found | Düzenlenen kural bulunmalı. |
Yayımladığı olaylar: inbox.assignment_policy_changed
Neye yazar: assignment_policy (upsert) — Writes the routing rule
curl -X POST https://app.getera.io/api/v1/assignment_policies/ASSIGNMENT_POLICY_ID/actions/save_assignment_policy \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"inbox.assignment_policy_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.assignmentPolicies.saveAssignmentPolicy("ASSIGNMENT_POLICY_ID", {
name: "Name"
})era assignment_policies save_assignment_policy ASSIGNMENT_POLICY_ID \
--name "Name"{
"name": "era__inbox__save_assignment_policy",
"arguments": {
"id": "ASSIGNMENT_POLICY_ID",
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_policy_name, policy_name_taken, policy_not_found · 429 çok sık istek
inbox.save_canned_response
Hazır yanıtı kaydet — Temsilcilerin kısa kodunu yazarak ekleyebileceği bir yanıt ekler veya düzenler.
Gereken izin inbox:manage · veriyi değiştirir
https://app.getera.io/api/v1/canned_responses/{id}/actions/save_canned_response- REST kısayolu:
PATCH /api/v1/canned_responses/{id} - Asıl adres:
POST /api/v1/actions/inbox.save_canned_response
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | Doldurulduğu yer: adresteki {id} · Kayıtlı yanıt · kimliği: canned_response | |
shortCode | string | evet | Kısayol · Mesaj kutusunda eğik çizgiden sonra yazılan tek kelime. · en çok 60 |
content | string | evet | Yanıtla · en çok 150000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
invalid_short_code | Kısa kod boşluksuz tek bir kelimedir. |
empty_canned_response | Hazır yanıt boş olamaz. |
short_code_taken | Kısa kodlar çalışma alanında benzersizdir. |
canned_response_not_found | Düzenlenen yanıt bulunmalı. |
Yayımladığı olaylar: inbox.canned_response_changed
Neye yazar: canned_response (upsert) — Writes the saved reply
curl -X POST https://app.getera.io/api/v1/canned_responses/CANNED_RESPONSE_ID/actions/save_canned_response \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"shortCode":"Shortcut","content":"Reply"}'{
"ok": true,
"result": "…",
"events": [
"inbox.canned_response_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.cannedResponses.saveCannedResponse("CANNED_RESPONSE_ID", {
shortCode: "Shortcut",
content: "Reply"
})era canned_responses save_canned_response CANNED_RESPONSE_ID \
--short-code "Shortcut" \
--content "Reply"{
"name": "era__inbox__save_canned_response",
"arguments": {
"id": "CANNED_RESPONSE_ID",
"shortCode": "Shortcut",
"content": "Reply"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_short_code, empty_canned_response, short_code_taken, canned_response_not_found · 429 çok sık istek
inbox.save_macro
Makroyu kaydet — Temsilcinin bir konuşmada tek tıkla çalıştırdığı kayıtlı bir adım dizisini ekler veya düzenler.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/macros/{id}/actions/save_macro- REST kısayolu:
PATCH /api/v1/macros/{id} - Asıl adres:
POST /api/v1/actions/inbox.save_macro
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | Doldurulduğu yer: adresteki {id} · Makro · kimliği: macro | |
name | string | evet | Ad · en çok 200 |
visibility | string (enum) | Kimler kullanabilir · İzin verilen değerler: personal, global | |
actions | object / array | evet | Adımlar |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
invalid_macro_name | Makronun bir adı olmalı. |
invalid_macro_actions | Her adım bu gelen kutusunun çalıştırabileceği bir adım olmalı ve değerini taşımalı. |
global_macro_needs_manage | Makroyu herkesle paylaşmak yönetim yetkisi gerektirir. |
macro_not_found | Düzenlenen makro bulunmalı ve size görünür olmalı. |
not_macro_owner | Makroyu yalnızca yazarı veya bir yönetici değiştirir. |
Yayımladığı olaylar: inbox.macro_changed
Neye yazar: macro (upsert) — Writes the macro
curl -X POST https://app.getera.io/api/v1/macros/MACRO_ID/actions/save_macro \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name","actions":{}}'{
"ok": true,
"result": "…",
"events": [
"inbox.macro_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.macros.saveMacro("MACRO_ID", {
name: "Name",
actions: {}
})era macros save_macro MACRO_ID --data '{"name":"Name","actions":{}}'{
"name": "era__inbox__save_macro",
"arguments": {
"id": "MACRO_ID",
"name": "Name",
"actions": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_macro_name, invalid_macro_actions, global_macro_needs_manage, macro_not_found, not_macro_owner · 429 çok sık istek
inbox.save_reply_from_message
Bunu hazır yanıt olarak kaydet — İşe yarar bir mesajı ortak hazır yanıt kitaplığına kopyalar.
Gereken izin inbox:manage · veriyi değiştirir
https://app.getera.io/api/v1/canned_responses/actions/save_reply_from_message- Asıl adres:
POST /api/v1/actions/inbox.save_reply_from_message
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Mesaj · kimliği: message |
shortCode | string | evet | Kısayol · en çok 60 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
message_not_found | Mesaj bulunamadı. |
invalid_short_code | Kısa kod boşluksuz tek bir kelimedir. |
empty_canned_response | Hazır yanıta dönüştürmek için mesajda metin olmalı. |
short_code_taken | Kısa kodlar çalışma alanında benzersizdir. |
Yayımladığı olaylar: inbox.canned_response_changed
Neye yazar: canned_response (insert) — Adds the copied reply
curl -X POST https://app.getera.io/api/v1/canned_responses/actions/save_reply_from_message \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"MESSAGE_ID","shortCode":"Shortcut"}'{
"ok": true,
"result": "…",
"events": [
"inbox.canned_response_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.cannedResponses.saveReplyFromMessage({
id: "MESSAGE_ID",
shortCode: "Shortcut"
})era canned_responses save_reply_from_message \
--id "MESSAGE_ID" \
--short-code "Shortcut"{
"name": "era__inbox__save_reply_from_message",
"arguments": {
"id": "MESSAGE_ID",
"shortCode": "Shortcut"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 message_not_found, invalid_short_code, empty_canned_response, short_code_taken · 429 çok sık istek
inbox.save_sla_policy
SLA politikasını kaydet — Bir yanıt süresi hedefi oluşturur veya değiştirir.
Gereken izin inbox:manage · veriyi değiştirir
https://app.getera.io/api/v1/sla_policies/{id}/actions/save_sla_policy- REST kısayolu:
PATCH /api/v1/sla_policies/{id} - Asıl adres:
POST /api/v1/actions/inbox.save_sla_policy
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | Doldurulduğu yer: adresteki {id} · Politika · kimliği: sla_policy | |
name | string | evet | Ad · en çok 200 |
description | string | Açıklama · en çok 2000 | |
firstResponseSeconds | number | İlk yanıt süresi (saniye) · en az 0 | |
nextResponseSeconds | number | Sonraki yanıt süresi (saniye) · en az 0 | |
resolutionSeconds | number | Çözüm süresi (saniye) · en az 0 | |
onlyDuringBusinessHours | boolean | Yalnızca çalışma saatlerini say |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
sla_threshold_required | Üç hedeften en az biri belirlenmeli. |
sla_name_taken | Politika adları çalışma alanında benzersizdir. |
sla_policy_not_found | Değiştirilen politika bulunmalı. |
Yayımladığı olaylar: inbox.sla_policy_changed
Neye yazar: sla_policy (upsert) — Writes the policy
curl -X POST https://app.getera.io/api/v1/sla_policies/SLA_POLICY_ID/actions/save_sla_policy \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"inbox.sla_policy_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.slaPolicies.saveSlaPolicy("SLA_POLICY_ID", {
name: "Name"
})era sla_policies save_sla_policy SLA_POLICY_ID \
--name "Name"{
"name": "era__inbox__save_sla_policy",
"arguments": {
"id": "SLA_POLICY_ID",
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 sla_threshold_required, sla_name_taken, sla_policy_not_found · 429 çok sık istek
inbox.save_team
Ekibi kaydet — Konuşmaların yönlendirilebileceği bir ekip ekler veya düzenler.
Gereken izin inbox:manage · veriyi değiştirir
https://app.getera.io/api/v1/teams/{id}/actions/save_team- REST kısayolu:
PATCH /api/v1/teams/{id} - Asıl adres:
POST /api/v1/actions/inbox.save_team
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | Doldurulduğu yer: adresteki {id} · Ekip · kimliği: team | |
name | string | evet | Ad · en çok 200 |
description | string | Açıklama · en çok 2000 | |
allowAutoAssign | boolean | Ekip içinde otomatik ata · Kapalıysa buraya yönlendirilen konuşmalar birinin üstlenmesini bekler. |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
invalid_team_name | Ekibin bir adı olmalı. |
team_name_taken | Ekip adları çalışma alanında benzersizdir. |
team_not_found | Düzenlenen ekip bulunmalı. |
Yayımladığı olaylar: inbox.team_changed
Neye yazar: team (upsert) — Writes the team
curl -X POST https://app.getera.io/api/v1/teams/TEAM_ID/actions/save_team \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"inbox.team_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.teams.saveTeam("TEAM_ID", {
name: "Name"
})era teams save_team TEAM_ID \
--name "Name"{
"name": "era__inbox__save_team",
"arguments": {
"id": "TEAM_ID",
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 invalid_team_name, team_name_taken, team_not_found · 429 çok sık istek
inbox.send_transcript
Dökümü e-postala — Konuşmanın herkese açık tüm mesajlarını bir e-posta adresine gönderir.
Gereken izin inbox:write · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)
https://app.getera.io/api/v1/actions/inbox.send_transcriptGirdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Konuşma · kimliği: conversation |
email | Gönderilecek adres |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
no_email_address | Bir adres olmalı — verilen ya da kişinin kendi adresi. |
transcript_empty | Konuşmada herkese açık bir şey olmalı. |
Yayımladığı olaylar: inbox.transcript_requested
curl -X POST https://app.getera.io/api/v1/actions/inbox.send_transcript \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"CONVERSATION_ID"}'{
"ok": true,
"result": "…",
"events": [
"inbox.transcript_requested"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.actions.run("inbox.send_transcript", {
id: "CONVERSATION_ID"
})era inbox send_transcript \
--id "CONVERSATION_ID"{
"name": "era__inbox__send_transcript",
"arguments": {
"id": "CONVERSATION_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, no_email_address, transcript_empty · 429 çok sık istek
inbox.set_auto_resolve
Otomatik çözmeyi ayarla — Bu gelen kutusunda hareketsiz kalan açık konuşmaları seçilen saat sayısından sonra çözer.
Gereken izin inbox:manage · veriyi değiştirir
https://app.getera.io/api/v1/inboxes/{id}/actions/set_auto_resolve- Asıl adres:
POST /api/v1/actions/inbox.set_auto_resolve
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
inboxId | uuid | evet | Doldurulduğu yer: adresteki {id} · Gelen kutusu · kimliği: inbox |
hours | number | Hareketsizlik süresi (saat) · en az 1 · en çok 8760 | |
message | string | Etkinlik notu · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
inbox_not_found | Gelen kutusu bulunmalı. |
Yayımladığı olaylar: inbox.auto_resolve_changed
Neye yazar: inbox (update) — Writes the inactivity policy
curl -X POST https://app.getera.io/api/v1/inboxes/INBOXE_ID/actions/set_auto_resolve \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"hours":1}'{
"ok": true,
"result": "…",
"events": [
"inbox.auto_resolve_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.inboxes.setAutoResolve("INBOXE_ID", {
hours: 1
})era inboxes set_auto_resolve INBOXE_ID \
--hours 1{
"name": "era__inbox__set_auto_resolve",
"arguments": {
"inboxId": "INBOXE_ID",
"hours": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 inbox_not_found · 429 çok sık istek
inbox.set_inbox_bot
Kanalın botunu seç — Bir botu kanalda önce yanıtlayan yapar ya da kaldırır.
Gereken izin inbox:manage · veriyi değiştirir
https://app.getera.io/api/v1/agent_bot_inboxes/actions/set_inbox_bot- Asıl adres:
POST /api/v1/actions/inbox.set_inbox_bot
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
inboxId | uuid | evet | Gelen kutusu · kimliği: inbox |
agentBotId | uuid | Bot · kimliği: agent_bot |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
inbox_not_found | Gelen kutusu bulunmalı. |
agent_bot_not_found | Bot var olmalı. |
Yayımladığı olaylar: inbox.agent_bot_changed
Neye yazar: agent_bot_inbox (upsert) — One active bot per inbox, or none
curl -X POST https://app.getera.io/api/v1/agent_bot_inboxes/actions/set_inbox_bot \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"inboxId":"INBOX_ID"}'{
"ok": true,
"result": "…",
"events": [
"inbox.agent_bot_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.agentBotInboxes.setInboxBot({
inboxId: "INBOX_ID"
})era agent_bot_inboxes set_inbox_bot \
--inbox-id "INBOX_ID"{
"name": "era__inbox__set_inbox_bot",
"arguments": {
"inboxId": "INBOX_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 inbox_not_found, agent_bot_not_found · 429 çok sık istek
inbox.set_inbox_members
Gelen kutusunda kimin çalışacağını belirle — Bu kanalı gören ve ona atanabilen kişilerin listesini değiştirir.
Gereken izin inbox:manage · veriyi değiştirir
https://app.getera.io/api/v1/inbox_members/actions/set_inbox_members- Asıl adres:
POST /api/v1/actions/inbox.set_inbox_members
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Gelen kutusu · kimliği: inbox |
userIds | object / array | evet | Kişiler |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
inbox_not_found | Gelen kutusu bulunmalı. |
not_a_member | Listelenen herkes çalışma alanının aktif bir üyesi olmalı. |
Yayımladığı olaylar: inbox.members_changed
Neye yazar: inbox_member (upsert) — Replaces the rota
curl -X POST https://app.getera.io/api/v1/inbox_members/actions/set_inbox_members \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"INBOX_ID","userIds":{}}'{
"ok": true,
"result": "…",
"events": [
"inbox.members_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.inboxMembers.setInboxMembers({
id: "INBOX_ID",
userIds: {}
})era inbox_members set_inbox_members --data '{"id":"INBOX_ID","userIds":{}}'{
"name": "era__inbox__set_inbox_members",
"arguments": {
"id": "INBOX_ID",
"userIds": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 inbox_not_found, not_a_member · 429 çok sık istek
inbox.set_inbox_policy
Gelen kutusunun yönlendirme kuralını belirle — Bir kanala bir yönlendirme kuralı bağlar ya da kaldırır.
Gereken izin inbox:manage · veriyi değiştirir
https://app.getera.io/api/v1/inboxes/{id}/actions/set_inbox_policy- Asıl adres:
POST /api/v1/actions/inbox.set_inbox_policy
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
inboxId | uuid | evet | Doldurulduğu yer: adresteki {id} · Gelen kutusu · kimliği: inbox |
policyId | uuid | Kural · kimliği: assignment_policy |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
inbox_not_found | Gelen kutusu bulunmalı. |
policy_not_found | Kural bulunmalı. |
Yayımladığı olaylar: inbox.assignment_policy_changed
Neye yazar: inbox (update) — Points the inbox at the rule
curl -X POST https://app.getera.io/api/v1/inboxes/INBOXE_ID/actions/set_inbox_policy \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"policyId":"ASSIGNMENT_POLICY_ID"}'{
"ok": true,
"result": "…",
"events": [
"inbox.assignment_policy_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.inboxes.setInboxPolicy("INBOXE_ID", {
policyId: "ASSIGNMENT_POLICY_ID"
})era inboxes set_inbox_policy INBOXE_ID \
--policy-id "ASSIGNMENT_POLICY_ID"{
"name": "era__inbox__set_inbox_policy",
"arguments": {
"inboxId": "INBOXE_ID",
"policyId": "ASSIGNMENT_POLICY_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 inbox_not_found, policy_not_found · 429 çok sık istek
inbox.set_mailbox
Posta kutusunu Gmail ya da Outlook ile bağla — Bir e-posta gelen kutusunu şifreli sunucu yerine bağlı bir Gmail ya da Outlook hesabıyla okur ve yanıtlar.
Gereken izin inbox:manage · veriyi değiştirir
https://app.getera.io/api/v1/inboxes/{id}/actions/set_mailbox- Asıl adres:
POST /api/v1/actions/inbox.set_mailbox
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Gelen kutusu · kimliği: inbox |
credentialId | uuid | evet | Hesap |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
inbox_not_found | Gelen kutusu bulunmalı. |
not_an_email_inbox | Yalnız e-posta gelen kutusunun bağlanacak bir posta kutusu vardır. |
mailbox_connection_required | Giriş yapılacak hesap belirtilmeli. |
connection_not_found | Hesap bu çalışma alanında hâlâ bağlı olmalı. |
mailbox_not_mail_app | Hesap bir Gmail ya da Outlook bağlantısı olmalı. |
connection_not_usable | Hesap bu kişinin, şirketin ya da onunla paylaşılmış olmalı. |
connection_inactive | Hesap etkin olmalı; duraklatılmış ya da iptal edilmiş olamaz. |
Yayımladığı olaylar: inbox.channel_updated
Neye yazar: inbox (update) — Points the channel at the account and restarts its mail cursor
curl -X POST https://app.getera.io/api/v1/inboxes/INBOXE_ID/actions/set_mailbox \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"credentialId":"CREDENTIAL_ID"}'{
"ok": true,
"result": "…",
"events": [
"inbox.channel_updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.inboxes.setMailbox("INBOXE_ID", {
credentialId: "CREDENTIAL_ID"
})era inboxes set_mailbox INBOXE_ID \
--credential-id "CREDENTIAL_ID"{
"name": "era__inbox__set_mailbox",
"arguments": {
"id": "INBOXE_ID",
"credentialId": "CREDENTIAL_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 inbox_not_found, not_an_email_inbox, mailbox_connection_required, connection_not_found, mailbox_not_mail_app, connection_not_usable, connection_inactive · 429 çok sık istek
inbox.set_member_preference
Gelen kutusu tercihlerini kaydet — Gelen kutusu için müsaitlik durumunuzu, imzanızı ve ses tercihinizi belirler.
Gereken izin inbox:read · veriyi değiştirir
https://app.getera.io/api/v1/inbox_member_preferences/actions/set_member_preference- Asıl adres:
POST /api/v1/actions/inbox.set_member_preference
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
availability | string (enum) | Müsaitlik · İzin verilen değerler: online, busy, offline | |
messageSignature | string | Mesaj imzası · en çok 2000 | |
audioAlerts | boolean | Sesli uyarıları çal |
Yayımladığı olaylar: inbox.member_preference_changed
Neye yazar: inbox_member_preference (upsert) — Writes the member preference
curl -X POST https://app.getera.io/api/v1/inbox_member_preferences/actions/set_member_preference \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"availability":"online"}'{
"ok": true,
"result": "…",
"events": [
"inbox.member_preference_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.inboxMemberPreferences.setMemberPreference({
availability: "online"
})era inbox_member_preferences set_member_preference \
--availability "online"{
"name": "era__inbox__set_member_preference",
"arguments": {
"availability": "online"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:read izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 429 çok sık istek
inbox.set_priority
Önceliği belirle — Konuşmayı önceliklendirir ya da önceliksiz bırakır.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/set_priority- Asıl adres:
POST /api/v1/actions/inbox.set_priority
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
priority | string (enum) | Öncelik · İzin verilen değerler: low, medium, high, urgent |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
Yayımladığı olaylar: inbox.priority_changed
Neye yazar: conversation (update) — Sets the priority
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/set_priority \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"priority":"low"}'{
"ok": true,
"result": "…",
"events": [
"inbox.priority_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.setPriority("CONVERSATION_ID", {
priority: "low"
})era conversations set_priority CONVERSATION_ID \
--priority "low"{
"name": "era__inbox__set_priority",
"arguments": {
"id": "CONVERSATION_ID",
"priority": "low"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found · 429 çok sık istek
inbox.set_team_members
Ekip üyelerini belirle — Ekipte kimlerin olduğunu değiştirir.
Gereken izin inbox:manage · veriyi değiştirir
https://app.getera.io/api/v1/team_members/actions/set_team_members- Asıl adres:
POST /api/v1/actions/inbox.set_team_members
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Ekip · kimliği: team |
userIds | object / array | evet | Kişiler |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
team_not_found | Ekip bulunmalı. |
not_a_member | Listelenen herkes çalışma alanının aktif bir üyesi olmalı. |
Yayımladığı olaylar: inbox.team_changed
Neye yazar: team_member (upsert) — Replaces the membership
curl -X POST https://app.getera.io/api/v1/team_members/actions/set_team_members \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"id":"TEAM_ID","userIds":{}}'{
"ok": true,
"result": "…",
"events": [
"inbox.team_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.teamMembers.setTeamMembers({
id: "TEAM_ID",
userIds: {}
})era team_members set_team_members --data '{"id":"TEAM_ID","userIds":{}}'{
"name": "era__inbox__set_team_members",
"arguments": {
"id": "TEAM_ID",
"userIds": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 team_not_found, not_a_member · 429 çok sık istek
inbox.set_working_hours
Çalışma saatlerini belirle — Kanalın ne zaman yanıt verdiğini ve kimse yokken ne söylediğini ayarlar.
Gereken izin inbox:manage · veriyi değiştirir
https://app.getera.io/api/v1/inboxes/{id}/actions/set_working_hours- Asıl adres:
POST /api/v1/actions/inbox.set_working_hours
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
inboxId | uuid | evet | Doldurulduğu yer: adresteki {id} · Gelen kutusu · kimliği: inbox |
days | object / array | evet | Hafta |
workingHoursEnabled | boolean | Çalışma saatlerini kullan | |
outOfOfficeMessage | string | Mesai dışı mesajı · en çok 10000 | |
timezone | string | Saat dilimi · en çok 100 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
inbox_not_found | Gelen kutusu bulunmalı. |
invalid_working_hours | Her gün kapalı, tüm gün açık ya da bir saatten daha geç bir saate kadar açıktır. |
unknown_timezone | Saat dilimi sunucunun bildiği bir saat dilimi olmalı. |
Yayımladığı olaylar: inbox.working_hours_changed
Neye yazar: inbox_working_hour (upsert) — Writes the week; inbox (update) — Switches hours on or off and sets the out-of-office text
curl -X POST https://app.getera.io/api/v1/inboxes/INBOXE_ID/actions/set_working_hours \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"days":{}}'{
"ok": true,
"result": "…",
"events": [
"inbox.working_hours_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.inboxes.setWorkingHours("INBOXE_ID", {
days: {}
})era inboxes set_working_hours INBOXE_ID --data '{"days":{}}'{
"name": "era__inbox__set_working_hours",
"arguments": {
"inboxId": "INBOXE_ID",
"days": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 inbox_not_found, invalid_working_hours, unknown_timezone · 429 çok sık istek
inbox.snooze
Konuşmayı ertele — Konuşmayı seçtiğiniz ana kadar bir kenara koyar.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/snooze- Asıl adres:
POST /api/v1/actions/inbox.snooze
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
until | date-time | evet | Bitiş |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
snooze_not_in_future | Erteleme gelecekte bitmeli. |
Yayımladığı olaylar: inbox.snoozed
Neye yazar: conversation (update) — Snoozes it
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/snooze \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"until":"2026-11-02T09:00:00Z"}'{
"ok": true,
"result": "…",
"events": [
"inbox.snoozed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.snooze("CONVERSATION_ID", {
until: "2026-11-02T09:00:00Z"
})era conversations snooze CONVERSATION_ID \
--until "2026-11-02T09:00:00Z"{
"name": "era__inbox__snooze",
"arguments": {
"id": "CONVERSATION_ID",
"until": "2026-11-02T09:00:00Z"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, snooze_not_in_future · 429 çok sık istek
inbox.submit_csat
Puanı al — Müşterinin çözülmüş bir konuşma için verdiği 1–5 puanı ve yorumu kaydeder.
Gereken izin inbox:handle · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)
https://app.getera.io/api/v1/csat_survey_responses/actions/submit_csat- Asıl adres:
POST /api/v1/actions/inbox.submit_csat
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
conversationId | uuid | evet | Konuşma · kimliği: conversation |
rating | number | evet | Puan · en az 1 · en çok 5 |
feedbackMessage | string | Yorum · en çok 5000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
no_csat_survey | Puan, onu isteyen bir anket gerektirir. |
csat_locked | Anket gönderildikten on dört gün sonra kilitlenir. |
Yayımladığı olaylar: inbox.csat_received
Neye yazar: csat_survey_response (upsert) — Files or replaces the rating; message (update) — Keeps the answer on the survey message
curl -X POST https://app.getera.io/api/v1/csat_survey_responses/actions/submit_csat \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"conversationId":"CONVERSATION_ID","rating":1}'{
"ok": true,
"result": "…",
"events": [
"inbox.csat_received"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.csatSurveyResponses.submitCsat({
conversationId: "CONVERSATION_ID",
rating: 1
})era csat_survey_responses submit_csat \
--conversation-id "CONVERSATION_ID" \
--rating 1{
"name": "era__inbox__submit_csat",
"arguments": {
"conversationId": "CONVERSATION_ID",
"rating": 1
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:handle izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, no_csat_survey, csat_locked · 429 çok sık istek
inbox.sync_whatsapp_templates
WhatsApp şablonlarını eşitle — Onaylı şablonları bağlı Meta işletme hesabından, erişim anahtarını göstermeden okur.
Gereken izin inbox:manage · veriyi değiştirir
https://app.getera.io/api/v1/whatsapp_message_templates/actions/sync_whatsapp_templates- Asıl adres:
POST /api/v1/actions/inbox.sync_whatsapp_templates
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
inboxId | uuid | evet | WhatsApp gelen kutusu · kimliği: inbox |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
inbox_not_found | Gelen kutusu bulunmalı. |
whatsapp_not_connected | Gelen kutusu, işletme hesabı tanımlı bağlı bir WhatsApp kanalı olmalı. |
Yayımladığı olaylar: inbox.whatsapp_templates_synced
Neye yazar: whatsapp_message_template (upsert) — Refreshes the approved template catalogue
curl -X POST https://app.getera.io/api/v1/whatsapp_message_templates/actions/sync_whatsapp_templates \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"inboxId":"INBOX_ID"}'{
"ok": true,
"result": "…",
"events": [
"inbox.whatsapp_templates_synced"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.whatsappMessageTemplates.syncWhatsappTemplates({
inboxId: "INBOX_ID"
})era whatsapp_message_templates sync_whatsapp_templates \
--inbox-id "INBOX_ID"{
"name": "era__inbox__sync_whatsapp_templates",
"arguments": {
"inboxId": "INBOX_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 inbox_not_found, whatsapp_not_connected · 429 çok sık istek
inbox.translate_message
Mesajı çevir — Çalışma alanının yapay zekâ sağlayıcısını kullanır ve çeviriyi asıl mesajla birlikte saklar.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/messages/{id}/actions/translate_message- Asıl adres:
POST /api/v1/actions/inbox.translate_message
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Mesaj · kimliği: message |
language | string | evet | Dil · en çok 80 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
message_not_found | Mesaj bulunamadı. |
Yayımladığı olaylar: inbox.message_translated
Neye yazar: message (update) — Stores the translation in message metadata
curl -X POST https://app.getera.io/api/v1/messages/MESSAGE_ID/actions/translate_message \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"language":"Language"}'{
"ok": true,
"result": "…",
"events": [
"inbox.message_translated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.messages.translateMessage("MESSAGE_ID", {
language: "Language"
})era messages translate_message MESSAGE_ID \
--language "Language"{
"name": "era__inbox__translate_message",
"arguments": {
"id": "MESSAGE_ID",
"language": "Language"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 message_not_found · 429 çok sık istek
inbox.unmute
Sesi aç — Sonraki mesajın konuşmayı yeniden açmasına izin verir.
Gereken izin inbox:write · veriyi değiştirir
https://app.getera.io/api/v1/conversations/{id}/actions/unmute- Asıl adres:
POST /api/v1/actions/inbox.unmute
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Konuşma · kimliği: conversation |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
conversation_not_found | Konuşma bulunmalı. |
not_muted | Sessizde olmalı. |
Yayımladığı olaylar: inbox.unmuted
Neye yazar: conversation (update) — Clears the mute
curl -X POST https://app.getera.io/api/v1/conversations/CONVERSATION_ID/actions/unmute \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"inbox.unmuted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.conversations.unmute("CONVERSATION_ID")era conversations unmute CONVERSATION_ID{
"name": "era__inbox__unmute",
"arguments": {
"id": "CONVERSATION_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 conversation_not_found, not_muted · 429 çok sık istek
inbox.update_inbox
Gelen kutusunu düzenle — Kanalın karşılama mesajını, saatlerini, anketlerini ve yanıt kurallarını değiştirir.
Gereken izin inbox:manage · veriyi değiştirir
https://app.getera.io/api/v1/inboxes/{id}/actions/update_inbox- REST kısayolu:
PATCH /api/v1/inboxes/{id} - Asıl adres:
POST /api/v1/actions/inbox.update_inbox
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Gelen kutusu · kimliği: inbox |
name | string | Ad · en çok 200 | |
greetingEnabled | boolean | Karşılama gönder | |
greetingMessage | string | Karşılama · en çok 2000 | |
outOfOfficeMessage | string | Mesai dışı mesajı · en çok 2000 | |
workingHoursEnabled | boolean | Yalnızca çalışma saatlerinde yanıtla | |
timezone | string | Saat dilimi · en çok 64 | |
enableAutoAssignment | boolean | Otomatik ata | |
enableEmailCollect | boolean | E-posta adresi iste | |
csatSurveyEnabled | boolean | Çözüldüğünde puan iste | |
allowMessagesAfterResolved | boolean | Çözüldükten sonra yanıtlara izin ver | |
lockToSingleConversation | boolean | Kişi başına bir konuşma | |
senderNameType | string (enum) | Gönderen adı · İzin verilen değerler: friendly, professional | |
businessName | string | İşletme adı · en çok 200 | |
helpSiteId | uuid | Yardım merkezi · kimliği: site | |
channelConfig | object / array | Kanal ayarları | |
csatConfig | object / array | Anket ayarları |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
inbox_not_found | Gelen kutusu bulunmalı. |
invalid_csat_config | Anketin gösterim ve etiket kuralı bilinen seçeneklerden olmalı. |
unknown_timezone | Saat dilimi bu sunucunun bildiği bir saat dilimi olmalı. |
Yayımladığı olaylar: inbox.channel_updated
Neye yazar: inbox (update) — Updates the channel’s settings
curl -X POST https://app.getera.io/api/v1/inboxes/INBOXE_ID/actions/update_inbox \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"inbox.channel_updated"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.inboxes.updateInbox("INBOXE_ID", {
name: "Name"
})era inboxes update_inbox INBOXE_ID \
--name "Name"{
"name": "era__inbox__update_inbox",
"arguments": {
"id": "INBOXE_ID",
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde inbox:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 inbox_not_found, invalid_csat_config, unknown_timezone · 429 çok sık istek
Veri modelleri
AgentBotInbox
Tablo agent_bot_inbox · Kaynak agent_bot_inboxes
GET /api/v1/agent_bot_inboxesGET /api/v1/agent_bot_inboxes/{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 | ||
inbox_id | string (uuid) · uuid | inbox | ||
agent_bot_id | string (uuid) · uuid | agent_bot | ||
status | string · text | active, inactive | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
AgentBot
Tablo agent_bot · Kaynak agent_bots
GET /api/v1/agent_botsGET /api/v1/agent_bots/{id}PATCH /api/v1/agent_bots/{id}→inbox.save_agent_botDELETE /api/v1/agent_bots/{id}→inbox.delete_agent_bot
| 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 | ||
name | string · text | |||
description | string · text | evet | ||
bot_type | string · text | |||
outgoing_url | string · text | evet | ||
bot_config | object · jsonb | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
last_delivery_at | string (date-time) · timestamptz | evet | ||
last_delivery_error | string · text | evet |
Birincil anahtar: id
Denetimler:
CHECK ((bot_type = 'webhook'::text))CHECK (((last_delivery_error IS NULL) OR (length(last_delivery_error) <= 2000)))CHECK (((name = btrim(name)) AND (length(name) > 0)))CHECK (((outgoing_url IS NULL) OR ((length(outgoing_url) <= 2048) AND (outgoing_url ~ '^https?://'::text))))
AppliedSla
Tablo applied_sla · Kaynak applied_slas
GET /api/v1/applied_slasGET /api/v1/applied_slas/{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 | ||
conversation_id | string (uuid) · uuid | conversation | ||
sla_policy_id | string (uuid) · uuid | sla_policy | ||
sla_status | string · text | active, hit, missed, active_with_misses | ||
evaluated_at | string (date-time) · timestamptz | evet | ||
next_deadline_at | string (date-time) · timestamptz | evet | ||
next_deadline_type | string · text | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK (((next_deadline_type IS NULL) OR (next_deadline_type = ANY (ARRAY['frt'::text, 'nrt'::text, 'rt'::text]))))
AssignmentPolicy
Tablo assignment_policy · Kaynak assignment_policies
GET /api/v1/assignment_policiesGET /api/v1/assignment_policies/{id}PATCH /api/v1/assignment_policies/{id}→inbox.save_assignment_policy
| 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 | ||
name | string · text | |||
description | string · text | evet | ||
assignment_order | string · text | round_robin, balanced | ||
conversation_priority | string · text | earliest_created, longest_waiting | ||
fair_distribution_limit | integer · int4 | |||
fair_distribution_window | integer · int4 | |||
enabled | boolean · bool | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((fair_distribution_limit > 0))CHECK ((fair_distribution_window > 0))CHECK (((name = btrim(name)) AND (length(name) > 0)))
CannedResponse
Tablo canned_response · Kaynak canned_responses
GET /api/v1/canned_responsesGET /api/v1/canned_responses/{id}PATCH /api/v1/canned_responses/{id}→inbox.save_canned_responseDELETE /api/v1/canned_responses/{id}→inbox.delete_canned_response
| 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 | ||
short_code | string · text | |||
content | string · text | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK (((length(btrim(content)) > 0) AND (length(content) <= 150000)))CHECK (((short_code = lower(btrim(short_code))) AND (length(short_code) > 0) AND (short_code !~ '\s'::text)))
ConversationMention
Tablo conversation_mention · Kaynak conversation_mentions
GET /api/v1/conversation_mentionsGET /api/v1/conversation_mentions/{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 | ||
conversation_id | string (uuid) · uuid | conversation | ||
user_id | string (uuid) · uuid | app_user | ||
message_id | string (uuid) · uuid | evet | message | |
mentioned_by | string (uuid) · uuid | evet | app_user | |
mentioned_at | string (date-time) · timestamptz | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
ConversationParticipant
Tablo conversation_participant · Kaynak conversation_participants
GET /api/v1/conversation_participantsGET /api/v1/conversation_participants/{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 | ||
conversation_id | string (uuid) · uuid | conversation | ||
user_id | string (uuid) · uuid | app_user | ||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Conversation
Tablo conversation · Kaynak conversations
GET /api/v1/conversationsGET /api/v1/conversations/{id}POST /api/v1/conversations→inbox.open_conversation
| 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 | ||
inbox_id | string (uuid) · uuid | inbox | ||
customer_id | string (uuid) · uuid | customer | ||
customer_identity_id | string (uuid) · uuid | evet | customer_identity | |
status | string · text | open, resolved, pending, snoozed | ||
priority | string · text | evet | ||
assignee_user_id | string (uuid) · uuid | evet | app_user | |
assignee_agent_bot_id | string (uuid) · uuid | evet | agent_bot | |
assignee_set_at | string (date-time) · timestamptz | evet | ||
team_id | string (uuid) · uuid | evet | team | |
campaign_id | string (uuid) · uuid | evet | ||
display_no | string (int64) · int8 | |||
external_identifier | string · text | evet | ||
additional_attributes | object · jsonb | |||
custom_attributes | object · jsonb | |||
contact_last_seen_at | string (date-time) · timestamptz | evet | ||
agent_last_seen_at | string (date-time) · timestamptz | evet | ||
assignee_last_seen_at | string (date-time) · timestamptz | evet | ||
first_reply_created_at | string (date-time) · timestamptz | evet | ||
waiting_since | string (date-time) · timestamptz | evet | ||
snoozed_until | string (date-time) · timestamptz | evet | ||
last_activity_at | string (date-time) · timestamptz | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
muted_at | string (date-time) · timestamptz | evet | ||
era_mode | string · text | evet | ||
era_assigned_by | string (uuid) · uuid | evet | app_user | |
era_assigned_at | string (date-time) · timestamptz | evet |
Birincil anahtar: id
Denetimler:
CHECK (((assignee_user_id IS NULL) OR (assignee_agent_bot_id IS NULL)))CHECK (((era_mode IS NULL) OR (era_mode = ANY (ARRAY['draft'::text, 'answer'::text]))))CHECK (((priority IS NULL) OR (priority = ANY (ARRAY['low'::text, 'medium'::text, 'high'::text, 'urgent'::text]))))CHECK (((snoozed_until IS NULL) OR (status = 'snoozed'::text)))
CsatSurveyResponse
Tablo csat_survey_response · Kaynak csat_survey_responses
GET /api/v1/csat_survey_responsesGET /api/v1/csat_survey_responses/{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 | ||
conversation_id | string (uuid) · uuid | conversation | ||
message_id | string (uuid) · uuid | message | ||
customer_id | string (uuid) · uuid | evet | customer | |
assigned_agent_user_id | string (uuid) · uuid | evet | app_user | |
rating | integer · int4 | |||
feedback_message | string · text | evet | ||
csat_review_notes | string · text | evet | ||
review_notes_updated_at | string (date-time) · timestamptz | evet | ||
review_notes_updated_by | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK (((csat_review_notes IS NULL) OR (length(csat_review_notes) <= 5000)))CHECK (((feedback_message IS NULL) OR (length(feedback_message) <= 5000)))CHECK (((rating >= 1) AND (rating <= 5)))
InboxMemberPreference
Tablo inbox_member_preference · Kaynak inbox_member_preferences
GET /api/v1/inbox_member_preferencesGET /api/v1/inbox_member_preferences/{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 | ||
availability_status | string · text | online, busy, offline | ||
message_signature | string · text | evet | ||
audio_alerts | boolean · bool | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: workspace_id, user_id
Denetimler:
CHECK (((message_signature IS NULL) OR (length(message_signature) <= 2000)))
InboxMember
Tablo inbox_member · Kaynak inbox_members
GET /api/v1/inbox_membersGET /api/v1/inbox_members/{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 | ||
inbox_id | string (uuid) · uuid | inbox | ||
user_id | string (uuid) · uuid | app_user | ||
last_assigned_at | string (date-time) · timestamptz | evet | ||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
InboxWorkingHour
Tablo inbox_working_hour · Kaynak inbox_working_hours
GET /api/v1/inbox_working_hoursGET /api/v1/inbox_working_hours/{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 | ||
inbox_id | string (uuid) · uuid | inbox | ||
weekday | integer · int2 | |||
closed_all_day | boolean · bool | |||
open_all_day | boolean · bool | |||
opens_at | string (time) · time | evet | ||
closes_at | string (time) · time | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((NOT (closed_all_day AND open_all_day)))CHECK ((closed_all_day OR open_all_day OR ((opens_at IS NOT NULL) AND (closes_at IS NOT NULL) AND (closes_at > opens_at))))CHECK (((weekday >= 0) AND (weekday <= 6)))
Inbox
Tablo inbox · Kaynak inboxes
GET /api/v1/inboxesGET /api/v1/inboxes/{id}POST /api/v1/inboxes→inbox.create_inboxPATCH /api/v1/inboxes/{id}→inbox.update_inbox
| 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 | ||
name | string · text | |||
channel_type | string · text | web_widget, api, email, whatsapp, sms, twilio_sms, facebook_page, instagram, telegram, line, tiktok, twitter, voice | ||
identifier | string · text | evet | ||
channel_config | object · jsonb | |||
needs_reauth | boolean · bool | |||
is_active | boolean · bool | |||
enable_auto_assignment | boolean · bool | |||
assignment_policy_id | string (uuid) · uuid | evet | assignment_policy | |
greeting_enabled | boolean · bool | |||
greeting_message | string · text | evet | ||
email_address | string · text | evet | ||
working_hours_enabled | boolean · bool | |||
out_of_office_message | string · text | evet | ||
timezone | string · text | |||
enable_email_collect | boolean · bool | |||
csat_survey_enabled | boolean · bool | |||
csat_config | object · jsonb | |||
allow_messages_after_resolved | boolean · bool | |||
lock_to_single_conversation | boolean · bool | |||
sender_name_type | string · text | friendly, professional | ||
business_name | string · text | evet | ||
help_site_id | string (uuid) · uuid | evet | site | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
health_status | string · text | unknown, healthy, degraded, reauth_required | ||
health_checked_at | string (date-time) · timestamptz | evet | ||
health_error | string · text | evet | ||
poll_state | object · jsonb | |||
auto_resolve_after_hours | integer · int4 | evet | ||
auto_resolve_message | string · text | evet | ||
health_details | object · jsonb |
Birincil anahtar: id
Denetimler:
CHECK (((auto_resolve_after_hours IS NULL) OR ((auto_resolve_after_hours >= 1) AND (auto_resolve_after_hours <= 8760))))CHECK (((health_error IS NULL) OR (length(health_error) <= 2000)))CHECK (((identifier IS NULL) OR ((identifier = btrim(identifier)) AND (length(identifier) > 0))))CHECK (((name = btrim(name)) AND (length(name) > 0)))CHECK ((jsonb_typeof(poll_state) = 'object'::text))CHECK (((channel_type <> ALL (ARRAY['sms'::text, 'twilio_sms'::text])) OR (COALESCE((channel_config ->> 'provider'::text), 'twilio'::text) = ANY (ARRAY['twilio'::text, 'netgsm'::text]))))
Macro
Tablo macro · Kaynak macros
GET /api/v1/macrosGET /api/v1/macros/{id}PATCH /api/v1/macros/{id}→inbox.save_macroDELETE /api/v1/macros/{id}→inbox.delete_macro
| 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 | ||
name | string · text | |||
visibility | string · text | personal, global | ||
actions | object · jsonb | |||
created_by | string (uuid) · uuid | evet | app_user | |
updated_by | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((jsonb_typeof(actions) = 'array'::text))CHECK (((name = btrim(name)) AND ((length(name) >= 1) AND (length(name) <= 200))))
MessageAttachment
Tablo message_attachment · Kaynak message_attachments
GET /api/v1/message_attachmentsGET /api/v1/message_attachments/{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 | ||
message_id | string (uuid) · uuid | message | ||
conversation_id | string (uuid) · uuid | conversation | ||
kind | string · text | image, audio, video, file, location, fallback, share, story_mention, contact, ig_reel, ig_post, ig_story, embed | ||
file_id | string (uuid) · uuid | evet | file | |
external_url | string · text | evet | ||
coordinates_lat | number · float8 | evet | ||
coordinates_long | number · float8 | evet | ||
fallback_title | string · text | evet | ||
meta | object · jsonb | |||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK (((kind <> ALL (ARRAY['image'::text, 'audio'::text, 'video'::text, 'file'::text])) OR (file_id IS NOT NULL)))CHECK (((kind <> 'location'::text) OR ((coordinates_lat IS NOT NULL) AND (coordinates_long IS NOT NULL))))
Message
Tablo message · Kaynak messages
GET /api/v1/messagesGET /api/v1/messages/{id}DELETE /api/v1/messages/{id}→inbox.delete_message
| 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 | ||
conversation_id | string (uuid) · uuid | conversation | ||
inbox_id | string (uuid) · uuid | inbox | ||
message_type | string · text | incoming, outgoing, activity, template | ||
content_type | string · text | text, input_text, input_textarea, input_email, input_select, cards, form, article, incoming_email, input_csat, integrations, sticker, voice_call | ||
status | string · text | queued, sent, delivered, read, failed | ||
content | string · text | evet | ||
processed_message_content | string · text | evet | ||
is_private | boolean · bool | |||
sender_kind | string · text | user, customer, agent_bot, system | ||
sender_user_id | string (uuid) · uuid | evet | app_user | |
sender_customer_id | string (uuid) · uuid | evet | customer | |
sender_agent_bot_id | string (uuid) · uuid | evet | agent_bot | |
source_id | string · text | evet | ||
content_attributes | object · jsonb | |||
external_source_ids | object · jsonb | |||
additional_attributes | object · jsonb | |||
sentiment | object · jsonb | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
deleted_at | string (date-time) · timestamptz | evet | ||
delivery_attempts | integer · int4 | |||
delivery_generation | integer · int4 | |||
delivery_error | string · text | evet | ||
status_changed_at | string (date-time) · timestamptz | evet |
Birincil anahtar: id
Denetimler:
CHECK (((content IS NULL) OR (length(content) <= 150000)))CHECK ((delivery_attempts >= 0))CHECK (((delivery_error IS NULL) OR (length(delivery_error) <= 2000)))CHECK (((delivery_error IS NULL) OR (status = ANY (ARRAY['queued'::text, 'failed'::text]))))CHECK ((delivery_generation >= 0))CHECK (((NOT is_private) OR (message_type = ANY (ARRAY['outgoing'::text, 'activity'::text]))))CHECK (((processed_message_content IS NULL) OR (length(processed_message_content) <= 150000)))CHECK (((status <> 'queued'::text) OR ((message_type = ANY (ARRAY['outgoing'::text, 'template'::text])) AND (NOT is_private))))CHECK ( CASE sender_kind WHEN 'user'::text THEN ((sender_user_id IS NOT NULL) AND (sender_customer_id IS NULL) AND (sender_agent_bot_id IS NULL)) WHEN 'customer'::text THEN ((sender_customer_id IS NOT NULL) AND (sender_user_id IS NULL) AND (sender_agent_bot_id IS NULL)) WHEN 'agent_bot'::text THEN ((sender_agent_bot_id IS NOT NULL) AND (sender_user_id IS NULL) AND (sender_customer_id IS NULL)) ELSE ((sender_user_id IS NULL) AND (sender_customer_id IS NULL) AND (sender_agent_bot_id IS NULL)) END)
ReportingEvent
Tablo reporting_event · Kaynak reporting_events
GET /api/v1/reporting_eventsGET /api/v1/reporting_events/{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 | ||
name | string · text | conversation_opened, first_response, reply_time, conversation_resolved, conversation_bot_resolved, conversation_bot_handoff | ||
value | integer · int4 | |||
value_in_business_hours | integer · int4 | evet | ||
inbox_id | string (uuid) · uuid | inbox | ||
conversation_id | string (uuid) · uuid | conversation | ||
user_id | string (uuid) · uuid | evet | app_user | |
team_id | string (uuid) · uuid | evet | team | |
event_start_time | string (date-time) · timestamptz | |||
event_end_time | string (date-time) · timestamptz | |||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((event_end_time >= event_start_time))CHECK ((value >= 0))CHECK (((value_in_business_hours IS NULL) OR (value_in_business_hours >= 0)))
SlaEvent
Tablo sla_event · Kaynak sla_events
GET /api/v1/sla_eventsGET /api/v1/sla_events/{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 | ||
applied_sla_id | string (uuid) · uuid | applied_sla | ||
conversation_id | string (uuid) · uuid | conversation | ||
inbox_id | string (uuid) · uuid | inbox | ||
sla_policy_id | string (uuid) · uuid | sla_policy | ||
event_type | string · text | frt, nrt, rt | ||
meta | object · jsonb | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((jsonb_typeof(meta) = 'object'::text))
SlaPolicy
Tablo sla_policy · Kaynak sla_policies
GET /api/v1/sla_policiesGET /api/v1/sla_policies/{id}PATCH /api/v1/sla_policies/{id}→inbox.save_sla_policyDELETE /api/v1/sla_policies/{id}→inbox.delete_sla_policy
| 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 | ||
name | string · text | |||
description | string · text | evet | ||
first_response_seconds | integer · int4 | evet | ||
next_response_seconds | integer · int4 | evet | ||
resolution_seconds | integer · int4 | evet | ||
only_during_business_hours | boolean · bool | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK (((first_response_seconds IS NOT NULL) OR (next_response_seconds IS NOT NULL) OR (resolution_seconds IS NOT NULL)))CHECK (((description IS NULL) OR (length(description) <= 2000)))CHECK (((first_response_seconds IS NULL) OR (first_response_seconds > 0)))CHECK (((name = btrim(name)) AND ((length(name) >= 1) AND (length(name) <= 200))))CHECK (((next_response_seconds IS NULL) OR (next_response_seconds > 0)))CHECK (((resolution_seconds IS NULL) OR (resolution_seconds > 0)))
TeamMember
Tablo team_member · Kaynak team_members
GET /api/v1/team_membersGET /api/v1/team_members/{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 | ||
team_id | string (uuid) · uuid | team | ||
user_id | string (uuid) · uuid | app_user | ||
created_at | string (date-time) · timestamptz |
Birincil anahtar: id
Team
Tablo team · Kaynak teams
GET /api/v1/teamsGET /api/v1/teams/{id}PATCH /api/v1/teams/{id}→inbox.save_teamDELETE /api/v1/teams/{id}→inbox.delete_team
| 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 | ||
name | string · text | |||
description | string · text | evet | ||
allow_auto_assign | boolean · bool | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK (((name = btrim(name)) AND (length(name) > 0)))
WhatsappMessageTemplate
Tablo whatsapp_message_template · Kaynak whatsapp_message_templates
GET /api/v1/whatsapp_message_templatesGET /api/v1/whatsapp_message_templates/{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 | ||
inbox_id | string (uuid) · uuid | inbox | ||
provider_id | string · text | |||
name | string · text | |||
language | string · text | |||
category | string · text | evet | ||
status | string · text | approved, pending, rejected, paused, disabled | ||
body | string · text | |||
components | object · jsonb | |||
variable_count | integer · int4 | |||
synced_at | string (date-time) · timestamptz | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: inbox_id, provider_id
Denetimler:
CHECK ((variable_count >= 0))
Olaylar
İş akışları ve webhook'lar bu olaylara tepki verir.
| Olay | Ne olur | Taşıdığı alanlar |
|---|---|---|
inbox.agent_bot_changed | Bir bot kaydedildi, değiştirildi, kaldırıldı ya da bir kanala konuldu. | id |
inbox.assigned | Bir konuşma başka birine atandı. | id, userId, automatic |
inbox.assignment_policy_changed | Bir yönlendirme kuralı değişti. | id |
inbox.auto_resolve_changed | Gelen kutusunun hareketsizlik kuralı değişti. | id, hours |
inbox.bot_handoff | Bir bot konuşmayı insanlara geri devretti. | id |
inbox.canned_response_changed | Hazır yanıtlar değişti. | id |
inbox.channel_connected | Bir kanal bağlandı. | id, channelType |
inbox.channel_deactivated | Bir kanal hizmetten çıkarıldı. | id |
inbox.channel_health_changed | Bir kanal erişilebilir ya da erişilemez oldu veya yeniden bağlanması gerekiyor. | id, status |
inbox.channel_updated | Bir kanalın ayarları değişti. | id |
inbox.conversation_opened | Bir konuşma açıldı. | id, inboxId, customerId, status |
inbox.csat_received | Bir müşteri bir konuşmayı puanladı. | id, responseId, rating, customerId |
inbox.customer_changed | Bir konuşma başka bir kişiye taşındı. | id, customerId |
inbox.delivery_retried | Biri başarısız bir yanıtın yeniden gönderilmesini istedi. | id, conversationId, generation |
inbox.era_assigned | Bir konuşma Era’ya verildi (taslak ya da yanıt için) ya da geri alındı. | id, mode |
inbox.macro_changed | Bir makro değişti. | id |
inbox.macro_executed | Bir makro çalıştırıldı. | id, conversationIds |
inbox.member_preference_changed | Bir temsilci gelen kutusu durumunu ya da yanıt tercihlerini değiştirdi. | id, userId |
inbox.members_changed | Bir gelen kutusunda kimlerin çalıştığı değişti. | id, count |
inbox.mentioned | Özel bir notta biri anıldı. | id, messageId, userIds |
inbox.message_deleted | Bir mesaj silindi. | id, conversationId |
inbox.message_delivered | Bir kanal bir yanıtı kabul etti, teslim etti ya da gösterdi. | id, conversationId, status |
inbox.message_edited | Gönderilmiş bir mesaj düzeltildi. | id, conversationId |
inbox.message_failed | Bir yanıt teslim edilemedi. | id, conversationId, reason |
inbox.message_received | Bir kanala mesaj geldi. | id, conversationId, inboxId, customerId |
inbox.message_sent | Bir yanıt yazıldı ve teslim için sıraya alındı. | id, conversationId, firstReply, generation |
inbox.message_translated | Bir mesajın çevirisi aslının yanına kaydedildi. | id, language |
inbox.muted | Bir konuşmanın sesi kapatıldı. | id |
inbox.note_added | Özel bir not bırakıldı. | id, conversationId |
inbox.participant_added | Biri bir konuşmayı takip etmeye başladı. | id, userId |
inbox.priority_changed | Bir konuşmanın önceliği belirlendi. | id, priority |
inbox.reopened | Bir konuşma yeniden açıldı. | id |
inbox.resolved | Bir konuşma çözüldü. | id, customerId, csatRequested |
inbox.sla_applied | Bir konuşma bir SLA’ya göre ölçülmeye başladı. | id, appliedSlaId, policyId |
inbox.sla_closed | Çözülmüş bir konuşmanın SLA sonucu (karşılandı ya da kaçırıldı) kesinleşti. | id, appliedSlaId, status |
inbox.sla_missed | Bir konuşma bir SLA hedefini kaçırdı. | id, appliedSlaId, type, policy |
inbox.sla_policy_changed | Bir SLA politikası değişti. | id |
inbox.snoozed | Bir konuşma sonraya ertelendi. | id, until |
inbox.team_assigned | Bir konuşma başka bir ekibe geçti. | id, teamId, assigneeDropped |
inbox.team_changed | Bir ekip değişti. | id |
inbox.transcript_requested | Bir konuşmanın dökümü e-postayla istendi. | id, email |
inbox.unmuted | Bir konuşmanın sesi açıldı. | id |
inbox.user_mentioned | Özel bir notta bir kişi anıldı — bildirim kuralları bu olayı dinler. | id, messageId, userId, recipientUserId |
inbox.whatsapp_templates_synced | Onaylı WhatsApp şablonları yenilendi. | id, count |
inbox.working_hours_changed | Bir kanalın çalışma saatleri değişti. | id |