Raporlar API

Raporlar modülünün tüm işlemleri (5) ve veri modelleri (2): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.

Satış ve finans raporları ile her birini kimlerin görebileceği.

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

Kaynaklar

KaynakTabloListeleme ve okumaPOSTPATCHDELETE
report_exportsreport_export/api/v1/report_exports
report_schedulesreport_schedule/api/v1/report_schedules

Listeler limit (en çok 200), cursor, order (ör. -created_at), fields ve q alır; diğer her sorgu parametresi bir sütun süzgecidir: ?status=paid, ?total[gte]=100, ?id[in]=a,b, ?x=null.

İşlemler

İşlemGereken izinNe yapar
reports.create_schedulereports:manageRaporu e-postayla zamanla
reports.delete_schedulereports:manageZamanlanmış raporu durdur
reports.record_exportreports:exportRapor dışa aktarımını kaydet
reports.request_exportreports:exportTüm satırları dışa aktar
reports.send_digestreports:manageZamanlanmış raporu gönder

reports.create_schedule

Raporu e-postayla zamanla — Bir raporun ana sayılarını sabit bir takvimle bir bildirim kuralı üzerinden gönderir.

Gereken izin reports:manage · veriyi değiştirir

POSThttps://app.getera.io/api/v1/report_schedules/actions/create_schedule
API anahtarı ya da OAuth token · reports:manage
  • Asıl adres: POST /api/v1/actions/reports.create_schedule

Girdi

AlanTürZorunluAçıklama
report_keystringevetRapor · en çok 64
rule_iduuidevetGönderim kanalı · kimliği: notification_rule
frequencystring (enum)evetNe sıklıkla · İzin verilen değerler: daily, weekly, monthly
send_hournumberSaat · Çalışma alanının saat dilimine göre yerel saat. · en az 0 · en çok 23
weekdaynumberHafta günü · 0 = Pazar. Yalnızca haftalıkta kullanılır. · en az 0 · en çok 6
window_monthsnumberKapsanan aylar · en az 1 · en çok 24

Ön koşullar

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

KodNe zaman reddedilir
unknown_reportRapor kayıtlı raporlar arasında bulunmalı.
rule_not_foundBildirim kuralı bu çalışma alanında bulunmalı.
rule_not_for_digestsKural rapor özeti olayını kapsamalı.
schedule_existsBu rapor aynı kuralla aynı sıklıkta zaten zamanlanmış.

Yayımladığı olaylar: reports.schedule_created

Neye yazar: report_schedule (insert) — The schedule, with its first send time

curl -X POST https://app.getera.io/api/v1/report_schedules/actions/create_schedule \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"report_key":"Report","rule_id":"NOTIFICATION_RULE_ID","frequency":"daily"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "reports.schedule_created"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.reportSchedules.createSchedule({
  report_key: "Report",
  rule_id: "NOTIFICATION_RULE_ID",
  frequency: "daily"
})
era report_schedules create_schedule \
  --report-key "Report" \
  --rule-id "NOTIFICATION_RULE_ID" \
  --frequency "daily"
tools/call
{
  "name": "era__reports__create_schedule",
  "arguments": {
    "report_key": "Report",
    "rule_id": "NOTIFICATION_RULE_ID",
    "frequency": "daily"
  }
}

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

reports.delete_schedule

Zamanlanmış raporu durdur — Zamanlamayı kaldırır. Gönderilmiş özetler bildirim geçmişinde kalır.

Gereken izin reports:manage · siler ya da geri alınamaz

POSThttps://app.getera.io/api/v1/report_schedules/{id}/actions/delete_schedule
API anahtarı ya da OAuth token · reports:manage
  • Asıl adres: POST /api/v1/actions/reports.delete_schedule

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Zamanla · kimliği: report_schedule

Ön koşullar

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

KodNe zaman reddedilir
schedule_not_foundZamanlama bu çalışma alanında bulunmalı.

Yayımladığı olaylar: reports.schedule_deleted

Neye yazar: report_schedule (delete) — The schedule row

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

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.reportSchedules.deleteSchedule("REPORT_SCHEDULE_ID")
era report_schedules delete_schedule REPORT_SCHEDULE_ID
tools/call
{
  "name": "era__reports__delete_schedule",
  "arguments": {
    "id": "REPORT_SCHEDULE_ID"
  }
}

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

reports.record_export

Rapor dışa aktarımını kaydet — Biri bir raporu CSV olarak indirdiğinde dışa aktarım geçmişine satır ekler.

Gereken izin reports:export · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)

POSThttps://app.getera.io/api/v1/report_exports/actions/record_export
API anahtarı ya da OAuth token · reports:export
  • Asıl adres: POST /api/v1/actions/reports.record_export

Girdi

AlanTürZorunluAçıklama
report_keystringevetRapor · en çok 64
window_monthsnumberDönem (ay) · en az 1 · en çok 24
comparestringKarşılaştırılan · en çok 16
row_countnumberevetSatırlar · en az 0 · en çok 10000000
filenamestringDosya adı · en çok 200

Ön koşullar

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

KodNe zaman reddedilir
unknown_reportRapor kayıtlı raporlar arasında bulunmalı.

Yayımladığı olaylar: reports.exported

Neye yazar: report_export (insert) — One history row per download

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

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.reportExports.recordExport({
  report_key: "Report",
  row_count: 1
})
era report_exports record_export \
  --report-key "Report" \
  --row-count 1
tools/call
{
  "name": "era__reports__record_export",
  "arguments": {
    "report_key": "Report",
    "row_count": 1
  }
}

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

reports.request_export

