Güvenlik ve erişim API
Güvenlik ve erişim modülünün tüm işlemleri (14) ve veri modelleri (6): adresler, izinler, girdiler, ön koşullar, olaylar ve örnekler.
Roller ve her rolün neyi görüp yapabileceği.
Modül kodu security_access · 14 işlem · 6 veri modeli · 15 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ı: security_access (hepsi), security_access:read (yalnız okuma) ya da security_access:<yetenek>.
Kaynaklar
| Kaynak | Tablo | Listeleme ve okuma | POST | PATCH | DELETE |
|---|---|---|---|---|---|
access_grants | access_grant | /api/v1/access_grants | |||
blueprint_installs | blueprint_install | /api/v1/blueprint_installs | |||
role_module_capabilities | role_module_capability | /api/v1/role_module_capabilities | |||
roles | role | /api/v1/roles | security_access.create_role | ||
workspace_members | workspace_member | /api/v1/workspace_members | |||
workspace_modules | workspace_module | /api/v1/workspace_modules |
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 |
|---|---|---|
security_access.apply_blueprint | security_access:manage | Hazır kurulumu yükle |
security_access.create_role | security_access:manage | Rol oluştur |
security_access.delete_role | security_access:delete | Rolü sil |
security_access.grant | security_access:manage | Bir kişiye erişim ver |
security_access.open_shop | security_access:manage | Mağazayı aç |
security_access.remove_blueprint_samples | security_access:manage | Örnek verileri kaldır |
security_access.revoke | security_access:manage | Kişisel yetkiyi geri al |
security_access.set_capability | security_access:manage | Yetki ver veya geri al |
security_access.set_masked_fields | security_access:manage | Bir kişiden alanları gizle |
security_access.set_member_role | security_access:manage | Üyenin rolünü değiştir |
security_access.set_reports_to | security_access:manage | Üyenin kime bağlı olduğunu belirle |
security_access.set_role_channels | security_access:manage | Bir rolü satış kanallarıyla sınırla |
security_access.toggle_feature | security_access:manage | Modülün bir bölümünü aç veya kapat |
security_access.toggle_module | security_access:manage | Modülü aç veya kapat |
security_access.apply_blueprint
Hazır kurulumu yükle — Bir işletme türü için modül paketini açar — bağımlılıkları, sözlüğü, ayarları ve rolleriyle — ya da yeniden uygular.
Gereken izin security_access:manage · siler ya da geri alınamaz
https://app.getera.io/api/v1/workspace_modules/actions/apply_blueprint- Asıl adres:
POST /api/v1/actions/security_access.apply_blueprint
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
code | string | evet | Hazır kurulum · en çok 41 |
choices | object / array | Kurulum tercihleri · Yanıtlar, modül açma kapamaları, düzenlenen kurulum alanları, ajanlar, iş akışları, örnek veriler. |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
unknown_blueprint | Hazır kurulum ve belirttiği her modül bu sürümde bulunmalı. |
blueprint_downgrade | Bu sürümden daha yeni bir sürümün üzerine eskisi yazılamaz. |
invalid_choices | Kurulum sihirbazındaki seçimler, listelerden ve yanıtlardan oluşmalı. |
blueprint_step_failed | Her kurulum adımı kendi kurallarına uymalı; biri uymazsa hiçbir şey kurulmaz. |
Yayımladığı olaylar: security_access.blueprint_applied, security_access.module_enabled
Neye yazar: workspace_module (upsert) — Switches the pack’s modules on, and sets their sidebar order once; role (insert) — Creates the pack’s roles; role_module_capability (insert) — Grants those roles their starting capabilities; blueprint_install (upsert) — Records the version applied and the choices it was applied with
curl -X POST https://app.getera.io/api/v1/workspace_modules/actions/apply_blueprint \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"code":"Blueprint"}'{
"ok": true,
"result": "…",
"events": [
"security_access.blueprint_applied",
"security_access.module_enabled"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workspaceModules.applyBlueprint({
code: "Blueprint"
})era workspace_modules apply_blueprint \
--code "Blueprint"{
"name": "era__security_access__apply_blueprint",
"arguments": {
"code": "Blueprint"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde security_access:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 unknown_blueprint, blueprint_downgrade, invalid_choices, blueprint_step_failed · 429 çok sık istek
security_access.create_role
Rol oluştur — Bu çalışma alanı için hiçbir şeye erişimi olmadan başlayan bir rol tanımlar.
Gereken izin security_access:manage · siler ya da geri alınamaz
https://app.getera.io/api/v1/roles/actions/create_role- REST kısayolu:
POST /api/v1/roles - Asıl adres:
POST /api/v1/actions/security_access.create_role
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
code | string | evet | Kod · en çok 40 |
label | string | evet | Ad · en çok 80 |
description | string | Açıklama · en çok 500 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
code_format | Kod bir harfle başlamalı ve yalnızca küçük harf, rakam ve alt çizgi içermeli. |
code_taken | Bu çalışma alanında bu kodda bir rol zaten var. |
Yayımladığı olaylar: security_access.role_created
Neye yazar: role (insert) — Creates the role; role_module_capability (insert) — Grants the personal modules (each person’s own Era Station rows), by trigger (sql/818)
curl -X POST https://app.getera.io/api/v1/roles/actions/create_role \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"code":"Code","label":"Name"}'{
"ok": true,
"result": "…",
"events": [
"security_access.role_created"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.roles.create({
code: "Code",
label: "Name"
})era roles create \
--code "Code" \
--label "Name"{
"name": "era__security_access__create_role",
"arguments": {
"code": "Code",
"label": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde security_access:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 code_format, code_taken · 429 çok sık istek
security_access.delete_role
Rolü sil — Kimsenin sahip olmadığı bir rolü kaldırır.
Gereken izin security_access:delete · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/roles/actions/delete_role- Asıl adres:
POST /api/v1/actions/security_access.delete_role
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
role_id | uuid | evet | Rol |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
system_role_protected | Altı sistem rolü silinemez. |
role_in_use | Bu rolde hâlâ üyeler var. Önce onları taşıyın. |
Yayımladığı olaylar: security_access.role_deleted
Neye yazar: role (delete) — Deletes the role and its capability rows
curl -X POST https://app.getera.io/api/v1/roles/actions/delete_role \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"role_id":"ROLE_ID"}'{
"ok": true,
"result": "…",
"events": [
"security_access.role_deleted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.roles.deleteRole({
role_id: "ROLE_ID"
})era roles delete_role \
--role-id "ROLE_ID"{
"name": "era__security_access__delete_role",
"arguments": {
"role_id": "ROLE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde security_access:delete izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 system_role_protected, role_in_use · 429 çok sık istek
security_access.grant
Bir kişiye erişim ver — Bir kişiye tek bir şeye erişim verir; isteğe bağlı olarak daraltılmış veya alanları gizlenmiş.
Gereken izin security_access:manage · siler ya da geri alınamaz
https://app.getera.io/api/v1/access_grants/actions/grant- Asıl adres:
POST /api/v1/actions/security_access.grant
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
user_id | uuid | evet | Üye |
subject_type | string (enum) | evet | Tür · İzin verilen değerler: module, report, view |
subject_key | string | evet | Hangisi · en çok 80 |
capability | string | evet | Yetenek · en çok 24 |
row_scope | string (enum) | Gördüğü kayıtlar · İzin verilen değerler: all, own_records, own_and_reports | |
masked_fields | object / array | Gizlenecek ölçüler · Bu iznin göstermemesi gereken ölçülerin adları. Yalnızca bir rapor için anlamlıdır. | |
channel_ids | object / array | İzin verilen satış kanalları · Yalnızca perakende: null = hepsi, boş liste = hiçbiri. Rol kapsamını daraltır. | |
expires_at | date-time | Sona erme |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
channel_scope_invalid | Kanal kapsamı bu çalışma alanının kanallarını içermeli ve mağazayı hedeflemeli. |
not_a_member | Bu kişi bu çalışma alanının üyesi değil. |
subject_not_found | Rapor yetkisi, kayıtlı bir raporu belirtmeli. |
measure_not_maskable | Bir rapordan yalnızca gerçekten gösterdiği bir ölçüyü gizlemesi istenebilir. |
Yayımladığı olaylar: security_access.access_granted
Neye yazar: access_grant (upsert) — Records the grant
curl -X POST https://app.getera.io/api/v1/access_grants/actions/grant \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"user_id":"USER_ID","subject_type":"module","subject_key":"Which one","capability":"Capability"}'{
"ok": true,
"result": "…",
"events": [
"security_access.access_granted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.accessGrants.grant({
user_id: "USER_ID",
subject_type: "module",
subject_key: "Which one",
capability: "Capability"
})era access_grants grant \
--user-id "USER_ID" \
--subject-type "module" \
--subject-key "Which one" \
--capability "Capability"{
"name": "era__security_access__grant",
"arguments": {
"user_id": "USER_ID",
"subject_type": "module",
"subject_key": "Which one",
"capability": "Capability"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde security_access:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 channel_scope_invalid, not_a_member, subject_not_found, measure_not_maskable · 429 çok sık istek
security_access.open_shop
Mağazayı aç — Mağaza modüllerini açar ve çalışma alanının adıyla, TL cinsinden bir satış kanalı açar — tek adımda.
Gereken izin security_access:manage · siler ya da geri alınamaz
https://app.getera.io/api/v1/workspace_modules/actions/open_shop- Asıl adres:
POST /api/v1/actions/security_access.open_shop
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
name | string | Ad · Boş = çalışma alanının adı. · en çok 250 | |
currencyCode | string | Para birimi · ISO-4217. Boş = TRY. · en çok 3 | |
defaultCountry | string | Varsayılan ülke · Boş = TR. · en çok 2 |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
module_limit_reached | Paketinde mağaza modüllerine yer yok. |
invalid_currency | Para birimi bir ISO-4217 kodu olmalı. |
Yayımladığı olaylar: security_access.module_enabled, security_access.shop_opened
Neye yazar: workspace_module (upsert) — Switches retail and its dependencies on; retail’s opening code then opens the shop channel, as a seed would
curl -X POST https://app.getera.io/api/v1/workspace_modules/actions/open_shop \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"name":"Name"}'{
"ok": true,
"result": "…",
"events": [
"security_access.module_enabled",
"security_access.shop_opened"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workspaceModules.openShop({
name: "Name"
})era workspace_modules open_shop \
--name "Name"{
"name": "era__security_access__open_shop",
"arguments": {
"name": "Name"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde security_access:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 module_limit_reached, invalid_currency · 429 çok sık istek
security_access.remove_blueprint_samples
Örnek verileri kaldır — Yalnızca hazır kurulumun oluşturduğu kayıtları, her kaydın kendi modül aksiyonuyla kaldırır; yeniden çalıştırmak güvenlidir.
Gereken izin security_access:manage · siler ya da geri alınamaz · Era çalıştırırken bir kişiye onaylatır
https://app.getera.io/api/v1/blueprint_installs/actions/remove_blueprint_samples- Asıl adres:
POST /api/v1/actions/security_access.remove_blueprint_samples
Girdi
Bu işlem girdi almaz.
Neye yazar: blueprint_install (update) — Marks successfully handled sample records removed
curl -X POST https://app.getera.io/api/v1/blueprint_installs/actions/remove_blueprint_samples \
-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.blueprintInstalls.removeBlueprintSamples()era blueprint_installs remove_blueprint_samples{
"name": "era__security_access__remove_blueprint_samples",
"arguments": {}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde security_access:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 429 çok sık istek
security_access.revoke
Kişisel yetkiyi geri al — Doğrudan bir kişiye verilen erişimi geri alır.
Gereken izin security_access:manage · siler ya da geri alınamaz
https://app.getera.io/api/v1/access_grants/actions/revoke- Asıl adres:
POST /api/v1/actions/security_access.revoke
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
grant_id | uuid | evet | Hediye |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
grant_not_found | Bu yetki artık yok. |
Yayımladığı olaylar: security_access.access_revoked
Neye yazar: access_grant (delete) — Removes the grant
curl -X POST https://app.getera.io/api/v1/access_grants/actions/revoke \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"grant_id":"GRANT_ID"}'{
"ok": true,
"result": "…",
"events": [
"security_access.access_revoked"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.accessGrants.revoke({
grant_id: "GRANT_ID"
})era access_grants revoke \
--grant-id "GRANT_ID"{
"name": "era__security_access__revoke",
"arguments": {
"grant_id": "GRANT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde security_access:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 grant_not_found · 429 çok sık istek
security_access.set_capability
Yetki ver veya geri al — Bir rolün bir modülde neler yapabileceğine karar verir.
Gereken izin security_access:manage · siler ya da geri alınamaz
https://app.getera.io/api/v1/role_module_capabilities/actions/set_capability- Asıl adres:
POST /api/v1/actions/security_access.set_capability
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
role_id | uuid | evet | Rol · kimliği: role |
module_code | string | evet | Modül · en çok 41 |
capability | string | evet | Yetenek · en çok 24 |
granted | boolean | evet | Verildi |
own_records_scope | string (enum) | Erişim · Yalnızca “sadece kendi kayıtları” için anlamlıdır. · İzin verilen değerler: self_only, self_and_reports |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
system_role_protected | Sahip rolü her zaman her şeye ulaşır. |
module_not_enabled | Bu modül bu çalışma alanında açık değil. |
capability_not_declared | Bu modül bu yetkiyi sunmuyor. |
last_owner_protected | Birinin rollere erişimi kalmalı. |
Yayımladığı olaylar: security_access.capability_granted, security_access.capability_revoked
Neye yazar: role_module_capability (upsert) — Adds or removes the matrix row
curl -X POST https://app.getera.io/api/v1/role_module_capabilities/actions/set_capability \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"role_id":"ROLE_ID","module_code":"Module","capability":"Capability","granted":true}'{
"ok": true,
"result": "…",
"events": [
"security_access.capability_granted",
"security_access.capability_revoked"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.roleModuleCapabilities.setCapability({
role_id: "ROLE_ID",
module_code: "Module",
capability: "Capability",
granted: true
})era role_module_capabilities set_capability \
--role-id "ROLE_ID" \
--module-code "Module" \
--capability "Capability" \
--granted true{
"name": "era__security_access__set_capability",
"arguments": {
"role_id": "ROLE_ID",
"module_code": "Module",
"capability": "Capability",
"granted": true
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde security_access:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 system_role_protected, module_not_enabled, capability_not_declared, last_owner_protected · 429 çok sık istek
security_access.set_masked_fields
Bir kişiden alanları gizle — Satırlar görünür kalır, belirtilen alanlar gizlenir.
Gereken izin security_access:manage · siler ya da geri alınamaz
https://app.getera.io/api/v1/access_grants/actions/set_masked_fields- Asıl adres:
POST /api/v1/actions/security_access.set_masked_fields
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
grant_id | uuid | evet | Hediye |
fields | string | Gizlenecek alanlar · Virgülle ayrılmış. |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
grant_not_found | Bu yetki artık yok. |
measure_not_maskable | Rapor yetkisi yalnızca o raporun gerçekten gösterdiği bir ölçüyü gizleyebilir. |
Yayımladığı olaylar: security_access.access_granted
Neye yazar: access_grant (update) — Updates the hidden field list
curl -X POST https://app.getera.io/api/v1/access_grants/actions/set_masked_fields \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"grant_id":"GRANT_ID"}'{
"ok": true,
"result": "…",
"events": [
"security_access.access_granted"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.accessGrants.setMaskedFields({
grant_id: "GRANT_ID"
})era access_grants set_masked_fields \
--grant-id "GRANT_ID"{
"name": "era__security_access__set_masked_fields",
"arguments": {
"grant_id": "GRANT_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde security_access:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 grant_not_found, measure_not_maskable · 429 çok sık istek
security_access.set_member_role
Üyenin rolünü değiştir — Birini bu çalışma alanında başka bir role taşır.
Gereken izin security_access:manage · siler ya da geri alınamaz
https://app.getera.io/api/v1/workspace_members/actions/set_member_role- Asıl adres:
POST /api/v1/actions/security_access.set_member_role
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
user_id | uuid | evet | Üye |
role_id | uuid | evet | Rol · kimliği: role |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
cannot_change_own_role | Kendi rolünüzü değiştiremezsiniz. |
role_not_in_workspace | Bu rol başka bir çalışma alanına ait. |
not_a_member | Bu kişi bu çalışma alanının üyesi değil. |
Yayımladığı olaylar: security_access.role_changed
Neye yazar: workspace_member (update) — Points the member at the new role
curl -X POST https://app.getera.io/api/v1/workspace_members/actions/set_member_role \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"user_id":"USER_ID","role_id":"ROLE_ID"}'{
"ok": true,
"result": "…",
"events": [
"security_access.role_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workspaceMembers.setMemberRole({
user_id: "USER_ID",
role_id: "ROLE_ID"
})era workspace_members set_member_role \
--user-id "USER_ID" \
--role-id "ROLE_ID"{
"name": "era__security_access__set_member_role",
"arguments": {
"user_id": "USER_ID",
"role_id": "ROLE_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde security_access:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 cannot_change_own_role, role_not_in_workspace, not_a_member · 429 çok sık istek
security_access.set_reports_to
Üyenin kime bağlı olduğunu belirle — “Kendi kayıtları ve ekibininkiler” rolünün izlediği hiyerarşiyi kurar.
Gereken izin security_access:manage · siler ya da geri alınamaz
https://app.getera.io/api/v1/workspace_members/actions/set_reports_to- Asıl adres:
POST /api/v1/actions/security_access.set_reports_to
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
user_id | uuid | evet | Üye |
reports_to | uuid | Bağlı olduğu kişi · kimliği: app_user |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
cannot_report_to_self | Kimse kendine bağlı olamaz. |
would_create_cycle | Bu, iki kişiyi birbirine bağlı hâle getirir. |
not_a_member | İkisi de bu çalışma alanının üyesi olmalı. |
Yayımladığı olaylar: security_access.reports_to_changed
Neye yazar: workspace_member (update) — Sets the reporting line
curl -X POST https://app.getera.io/api/v1/workspace_members/actions/set_reports_to \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"user_id":"USER_ID"}'{
"ok": true,
"result": "…",
"events": [
"security_access.reports_to_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workspaceMembers.setReportsTo({
user_id: "USER_ID"
})era workspace_members set_reports_to \
--user-id "USER_ID"{
"name": "era__security_access__set_reports_to",
"arguments": {
"user_id": "USER_ID"
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde security_access:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 cannot_report_to_self, would_create_cycle, not_a_member · 429 çok sık istek
security_access.set_role_channels
Bir rolü satış kanallarıyla sınırla — Mağaza erişimini seçilen kanallarla sınırlar; hiçbir kanal seçilmezse rol hiçbir kanala erişemez.
Gereken izin security_access:manage · siler ya da geri alınamaz
https://app.getera.io/api/v1/roles/{id}/actions/set_role_channels- Asıl adres:
POST /api/v1/actions/security_access.set_role_channels
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
role_id | uuid | evet | Doldurulduğu yer: adresteki {id} · Rol · kimliği: role |
restricted | boolean | evet | Kanalları sınırla |
channel_ids | object / array | Kanallar |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
system_role_protected | Sahip rolü sınırlandırılamaz. |
channel_scope_invalid | Seçilen her kanal bu çalışma alanına ait olmalı. |
Yayımladığı olaylar: security_access.role_channels_changed
Neye yazar: role (update) — Sets the sales channel scope of this role
curl -X POST https://app.getera.io/api/v1/roles/ROLE_ID/actions/set_role_channels \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"restricted":true}'{
"ok": true,
"result": "…",
"events": [
"security_access.role_channels_changed"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.roles.setRoleChannels("ROLE_ID", {
restricted: true
})era roles set_role_channels ROLE_ID \
--restricted true{
"name": "era__security_access__set_role_channels",
"arguments": {
"role_id": "ROLE_ID",
"restricted": true
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde security_access:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 system_role_protected, channel_scope_invalid · 429 çok sık istek
security_access.toggle_feature
Modülün bir bölümünü aç veya kapat — Bir modülün tek bir bölümünü açar — randevular, grup dersleri, paketler.
Gereken izin security_access:manage · siler ya da geri alınamaz
https://app.getera.io/api/v1/workspace_modules/actions/toggle_feature- Asıl adres:
POST /api/v1/actions/security_access.toggle_feature
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
module_code | string | evet | Modül · en çok 41 |
feature | string | evet | Bölüm · en çok 41 |
enabled | boolean | evet | Etkin |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
module_not_enabled | Modülün kendisi kapalı. |
unknown_feature | Bu modülün böyle bir bölümü yok. |
Yayımladığı olaylar: security_access.feature_enabled, security_access.feature_disabled
Neye yazar: workspace_module (update) — Updates the enabled parts
curl -X POST https://app.getera.io/api/v1/workspace_modules/actions/toggle_feature \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"module_code":"Module","feature":"Part","enabled":true}'{
"ok": true,
"result": "…",
"events": [
"security_access.feature_enabled",
"security_access.feature_disabled"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workspaceModules.toggleFeature({
module_code: "Module",
feature: "Part",
enabled: true
})era workspace_modules toggle_feature \
--module-code "Module" \
--feature "Part" \
--enabled true{
"name": "era__security_access__toggle_feature",
"arguments": {
"module_code": "Module",
"feature": "Part",
"enabled": true
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde security_access:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 module_not_enabled, unknown_feature · 429 çok sık istek
security_access.toggle_module
Modülü aç veya kapat — Bu çalışma alanına bir modül ekler ya da verisini silmeden kaldırır.
Gereken izin security_access:manage · siler ya da geri alınamaz
https://app.getera.io/api/v1/workspace_modules/actions/toggle_module- Asıl adres:
POST /api/v1/actions/security_access.toggle_module
Girdi
| Alan | Tür | Zorunlu | Açıklama |
|---|---|---|---|
module_code | string | evet | Modül · en çok 41 |
enabled | boolean | evet | Etkin |
with_dependencies | boolean | Gerekenleri de kur · Önce eksik her bağımlılığı aynı işlemde açar. |
Ön koşullar
Koşul tutmazsa işlem 409 ve şu kodlardan biriyle reddedilir:
| Kod | Ne zaman reddedilir |
|---|---|
shell_module | Bu, temel sistemin bir parçası ve her zaman açık. |
missing_dependency | Bu modül, kapalı olan başka bir modüle ihtiyaç duyuyor. |
dependents_enabled | Açık olan başka modüller bu modüle bağlı. |
module_limit_reached | Çalışma alanının planında bu modül ve bağlı olduğu modüller için yer olmalı. |
Yayımladığı olaylar: security_access.module_enabled, security_access.module_disabled
Neye yazar: workspace_module (upsert) — Switches the module on or off
curl -X POST https://app.getera.io/api/v1/workspace_modules/actions/toggle_module \
-H "Authorization: Bearer $ERA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"module_code":"Module","enabled":true}'{
"ok": true,
"result": "…",
"events": [
"security_access.module_enabled",
"security_access.module_disabled"
]
}import { createEra } from "@getera/sdk"
const era = createEra({ apiKey: process.env.ERA_API_KEY })
const res = await era.workspaceModules.toggleModule({
module_code: "Module",
enabled: true
})era workspace_modules toggle_module \
--module-code "Module" \
--enabled true{
"name": "era__security_access__toggle_module",
"arguments": {
"module_code": "Module",
"enabled": true
}
}Hatalar: 401 kimlik bilgisi yok ya da süresi dolmuş · 403 kimlik bilgisinde security_access:manage izni yok · 404 kayıt ya da modül erişim dışında · 422 geçersiz girdi (problems[]) · 409 shell_module, missing_dependency, dependents_enabled, module_limit_reached · 429 çok sık istek
Veri modelleri
AccessGrant
Tablo access_grant · Kaynak access_grants
GET /api/v1/access_grantsGET /api/v1/access_grants/{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 | ||
subject_type | string · text | module, report, view | ||
subject_key | string · text | |||
capability | string · text | |||
row_scope | string · text | all, own_records, own_and_reports | ||
masked_fields | string[] · text[] | |||
granted_by | string (uuid) · uuid | evet | app_user | |
expires_at | string (date-time) · timestamptz | evet | ||
created_at | string (date-time) · timestamptz | |||
updated_at | string (date-time) · timestamptz | |||
channel_ids | string[] · uuid[] | evet |
Birincil anahtar: id
Tekil: workspace_id, user_id, subject_type, subject_key, capability
BlueprintInstall
Tablo blueprint_install · Kaynak blueprint_installs
GET /api/v1/blueprint_installsGET /api/v1/blueprint_installs/{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 | ||
blueprint_code | string · text | |||
version | integer · int4 | |||
modules | string[] · text[] | |||
applied_by_user_id | string (uuid) · uuid | evet | app_user | |
first_applied_at | string (date-time) · timestamptz | |||
applied_at | string (date-time) · timestamptz | |||
apply_count | integer · int4 | |||
choices | object · jsonb | evet | ||
sample_records | object · jsonb |
Birincil anahtar: id
Tekil: workspace_id, blueprint_code
Denetimler:
CHECK ((apply_count > 0))CHECK ((blueprint_code ~ '^[a-z][a-z0-9_]{1,40}$'::text))CHECK (((choices IS NULL) OR (jsonb_typeof(choices) = 'object'::text)))CHECK ((jsonb_typeof(sample_records) = 'array'::text))CHECK ((version > 0))
RoleModuleCapability
Tablo role_module_capability · Kaynak role_module_capabilities
GET /api/v1/role_module_capabilitiesGET /api/v1/role_module_capabilities/{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 | ||
role_id | string (uuid) · uuid | role | ||
module_code | string · text | module | ||
capability | string · text | read, write, delete, manage, approve, export, comment, handle, import, impersonate, own_records_only, computer_use, computer_control | ||
own_records_scope | string · text | self_only, self_and_reports |
Birincil anahtar: id
Tekil: role_id, module_code, capability
Denetimler:
CHECK (((capability = 'own_records_only'::text) OR (own_records_scope = 'self_only'::text)))
Role
Tablo role · Kaynak roles
GET /api/v1/rolesGET /api/v1/roles/{id}POST /api/v1/roles→security_access.create_role
| 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 | ||
code | string · text | |||
label | string · text | |||
description | string · text | evet | ||
is_system | boolean · bool | |||
created_at | string (date-time) · timestamptz | |||
sort_order | integer · int4 | |||
updated_at | string (date-time) · timestamptz | |||
channel_ids | string[] · uuid[] | evet |
Birincil anahtar: id
Tekil: workspace_id, code
Denetimler:
CHECK ((code ~ '^[a-z][a-z0-9_]{1,40}$'::text))
WorkspaceMember
Tablo workspace_member · Kaynak workspace_members
GET /api/v1/workspace_membersGET /api/v1/workspace_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 | ||
user_id | string (uuid) · uuid | app_user | ||
role_id | string (uuid) · uuid | role | ||
created_at | string (date-time) · timestamptz | |||
status | string · text | active, suspended | ||
updated_at | string (date-time) · timestamptz | |||
reports_to | string (uuid) · uuid | evet | app_user | |
color | string · text | evet |
Birincil anahtar: id
Tekil: workspace_id, user_id
Denetimler:
CHECK (((color IS NULL) OR (color ~ '^#[0-9A-Fa-f]{6}$'::text)))CHECK (((reports_to IS NULL) OR (reports_to <> user_id)))
WorkspaceModule
Tablo workspace_module · Kaynak workspace_modules
GET /api/v1/workspace_modulesGET /api/v1/workspace_modules/{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 | ||
module_code | string · text | module | ||
enabled | boolean · bool | |||
sidebar_group | string · text | evet | ||
sidebar_order | integer · int4 | |||
enabled_at | string (date-time) · timestamptz | |||
enabled_features | string[] · text[] | |||
updated_at | string (date-time) · timestamptz |
Birincil anahtar: id
Tekil: workspace_id, module_code
Olaylar
İş akışları ve webhook'lar bu olaylara tepki verir.
| Olay | Ne olur | Taşıdığı alanlar |
|---|---|---|
security_access.access_granted | Bir kişiye doğrudan erişim verildi. | user_id, subject_type, subject_key |
security_access.access_revoked | Kişisel bir erişim izni geri alındı. | grant_id |
security_access.blueprint_applied | Bir sektör planı yüklendi ya da yeniden uygulandı. | blueprint_code, version, installed, first |
security_access.capability_granted | Bir role bir yetenek verildi. | role_id, module_code, capability |
security_access.capability_revoked | Bir rolden bir yetenek alındı. | role_id, module_code, capability |
security_access.feature_disabled | Bir modülün bir parçası kapatıldı. | module_code, feature |
security_access.feature_enabled | Bir modülün bir parçası açıldı. | module_code, feature |
security_access.module_disabled | Bir modül kapatıldı. | module_code |
security_access.module_enabled | Çalışma alanı için bir modül açıldı. | module_code |
security_access.reports_to_changed | Bir raporlama hattı değişti. | user_id, reports_to |
security_access.role_changed | Bir üyenin rolü değiştirildi. | user_id, role_id |
security_access.role_channels_changed | Bir rolün satış kanalı kapsamı değişti. | role_id, channel_ids |
security_access.role_created | Bir çalışma alanı rolü oluşturuldu. | role_id, code |
security_access.role_deleted | Bir çalışma alanı rolü silindi. | role_id, code |
security_access.shop_opened | Mağaza tek adımda açıldı: mağaza modülleri açık, bir satış kanalı açık. | channelId, name, currency, installed |