ServiceUserRole

ServiceUserRole adalah kumpulan izin yang diberikan kepada end-user yang mendaftar ke produk, yaitu ServiceUser. Resource ini memuat apa yang dapat dilakukan (membaca, membuat, mengedit, menghapus, mempublikasikan) terhadap Content Type, Content, dan Media, apakah dapat menjalankan Script, beserta filter yang mempersempit cakupan, misalnya hanya Content Type tertentu atau hanya yang dibuat sendiri. Izin ini berlaku pada ACMA/ACDA yang dipanggil oleh ServiceUser.

ServiceUserRole dipakai di posisi yang berbeda dari SpaceRole. SpaceRole adalah kumpulan izin untuk Weegloo User (pengguna studio konten) dan berlaku pada CMA/CDA, sedangkan ServiceUserRole adalah kumpulan izin untuk ServiceUser yang mendaftar ke produk dan berlaku pada ACMA/ACDA. ServiceUserRole yang dibuat dengan sendirinya tidak berlaku bagi siapa pun. Anda menerapkannya dengan menetapkannya pada peran default (defaultRole) dari ServiceLogin atau membindingnya ke roleOverride dari ServiceUser.

Struktur resource

Berikut adalah respons single-read dari ServiceUserRole "Pembeli". Selain sys (properti sistem), resource ini memiliki properti badan yang menentukan izin: contentType, content, media, dan script.

{
  "sys": {
    "id": "3trmXRLXeZN2RTHvVj3hFDN5546vbp",
    "type": "ServiceUserRole",
    "space": { "sys": { "id": "HnQ32YiH", "type": "Refer", "targetType": "Space" } },
    "createdBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
    "createdAt": "2026-06-18T12:40:36.944Z",
    "updatedBy": { "sys": { "id": "3p4tcFbQRwz503VXdtHXNI5dZH5TVB", "type": "Refer", "targetType": "User" } },
    "updatedAt": "2026-06-18T12:40:36.944Z",
    "version": 1
  },
  "name": "Pembeli",
  "description": "Anggota yang dapat membaca produk yang dipublikasikan",
  "contentType": { "All": { "Allow": [] } },
  "content": {
    "Read": {
      "Allow": [
        { "contentType": { "sys": { "id": "3trmXRLdJF4GBlAjtcuoZ7Pnxj8dlA", "type": "Refer", "targetType": "ContentType" } } }
      ]
    }
  },
  "media": { "All": { "Allow": [] } },
  "script": {}
}

Key utama:

  • contentType: peta izin terhadap Content Type itu sendiri (skema). Menetapkan, per aksi, izin untuk membaca, membuat, mengubah, menghapus, dan mempublikasikan Content Type.
  • content: peta izin terhadap Content (data konten). Contoh di atas membatasi agar hanya Content dari Content Type tertentu yang dapat dibaca.
  • media: peta izin terhadap Media (file dan gambar).
  • script: peta izin terhadap Script (endpoint backend deklaratif). ServiceUser hanya menjalankan (Execute) Script, sehingga biasanya hanya Execute yang diatur.

Berbeda dari SpaceRole, ServiceUserRole tidak memiliki settings yang memuat akses ke pengaturan Space. Sebab ServiceUser tidak menangani pengaturan Space. Juga tidak ada sys.isLocked yang menandai apakah resource ini bawaan.

Properti sistem (sys)

Setiap ServiceUserRole memuat properti sistem umum dalam objek sys. space, createdBy, dan updatedBy masuk dalam bentuk Refer ({ "sys": { "id", "type": "Refer", "targetType" } }).

PropertiTipeDeskripsi
idstringPengenal unik resource.
typestringJenis resource. Untuk ServiceUserRole selalu "ServiceUserRole".
spaceRefer<Space>Space tempat ServiceUserRole ini berada.
createdByRefer<User>Pengguna yang membuat.
createdAtstring (date-time)Waktu pembuatan.
updatedByRefer<User>Pengguna yang terakhir mengubah.
updatedAtstring (date-time)Waktu perubahan terakhir.
versioninteger (≥1)Versi resource. Naik 1 setiap kali diubah.

ServiceUserRole adalah resource pengaturan yang tidak memiliki konsep publikasi. Karena itu, berbeda dari Content dan Media, sys tidak memiliki publish, archive, atau status, dan hanya memiliki version. version naik setiap kali ServiceUserRole diubah. Berbeda dari SpaceRole, sys.isLocked juga tidak ada.

Peta izin: contentType, content, media

contentType, content, dan media masing-masing adalah peta yang memiliki aksi sebagai key. Aksi yang dapat dipakai adalah Create (membuat), Read (membaca), Edit (mengedit), Delete (menghapus), Publish (mempublikasikan), Unpublish (membatalkan publikasi), Archive (mengarsipkan), dan Unarchive (membatalkan pengarsipan), serta ada All yang menunjuk semua aksi sekaligus. Save bermakna sama dengan Edit. Nilai dari setiap aksi adalah objek yang memuat array aturan Allow (mengizinkan) dan Deny (menolak). Struktur peta izin ini sama dengan SpaceRole.

"content": {
  "Read":   { "Allow": [ /* aturan */ ], "Deny": [ /* aturan */ ] },
  "Edit":   { "Allow": [ /* aturan */ ] }
}