Tüm satırları dışa aktar — Bir raporun bir dönemde kapsadığı tüm satırların CSV dosyasını sıraya alır; kısa süre sonra indirilmeye hazır olur.

Gereken izin reports:export · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)

POSThttps://app.getera.io/api/v1/report_exports/actions/request_export
API anahtarı ya da OAuth token · reports:export
  • Asıl adres: POST /api/v1/actions/reports.request_export

Girdi

AlanTürZorunluAçıklama
datasetKeystringevetRapor · en çok 120
filtersobject / arrayFiltreler
fromdate-timeevetNereden
todate-timeevetBitiş
timezonestringSaat dilimi · en çok 64

Ön koşullar

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

KodNe zaman reddedilir
dataset_not_foundRapor bulunamadı ya da modülüne erişiminiz yok.
invalid_report_configFiltreler raporun kendi alanlarını kullanmalı ve dönemin bitişi başlangıcından sonra olmalı.

Yayımladığı olaylar: reports.exported

Neye yazar: report_export (insert) — The request, queued; the worker fills in the file

curl -X POST https://app.getera.io/api/v1/report_exports/actions/request_export \
  -H "Authorization: Bearer $ERA_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"datasetKey":"Report","from":"2026-11-02T09:00:00Z","to":"2026-11-02T09:00:00Z"}'
Yanıt
{
  "ok": true,
  "result": "…",
  "events": [
    "reports.exported"
  ]
}
import { createEra } from "@getera/sdk"

const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.reportExports.requestExport({
  datasetKey: "Report",
  from: "2026-11-02T09:00:00Z",
  to: "2026-11-02T09:00:00Z"
})
era report_exports request_export \
  --dataset-key "Report" \
  --from "2026-11-02T09:00:00Z" \
  --to "2026-11-02T09:00:00Z"
tools/call
{
  "name": "era__reports__request_export",
  "arguments": {
    "datasetKey": "Report",
    "from": "2026-11-02T09:00:00Z",
    "to": "2026-11-02T09:00:00Z"
  }
}

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

reports.send_digest

Zamanlanmış raporu gönder — Otomatik: rapor zamanlayıcısı, zamanlama geldiğinde çalıştırır.

Gereken izin reports:manage · dışarıya ulaşır (gönderir, yayımlar ya da ücret alır)

Era’nın kendi çalıştırdığı bir işlem. Başvuru eksiksiz olsun diye listelenir; API anahtarı ya da token ile istek reddedilir (403 machine_only).
POSThttps://app.getera.io/api/v1/report_schedules/{id}/actions/send_digest
API anahtarı ya da OAuth token · reports:manage
  • Asıl adres: POST /api/v1/actions/reports.send_digest

Girdi

AlanTürZorunluAçıklama
iduuidevetDoldurulduğu yer: adresteki {id} · Zamanla · kimliği: report_schedule

Ön koşullar

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

KodNe zaman reddedilir
schedule_not_foundZamanlama bulunmalı ve aktif olmalı.

Yayımladığı olaylar: reports.digest

Neye yazar: report_schedule (update) — Stamps the send and moves the next run on

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

Veri modelleri

ReportExport

Tablo report_export · Kaynak report_exports

  • GET /api/v1/report_exports
  • GET /api/v1/report_exports/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
report_keystring · text
formatstring · text
window_monthsinteger · int4evet
comparestring · textevet
row_countinteger · int4
filenamestring · textevet
exported_bystring (uuid) · uuidevetapp_user
created_atstring (date-time) · timestamptz
dataset_keystring · textevet
queryobject · jsonbevet
period_fromstring (date-time) · timestamptzevet
period_tostring (date-time) · timestamptzevet
timezonestring · textevet
statusstring · textqueued, running, done, failed
contentstring · textevet
errorstring · textevet
finished_atstring (date-time) · timestamptzevet

Birincil anahtar: id

Denetimler:

  • CHECK ((format = 'csv'::text))
  • CHECK ((row_count >= 0))

ReportSchedule

Tablo report_schedule · Kaynak report_schedules

  • GET /api/v1/report_schedules
  • GET /api/v1/report_schedules/{id}
SütunTürBoş olabilirİzin verilen değerlerBağlı olduğu tablo
idstring (uuid) · uuid
organization_idstring (uuid) · uuidorganization
workspace_idstring (uuid) · uuidworkspace
report_keystring · text
rule_idstring (uuid) · uuidnotification_rule
frequencystring · textdaily, weekly, monthly
send_hourinteger · int4
weekdayinteger · int4
window_monthsinteger · int4
activeboolean · bool
next_run_atstring (date-time) · timestamptz
last_sent_atstring (date-time) · timestamptzevet
created_bystring (uuid) · uuidevetapp_user
created_atstring (date-time) · timestamptz
updated_atstring (date-time) · timestamptz

Birincil anahtar: id

Denetimler:

  • CHECK (((send_hour >= 0) AND (send_hour <= 23)))
  • CHECK (((weekday >= 0) AND (weekday <= 6)))
  • CHECK (((window_months >= 1) AND (window_months <= 24)))

Olaylar

İş akışları ve webhook'lar bu olaylara tepki verir.

OlayNe olurTaşıdığı alanlar
reports.digestZamanlanmış bir rapor özeti hazır; yalnızca adını verdiği kurala teslim edilir.schedule_id, report_key, title, route, lines, notificationRuleId
reports.exportedBir rapor CSV olarak indirildi.export_id, report_key, row_count
reports.schedule_createdBir rapor teslim için zamanlandı.schedule_id, report_key, frequency
reports.schedule_deletedZamanlanmış bir rapor durduruldu.schedule_id, report_key
Bu sayfa yardımcı oldu mu?