{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/eagle-eye-networks/main/json-schema/eagle-eye-networks-api-role-schema.json",
  "title": "ApiRole",
  "x-generated": "2026-10-14",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/eagle-eye-networks-user-accounts-openapi.yml#/components/schemas/ApiRole",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "The ID of the role."
    },
    "assignable": {
      "x-jsoninclude-nonnull-annotation": true,
      "type": "boolean",
      "description": "True if the user doing the request can assign this role to other users, false otherwise."
    },
    "userCount": {
      "x-jsoninclude-nonnull-annotation": true,
      "type": "integer",
      "description": "Count of users that are associated with this role in the account"
    },
    "name": {
      "type": "string",
      "description": "The name of the role.",
      "minLength": 1,
      "maxLength": 126
    },
    "notes": {
      "x-jsoninclude-nonnull-annotation": true,
      "type": "string",
      "description": "The notes of the role.",
      "maxLength": 5000
    },
    "default": {
      "type": "boolean",
      "description": "True if the role is one of the default roles for the account, false otherwise."
    },
    "permissions": {
      "$ref": "#/$defs/Permissions"
    }
  },
  "required": [
    "id",
    "name",
    "default"
  ],
  "$defs": {
    "AdminPermission": {
      "properties": {
        "administrator": {
          "type": "boolean",
          "x-jsoninclude-nonnull-annotation": true,
          "description": "All permissions are enabled - create, delete, edit, and view access to all accounts and user settings, bridges, cameras, layouts, audit log and archive.\n"
        }
      }
    },
    "Permissions": {
      "allOf": [
        {
          "$ref": "#/$defs/AdminPermission"
        },
        {
          "type": "object",
          "properties": {
            "editAccounts": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Edit Control, Days, Security, Camera, Alerts, Notifications, Privacy, Sharing, Responders, Default retentions, and camera resolution settings.\n"
            },
            "layoutAdministrator": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Create, delete and edit any accessible layouts. All user layouts are visible to admin users.\n"
            },
            "createLayouts": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Ability to create layouts and edit the layouts created. This does not grant permission to edit layouts created by other users.\n"
            },
            "editNoBillingDeviceSettings": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Edit Camera Settings except for Cloud Retention and Full Video Resolution. Cannot add or delete cameras. Edit existing Analytics. Cannot add or delete Analytics.\n"
            },
            "turnCamerasOnOff": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Turn Cameras on/off. Cameras off cannot be recorded."
            },
            "editMotionAreas": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Edit Motion Settings. Set object size and sensitivity, add/delete regions, add/delete alerts for regions. Edit existing Analytics. Set object size and sensitivity, add/delete alerts.\n"
            },
            "editAllCameraSettings": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Editing all Camera Settings. Cannot add or delete cameras."
            },
            "editUsers": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Create, delete and edit non-admin users in an end user account."
            },
            "upgradeEdition": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Upgrade current edition subscription to a higher level edition."
            },
            "addEditBridgesCameras": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Create, delete, edit, and view Bridges and Cameras. This is the only permission for a non-admin to be able to add and view bridges in an end user account.\n"
            },
            "editSharing": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Edit Sharing and Responders settings."
            },
            "controlPTZ": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Control Pan, Tilt, Zoom, & recall stations while viewing a preview or live video of PTZ cameras.\n"
            },
            "editPTZStations": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Edit PTZ Settings. Set PTZ mode and create, delete, edit stations.\n"
            },
            "addEditSpeakers": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Add speakers, edit speaker settings, delete speakers."
            },
            "editSpeakers": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Edit speaker settings. Cannot add or delete speakers."
            },
            "viewLiveVideo": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "View full resolution video live."
            },
            "viewHistoricVideo": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "View history browser and historic video."
            },
            "downloadVideo": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Download preview and full resolution video."
            },
            "viewPreviewVideo": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "View preview images from cameras."
            },
            "talkDown": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Allows the users to initiate Talk Down to the camera field(s) of view."
            },
            "editMap": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Add and edit floors, lines, shapes, and cameras on the map."
            },
            "viewAuditLog": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "View Audit Log and download reports from it."
            },
            "viewArchive": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "View all files and folders within the Archive."
            },
            "editArchive": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Save videos to Archive - delete, edit, and view files and folders within the Archive."
            },
            "viewPlugins": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "View all Plugins."
            },
            "editPlugins": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Add and remove plugins."
            },
            "exportUsers": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Export a list of account users in .csv format."
            },
            "viewVSP": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "User access to view vehicle data, search vehicle across camera & location, set rules, and alert."
            },
            "editResellerUsers": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Create, delete and edit reseller user who is not an Admin."
            },
            "editAdminUsers": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Create, delete and edit admin and non-admin users in an end user account. Give access to bridges, cameras, and layouts. Create new end user accounts and give access to them.\n"
            },
            "viewContract": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "View recordings, search, and create new recordings."
            },
            "addRemovePayment": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Add and remove payment methods."
            },
            "viewInvoice": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "View and download invoices."
            },
            "placeOrders": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Add products to the shopping cart and place orders."
            },
            "viewShipments": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "View the status of shipments."
            },
            "viewPricingInformation": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "View pricing information."
            },
            "viewResellerProgramInformation": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "View Marketing's reseller program information."
            },
            "viewVSPRule": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "View VSP rules."
            },
            "editVSPRule": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Edit VSP rules."
            },
            "viewVehicleList": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "View vehicle lists."
            },
            "editVehicleList": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Edit vehicle lists."
            },
            "viewAutomations": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "View automation alerts, rules, and actions."
            },
            "editAutomations": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Edit automation alerts, rules, and actions."
            },
            "editAlertManagerRulesAndActions": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "Edit Automations rules and actions."
            },
            "viewAlertManagerRulesAndActions": {
              "type": "boolean",
              "x-jsoninclude-nonnull-annotation": true,
              "description": "View Alert Manager rules and actions."
            }
          }
        }
      ]
    }
  }
}