Setiap objek aturan (rule) memiliki filter opsional yang mempersempit cakupan izin.

  • self: membatasi target penerapan aturan tersebut pada resource itu sendiri saja. Pada peta contentType ia berarti satu Content Type tertentu, dan pada peta script berarti satu Script tertentu.
  • contentType: membatasi pada Content Type tempat Content itu berada. Diisi dengan Refer yang menunjuk ke Content Type.
  • createdBy: membatasi hanya pada resource yang dibuat oleh pengguna tertentu. Jika sys.id diisi dengan id tertentu, maka hanya yang dibuat orang itu; jika diisi nilai cadangan :self, maka dibatasi hanya pada "yang dibuat oleh ServiceUser yang sedang memanggil".
  • tag: membatasi hanya pada resource yang diberi Tag tertentu.

Filter mana yang berlaku pada peta izin mana sama seperti pada SpaceRole (peta contentType menentukan sasarannya dengan self, dan peta content dengan contentType), dan memasukkan filter yang tidak sesuai membuat penyimpanan role ditolak. Tabel per peta ada di Peta izin pada SpaceRole.

Saat memasang filter createdBy (termasuk :self) di ACDA, publishWithAuthor pada Content Type sasaran harus true. ACDA menilai filter ini dengan sys.createdBy dari snapshot publikasi, dan jika publishWithAuthor bernilai bawaan false maka snapshot tidak memuat penulis sehingga aturan Allow tidak mencocokkan apa pun (anggota menerima resource miliknya sendiri sebagai hasil kosong), dan aturan Deny tidak menyaring siapa pun. Sebaliknya ACMA (pengelolaan) menilai dengan sys.createdBy dari draf sehingga tidak bergantung pada pengaturan ini, jadi aturan yang sama bisa berfungsi di ACMA tetapi meleset di ACDA. publishWithAuthor harus diaktifkan sebelum anggota mengunggah tulisannya dan tidak berlaku surut. Lihat penjelasan publishWithAuthor pada Content Type.

Array Allow yang kosong [] berarti mengizinkan aksi pada seluruh jenis tersebut. Karena filternya kosong, tidak ada yang disaring, sehingga aksi itu terbuka untuk semua resource.

Berbeda dari SpaceRole, ServiceUserRole tidak memiliki settings. Peta izin ada empat: contentType, content, media, dan script. Untuk daftar aksi, key filter, makna :self, serta cara menyusun peta izin, silakan rujuk juga penjelasan SpaceRole yang menggunakan struktur yang sama. Contoh penggunaan :self untuk mempersempit agar hanya dapat mengedit Content yang dibuat sendiri ditampilkan pada blok perubahan di bawah.

Daftar aksi (Create, Read, Edit, Save, Delete, Publish, Unpublish, Archive, Unarchive, All), key filter (self, contentType, createdBy, tag), dan makna :self mengacu pada definisi aturan izin di SpaceRole. :self pada ServiceUserRole diuraikan menjadi hanya yang dibuat oleh ServiceUser saat ini.

script (Izin Script)

script adalah peta izin terhadap Script, dengan struktur yang sama seperti content dan media. Namun, satu-satunya hal yang dapat dilakukan ServiceUser terhadap Script adalah menjalankannya (pembuatan, yaitu membuat/mengedit/menghapus, hanya untuk Weegloo User di CMA). Karena itu, satu-satunya aksi yang secara nyata dipakai dalam script pada ServiceUserRole adalah Execute.

Agar anggota terdaftar dapat menjalankan Script, tuliskan seperti ini:

"script": {
  "Execute": { "Allow": [] }
}

Filter aturan yang dapat dipakai ada dua: self (satu Script tertentu) dan createdBy. contentType dan tag adalah sumbu yang tidak melekat pada Script, sehingga jika dimasukkan, penyimpanan role ditolak. Untuk mengizinkan anggota menjalankan hanya satu Script tertentu, letakkan aturan self yang menunjuk ke Script itu pada Allow milik Execute.

"script": {
  "Execute": {
    "Allow": [
      { "self": { "sys": { "id": "3trmXRMZcTAjDnphewjj1AaxYcaxlK", "type": "Refer", "targetType": "Script" } } }
    ]
  }
}

Struktur Script itu sendiri beserta endpoint eksekusinya dibahas di Resource dan endpoint Script, sedangkan daftar aksi lengkapnya dibahas di izin script pada SpaceRole.

Error

Berikut adalah kode yang muncul saat Anda menangani ServiceUserRole. Untuk kode yang berlaku umum pada semua resource, lihat Error umum.

KodeKondisi
WGL400020Anda memasukkan filter yang tidak dapat dipakai pada suatu peta izin sehingga penyimpanan ServiceUserRole ditolak. Memasukkan contentType atau tag pada peta script termasuk kasus ini.

API

Base URL untuk semua endpoint di bawah adalah https://cma.weegloo.com/v1, dan header Authorization memerlukan Bearer token yang mengautentikasi ke CMA. Untuk perubahan peran (PUT, PATCH), Anda harus turut mengirim header X-Weegloo-Version (sys.version resource saat ini) demi kontrol konkurensi optimistis. Pembuatan dan penghapusan tidak memerlukan header ini.

  • ServiceUser: anggota terdaftar yang menerima peran ini (roleOverride).
  • ServiceLogin: menetapkan ServiceUserRole sebagai peran default (defaultRole).
  • SpaceRole: kumpulan izin untuk Weegloo User (struktur peta izin yang sama).