Custom Policies

This page was machine-translated. The Japanese page is the official version.

Custom policies are created by users to configure operation permissions as needed.

Create a custom policy

  1. On the Access Management page, open the Policies tab and click Add Policy. Policy list
  2. Enter a policy name, configure its permissions, and click Save. Create policy
  3. The new policy appears in the policy list. Policy list with the new policy

Specification

Policy format

Custom policies are written in JSON using the following format:

{
  "version": 1,
  "statements": [
    {
      "effect": "allow" | "deny",
      "actions": ["*" | "specific action", ...],
      "resources": ["*" | "actcast:{resource_type}:{resource_id}", ...]
    },
    ...
  ]
}

version

Specifies the Actcast Policy version. Currently, only 1 is valid.

effect

Set effect to allow or deny. A deny always takes precedence over an allow. Actions not covered by any statement are denied by default.

actions

Specifies the actions to allow or deny. Use * for all actions, or specify an action from the configurable actions and resources list.

resources

Specifies the target resources. Use * for all resources, or specify a resource from the configurable actions and resources list in the format actcast:{resource_type}:{resource_id}.

For resource_id, you can use * or a specific ID. For example, all of the following are valid resources:

  • *
  • actcast:act:*
  • actcast:act:123

Configurable actions and resources

Allowed operation Action Resource Notes
Device
List devices list:device actcast:device:* Only this resource is supported.
List device tags list:device_tag actcast:device:* Only this resource is supported.
Register device create:device actcast:device:* Only this resource is supported.
Take photo create:device_photo actcast:device:{resource_id}
Execute Custom Command create:custom_command actcast:device:{resource_id}
Blink device LED create:blink_led_command actcast:device:{resource_id}
Run firmware update create:firmware_update_command actcast:device:{resource_id}
Reboot device create:reboot_command actcast:device:{resource_id}
Shut down device create:shutdown_command actcast:device:{resource_id}
Run major firmware update create:major_firmware_update_command actcast:device:{resource_id}
Update device status create:device_status_command actcast:device:{resource_id}
View device details read:device actcast:device:{resource_id}
View photos read:device_photo actcast:device:{resource_id}
Get Custom Command results read:custom_command actcast:device:{resource_id}
View device logs read:device_log actcast:device:{resource_id}
View event logs read:event_log actcast:device:{resource_id}
View Act logs read:act_log actcast:device:{resource_id}
View Acts on devices read:device_act actcast:device:{resource_id}
Change device name update:device_name actcast:device:{resource_id}
Change device hostname update:device_hostname actcast:device:{resource_id}
Change device Wi-Fi settings update:device_wifi_setting actcast:device:{resource_id}
Change firmware update prevention setting update:device_prevent_update_setting actcast:device:{resource_id}
Change firmware configuration update:device_firmware_config actcast:device:{resource_id}
Change automatic reboot setting update:device_auto_reboot_setting actcast:device:{resource_id}
Change mDNS setting update:device_mdns_setting actcast:device:{resource_id}
Change developer mode setting update:device_dev_mode actcast:device:{resource_id}
Update device tags update:device_tag actcast:device:{resource_id}
Update Acts on devices update:device_act actcast:device:{resource_id}
Unregister device delete:device actcast:device:{resource_id}
Uninstall Acts from devices delete:device_act actcast:device:{resource_id}
App
List apps list:app actcast:app:* Only this resource is supported.
Create app create:app actcast:app:* Only this resource is supported.
View app details read:app actcast:app:{resource_id}
Update app update:app actcast:app:{resource_id}
Delete app delete:app actcast:app:{resource_id}
Act
List Acts list:act actcast:act:* Only this resource is supported.
Create Act create:act actcast:act:* Only this resource is supported.
View Act details read:act actcast:act:{resource_id}
Update Act update:act actcast:act:{resource_id}
Delete Act delete:act actcast:act:{resource_id}
Cast
List Casts list:cast actcast:act:{resource_id}
Create Cast create:cast actcast:act:{resource_id}
View Cast details read:cast actcast:act:{resource_id}
Update Cast update:cast actcast:act:{resource_id}
Delete Cast delete:cast actcast:act:{resource_id}
SystemCast
List System Casts list:system_cast actcast:system_cast:* Only this resource is supported.
Create System Cast create:system_cast actcast:system_cast:* Only this resource is supported.
View System Cast details read:system_cast actcast:system_cast:{resource_id}
Update System Cast update:system_cast actcast:system_cast:{resource_id}
Delete System Cast delete:system_cast actcast:system_cast:{resource_id}
Group
View group details read:group actcast:group:{resource_id}
Update group details update:group actcast:group:{resource_id}
GroupMember
List group members list:group_member actcast:group_member:* Only this resource is supported.
View group member details read:group_member actcast:group_member:{resource_id}
Media
List media list:media actcast:media:* Only this resource is supported.
Create media create:media actcast:media:* Only this resource is supported.
Delete media delete:media actcast:media:{resource_id}
ApiToken
List API Tokens list:api_token actcast:api_token:* Only this resource is supported.
Create API Token create:api_token actcast:api_token:* Only this resource is supported.
View API Token details read:api_token actcast:api_token:{resource_id}
Delete API Token delete:api_token actcast:api_token:{resource_id}
Edit API Token description update:api_token actcast:api_token:{resource_id} Only the token creator can edit it.
DeveloperToken
List Developer Tokens list:developer_token actcast:developer_token:* Only this resource is supported.
Create Developer Token create:developer_token actcast:developer_token:* Only this resource is supported.
Delete Developer Token delete:developer_token actcast:developer_token:{resource_id}

Behavior when there are multiple statements

When a policy contains multiple statements, access is evaluated according to the following rules.

When allow and deny are both present

deny always takes precedence over allow. In the following example, delete:cast is denied for all Cast resources:

{
  "version": 1,
  "statements": [
    { "effect": "allow", "actions": ["*"], "resources": ["*"] },
    { "effect": "deny", "actions": ["delete:cast"], "resources": ["*"] }
  ]
}

When multiple statements contain the same action

If even one statement allows an action, that action is allowed for the resource. In the following example, read:act is allowed for all Act resources:

{
  "version": 1,
  "statements": [
    { "effect": "allow", "actions": ["read:act"], "resources": ["*"] },
    { "effect": "allow", "actions": ["read:act"], "resources": ["actcast:act:123"] }
  ]
}
Last updated on