For the complete documentation index, see llms.txt. This page is also available as Markdown.

Get Permission Catalog

Get Permission Catalog using the granular CAD v2 permissions API.

GET https://api.sonorancad.com/v2/general/permissions/catalog

Authenticate with your community API key using Authorization: Bearer YOUR_API_KEY. All SDK examples use the existing authenticated request and rate-limit handling.

Return the community-specific catalog of available, case-sensitive grant IDs and the legacy flag conversion map. Fetch this catalog before assigning permissions and refresh it when record templates change.

Global permissions use global.<fieldName>. Record permissions use record.<templateId>.<action>, with actions read, create, edit.own, edit.any, delete.own, delete.any, supervise, and, on backends supporting limited editing, edit.selected. Template IDs belong to the current community; do not copy them from another community or hardcode the sample ID below.

legacyGrants maps uppercase legacy flags (such as POLICE) to the grant arrays produced by CAD's migration rules. The example response is an excerpt; actual catalogs and mappings contain all applicable entries. Use this map to migrate an existing role configuration, then manage explicit grant lists with Replace Account Permissions.

Editing grant discovery

Use record.<templateId>.edit.selected only when returned by this community's catalog. The grant permits editing opted-in fields (editableByOthers: true) on other accounts' records; it does not grant own-record editing. edit.any permits full editing, including owned records, without field opt-in on this backend version. edit.own permits full editing of owned records. Supervisor-only fields additionally require supervise, and read-only fields remain locked for account editing.

There is no permission-document version or endpoint change: version remains 2. Existing grants remain unchanged and the new grant is not automatically assigned. The SDKs use string grant IDs and do not need new methods. Refresh the catalog when permission capabilities or templates change. Community API-key record operations retain their existing service authority; account grant changes do not narrow those credentials.

See the account permission guide for rollout availability and examples.

Example Request

-- luarocks install sonoran.lua
-- For SonoranCADFiveM in-game usage, see the SonoranCADFiveM tab for the export-based client.
local Sonoran = require("sonoran")

local sonoran = Sonoran.createClient({
  product = Sonoran.productEnums.CAD,
  communityId = "YOUR_COMMUNITY_ID",
  apiKey = "YOUR_API_KEY",
  defaultServerId = 1
})

local response = sonoran.cad:getPermissionCatalogV2()

-- Inspect response.success, response.data, or response.reason as needed.
print(response.success)

Use this tab only when calling the v2 API from the server side of an in-game FiveM resource.

  • Sonoran.lua and Sonoran.js: use the sonorancad export to get the ready CAD client.

  • Sonoran.Net: FiveM exports do not return a .NET client. Read the Sonoran CAD convars and create a fresh client.

  • Sonoran.py: FiveM does not run Python resources; use the Python tab for external integrations.

The API key is stored in sonoran_apiKey as a protected FiveM convar. FiveM restricts a convar after add_convar_permission is configured, so only explicitly permitted resources can read it. Grant another resource access with add_convar_permission your-resource-name read sonoran_apiKey. If you change the API key in config.json, fully restart the sonorancad resource before reading the updated convar value.

Sonoran.lua

local cad = exports["sonorancad"]:getCadClient()

Sonoran.js

const cad = exports["sonorancad"].getCadClient();

Sonoran.Net

// dotnet add package Sonoran.Net
using CitizenFX.Core.Native;
using Sonoran;

var communityId = API.GetConvar("sonoran_communityID", "");
var apiKey = API.GetConvar("sonoran_apiKey", "");
var serverIdRaw = API.GetConvar("sonoran_serverId", "1");
var serverId = int.TryParse(serverIdRaw, out var parsedServerId) ? parsedServerId : 1;

using var sonoran = new SonoranClient(new SonoranClientOptions
{
    product = SonoranProduct.CAD,
    communityId = communityId,
    apiKey = apiKey,
    defaultServerId = serverId
});

After getting the Lua export client:

After getting the JavaScript export client:

After constructing the .NET client from protected convars:

Import this YAML into Postman with Import -> Raw text.

Response

Last updated

Was this helpful?