Panolar API
Panolar modülünün tüm işlemleri (6) ve veri modelleri (2): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.
Base tablolarınızdan sayılar, grafikler ve tablolarla panolar.
Modül kodu dashboards · 6 işlem · 2 veri modeli · 3 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ı: dashboards (hepsi), dashboards:read (yalnız okuma) ya da dashboards:<yetenek>.
Kaynaklar
| Kaynak | Tablo | Listeleme ve okuma | POST | PATCH | DELETE |
|---|---|---|---|---|---|
dashboard_widgets | dashboard_widget | /api/v1/dashboard_widgets | |||
dashboards | dashboard | /api/v1/dashboards | dashboards.create_dashboard | dashboards.update_dashboard | dashboards.delete_dashboard |
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 |
|---|---|---|
dashboards.arrange_widgets | dashboards:write | Bileşenleri yeniden düzenle |
dashboards.create_dashboard | dashboards:write | Yeni pano |
dashboards.delete_dashboard | dashboards:delete | Panoyu sil |
dashboards.remove_widget | dashboards:write | Bileşeni kaldır |
dashboards.save_widget | dashboards:write | Bileşen ekle veya düzenle |
dashboards.update_dashboard | dashboards:write | Panoyu yeniden adlandır |
dashboards.arrange_widgets
Bileşenleri yeniden düzenle — Panonun bileşenlerini yeni bir sıraya koyar.
Gereken izin dashboards:write · veriyi değiştirir
https://app.getera.io/api/v1/dashboard_widgets/actions/arrange_widgets- Asıl adres:
POST /api/v1/actions/dashboards.arrange_widgets
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
dashboardId | uuid | evet | Pano · kimliği: dashboard |
order | object / array | evet | Sipariş |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
dashboard_not_found | Pano bulunmalı. |
Yayımladığı olaylar: dashboards.dashboard_changed
Neye yazar: dashboard_widget (update) — Renumbers the widgets
curl -X POST https://app.getera.io/api/v1/dashboard_widgets/actions/arrange_widgets \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"dashboardId":"DASHBOARD_ID","order":{}}'{
"ok": true,
"result": "…",
"events": [
"dashboards.dashboard_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.dashboardWidgets.arrangeWidgets({
dashboardId: "DASHBOARD_ID",
order: {}
})era dashboard_widgets arrange_widgets --data '{"dashboardId":"DASHBOARD_ID","order":{}}'{
"name": "era__dashboards__arrange_widgets",
"arguments": {
"dashboardId": "DASHBOARD_ID",
"order": {}
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde dashboards:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 dashboard_not_found · 429 çok sık istek
dashboards.create_dashboard
Yeni pano — Sayılar ve grafikler koymak için boş bir pano açar.
Gereken izin dashboards:write · veriyi değiştirir
https://app.getera.io/api/v1/dashboards/actions/create_dashboard- REST kısayolu:
POST /api/v1/dashboards - Asıl adres:
POST /api/v1/actions/dashboards.create_dashboard
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
title | string | evet | Ad · en çok 200 |
description | string | Açıklama · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
title_required | Panonun bir adı olmalı. |
name_taken | İki pano aynı adı paylaşamaz. |
Yayımladığı olaylar: dashboards.dashboard_created
Neye yazar: dashboard (insert) — Creates the board
curl -X POST https://app.getera.io/api/v1/dashboards/actions/create_dashboard \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"title":"Name"}'{
"ok": true,
"result": "…",
"events": [
"dashboards.dashboard_created"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.dashboards.create({
title: "Name"
})era dashboards create \
--title "Name"{
"name": "era__dashboards__create_dashboard",
"arguments": {
"title": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde dashboards:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 title_required, name_taken · 429 çok sık istek
dashboards.delete_dashboard
Panoyu sil — Panoyu ve bileşenlerini kaldırır. Okuduğu tablolara dokunulmaz.
Gereken izin dashboards:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/dashboards/{id}/actions/delete_dashboard- REST kısayolu:
DELETE /api/v1/dashboards/{id} - Asıl adres:
POST /api/v1/actions/dashboards.delete_dashboard
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Pano · kimliği: dashboard |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
dashboard_not_found | Pano bulunmalı. |
Yayımladığı olaylar: dashboards.dashboard_deleted
Neye yazar: dashboard (delete) — Deletes the board; dashboard_widget (delete) — And every widget on it
curl -X POST https://app.getera.io/api/v1/dashboards/DASHBOARD_ID/actions/delete_dashboard \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"dashboards.dashboard_deleted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.dashboards.deleteDashboard("DASHBOARD_ID")era dashboards delete_dashboard DASHBOARD_ID{
"name": "era__dashboards__delete_dashboard",
"arguments": {
"id": "DASHBOARD_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde dashboards:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 dashboard_not_found · 429 çok sık istek
dashboards.remove_widget
Bileşeni kaldır — Bir bileşeni panosundan çıkarır.
Gereken izin dashboards:write · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/dashboard_widgets/{id}/actions/remove_widget- Asıl adres:
POST /api/v1/actions/dashboards.remove_widget
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Bileşen · kimliği: dashboard_widget |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
widget_not_found | Bileşen bulunmalı. |
Yayımladığı olaylar: dashboards.dashboard_changed
Neye yazar: dashboard_widget (delete) — Deletes the widget
curl -X POST https://app.getera.io/api/v1/dashboard_widgets/DASHBOARD_WIDGET_ID/actions/remove_widget \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{}'{
"ok": true,
"result": "…",
"events": [
"dashboards.dashboard_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.dashboardWidgets.removeWidget("DASHBOARD_WIDGET_ID")era dashboard_widgets remove_widget DASHBOARD_WIDGET_ID{
"name": "era__dashboards__remove_widget",
"arguments": {
"id": "DASHBOARD_WIDGET_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde dashboards:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 widget_not_found · 429 çok sık istek
dashboards.save_widget
Bileşen ekle veya düzenle — Panoya bir Base tablosu veya görünümünü okuyan bir sayı, grafik, tablo veya not koyar.
Gereken izin dashboards:write · veriyi değiştirir
https://app.getera.io/api/v1/dashboard_widgets/{id}/actions/save_widget- Asıl adres:
POST /api/v1/actions/dashboards.save_widget
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
dashboardId | uuid | evet | Pano · kimliği: dashboard |
id | uuid | Doldurulduğu yer: adresteki {id} · Bileşen · kimliği: dashboard_widget | |
kind | string (enum) | evet | Tür · İzin verilen değerler: metric, bar, line, donut, table, text |
title | string | evet | Başlık · en çok 200 |
dataTableId | uuid | Tablo · kimliği: data_table | |
savedViewId | uuid | Görüntüle · kimliği: saved_view | |
datasetKey | string | Rapor · en çok 120 | |
config | object / array | Ayarlar | |
width | number | Genişlik · en az 1 · en çok 4 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
dashboard_not_found | Pano bulunmalı. |
widget_not_found | Düzenlenen bileşen bu panoda olmalı. |
source_table_not_found | Veri bileşeni bir Base tablosunu ve o tablonun bir görünümünü okur. |
dataset_not_found | Rapor bileşeni bu çalışma alanında bulunan ve sizin açabildiğiniz bir raporu göstermeli. |
invalid_widget_config | Bileşenin topladığı veya grupladığı alanlar ona uygun olmalı. |
Yayımladığı olaylar: dashboards.dashboard_changed
Neye yazar: dashboard_widget (upsert) — Writes the widget
curl -X POST https://app.getera.io/api/v1/dashboard_widgets/DASHBOARD_WIDGET_ID/actions/save_widget \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"dashboardId":"DASHBOARD_ID","kind":"metric","title":"Title"}'{
"ok": true,
"result": "…",
"events": [
"dashboards.dashboard_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.dashboardWidgets.saveWidget("DASHBOARD_WIDGET_ID", {
dashboardId: "DASHBOARD_ID",
kind: "metric",
title: "Title"
})era dashboard_widgets save_widget DASHBOARD_WIDGET_ID \
--dashboard-id "DASHBOARD_ID" \
--kind "metric" \
--title "Title"{
"name": "era__dashboards__save_widget",
"arguments": {
"id": "DASHBOARD_WIDGET_ID",
"dashboardId": "DASHBOARD_ID",
"kind": "metric",
"title": "Title"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde dashboards:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 dashboard_not_found, widget_not_found, source_table_not_found, dataset_not_found, invalid_widget_config · 429 çok sık istek
dashboards.update_dashboard
Panoyu yeniden adlandır — Panonun adını veya açıklamasını değiştirir.
Gereken izin dashboards:write · veriyi değiştirir
https://app.getera.io/api/v1/dashboards/{id}/actions/update_dashboard- REST kısayolu:
PATCH /api/v1/dashboards/{id} - Asıl adres:
POST /api/v1/actions/dashboards.update_dashboard
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
id | uuid | evet | Doldurulduğu yer: adresteki {id} · Pano · kimliği: dashboard |
title | string | Ad · en çok 200 | |
description | string | Açıklama · en çok 2000 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
dashboard_not_found | Pano bulunmalı. |
name_taken | İki pano aynı adı paylaşamaz. |
no_change | Bir şeyin değişmesi gerekiyor. |
Yayımladığı olaylar: dashboards.dashboard_changed
Neye yazar: dashboard (update) — Renames the board
curl -X POST https://app.getera.io/api/v1/dashboards/DASHBOARD_ID/actions/update_dashboard \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"title":"Name"}'{
"ok": true,
"result": "…",
"events": [
"dashboards.dashboard_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.dashboards.updateDashboard("DASHBOARD_ID", {
title: "Name"
})era dashboards update_dashboard DASHBOARD_ID \
--title "Name"{
"name": "era__dashboards__update_dashboard",
"arguments": {
"id": "DASHBOARD_ID",
"title": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde dashboards:write izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 dashboard_not_found, name_taken, no_change · 429 çok sık istek
Veri modelleri
DashboardWidget
Tablo dashboard_widget · Kaynak dashboard_widgets
GET /api/v1/dashboard_widgetsGET /api/v1/dashboard_widgets/{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 | ||
dashboard_id | string (uuid) · uuid | dashboard | ||
kind | string · text | metric, bar, line, donut, table, text | ||
title | string · text | |||
data_table_id | string (uuid) · uuid | evet | ||
saved_view_id | string (uuid) · uuid | evet | ||
config | object · jsonb | |||
width | integer · int2 | |||
position | number · float8 | |||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
dataset_key | string · text | evet |
Birincil anahtar: id
Denetimler:
CHECK ((jsonb_typeof(config) = 'object'::text))CHECK (((dataset_key IS NULL) OR (dataset_key ~ '^[a-z0-9_]+\.[a-z0-9_]+$'::text)))CHECK (((kind = 'text'::text) OR (data_table_id IS NOT NULL) OR (dataset_key IS NOT NULL)))CHECK (((width >= 1) AND (width <= 4)))
Dashboard
Tablo dashboard · Kaynak dashboards
GET /api/v1/dashboardsGET /api/v1/dashboards/{id}POST /api/v1/dashboards→dashboards.create_dashboardPATCH /api/v1/dashboards/{id}→dashboards.update_dashboardDELETE /api/v1/dashboards/{id}→dashboards.delete_dashboard
| Sütun | Tür | Boş olabilir | İzin verilen değerler | Bağlı olduğu tablo |
|---|---|---|---|---|
id | string (uuid) · uuid | |||
organization_id | string (uuid) · uuid | organization | ||
workspace_id | string (uuid) · uuid | workspace | ||
title | string · text | |||
description | string · text | evet | ||
sort_order | number · float8 | |||
created_by | string (uuid) · uuid | evet | app_user | |
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Denetimler:
CHECK ((btrim(title) <> ''::text))
Olaylar
İş akışları ve webhook'lar bu olaylara tepki verir.
| Olay | Ne olur | Taşıdığı alanlar |
|---|---|---|
dashboards.dashboard_changed | Bir pano ya da bileşenleri değişti. | id |
dashboards.dashboard_created | Bir pano oluşturuldu. | id |
dashboards.dashboard_deleted | Bir pano silindi. | id |