AppOmni Developer Platform API

The AppOmni Developer Platform (AODP) lets you define custom monitored service types for proprietary or unsupported applications — declaring their settings, permissions and scopes — and push events into AppOmni through the platform ingest endpoint.

Operations 24

GET /api/v1/custom/custommonitoredservicetype/{cmst_id}/settings/ Settings - List all modeling data #
POST /api/v1/custom/custommonitoredservicetype/{cmst_id}/settings/ Settings - Add single modeling data #
PATCH /api/v1/custom/custommonitoredservicetype/{cmst_id}/settings/ Settings - Update modeling data #
DELETE /api/v1/custom/custommonitoredservicetype/{cmst_id}/settings/ Settings - Delete multiple modeling data #
POST /api/v1/custom/custommonitoredservicetype/{cmst_id}/settings/bulk_create/ Settings - Add multiple modeling data #
PUT /api/v1/custom/custommonitoredservicetype/{cmst_id}/settings/bulk_create/ Settings - Replace all modeling data #
GET /api/v1/custom/custommonitoredservicetype/{cmst_id}/permissions/ Permissions - List all modeling data #
POST /api/v1/custom/custommonitoredservicetype/{cmst_id}/permissions/ Permissions - Add single modeling data #
PATCH /api/v1/custom/custommonitoredservicetype/{cmst_id}/permissions/ Permissions - Update modeling data #
DELETE /api/v1/custom/custommonitoredservicetype/{cmst_id}/permissions/ Permissions - Delete multiple modeling data #
POST /api/v1/custom/custommonitoredservicetype/{cmst_id}/permissions/bulk_create/ Permissions - Add multiple modeling data #
PUT /api/v1/custom/custommonitoredservicetype/{cmst_id}/permissions/bulk_create/ Permissions - Replace all modeling data #
GET /api/v1/custom/custommonitoredservicetype/{cmst_id}/scopes/ Scopes - List all modeling data #
POST /api/v1/custom/custommonitoredservicetype/{cmst_id}/scopes/ Scopes - Add single modeling data #
PATCH /api/v1/custom/custommonitoredservicetype/{cmst_id}/scopes/ Scopes - Update modeling data #
DELETE /api/v1/custom/custommonitoredservicetype/{cmst_id}/scopes/ Scopes - Delete multiple modeling data #
POST /api/v1/custom/custommonitoredservicetype/{cmst_id}/scopes/bulk_create/ Scopes - Add multiple modeling data #
PUT /api/v1/custom/custommonitoredservicetype/{cmst_id}/scopes/bulk_create/ Scopes - Replace all modeling data #
POST /platform/ingest/v2/ingest/ Ingest - Third Party Apps #
POST /api/v1/custom/datajob/status/ Job Status #
POST /api/v1/custom/custommonitoredservicetype/ Create a custom monitored service type #
POST /api/v1/custom/custommonitoredservicetype/{cmst_id}/upload_logo/ Upload a logo for a custom monitored service type #
PATCH /api/v1/custom/custommonitoredservicetype/{cmst_id}/ Update a custom monitored service type #
GET /api/v1/custom/custommonitoredservicetype/{cmst_id}/ Get custom monitored service type details #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/appomni-developer-platform-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

appomni-developer-platform-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: AppOmni Developer Platform API
  description: 'The AppOmni Developer Platform (AODP): custom monitored service types, their settings,
    permissions and scopes, and the event ingest endpoint.


    Derived faithfully from the AppOmni public Postman collection published by AppOmni at https://api.appomni.com/
    — every path, method, parameter, request body and example response below is taken verbatim from that
    collection. No operation was invented.'
  version: 1.0.0
  contact:
    name: AppOmni
    url: https://appomni.com/support/
  license:
    name: Proprietary
    url: https://appomni.com/terms-of-service/
  x-generated-from: AppOmni public Postman collection (publishedId 2sBXc7Mjib, published 2026-02-04)
  x-generated-source: https://api.appomni.com/api/collections/45135595/2sBXc7Mjib?segregateAuth=true&versionTag=latest
  x-generated-method: derived
  x-generated-date: '2026-09-04'
servers:
- url: https://{instance}.appomni.com
  description: AppOmni tenant. Replace {instance} with your AppOmni subdomain — e.g. `acme` if you log
    in at acme.appomni.com.
  variables:
    instance:
      default: example
      description: Your AppOmni tenant subdomain
security:
- bearerAuth: []
tags:
- name: AO Developer Platform
  description: "The AppOmni Developer Platform (AODP) enables the creation of custom service types allowing\
    \ you to monitor the security posture of any application, including custom or proprietary apps that\
    \ AppOmni does not natively support.\n\n Example use cases include:\n\n- Create a custom service type\
    \ for applications that AppOmni does not natively support\n\n- Create a custom service type for custom\
    \ or in-house app"
paths:
  /api/v1/custom/custommonitoredservicetype/{cmst_id}/settings/:
    get:
      operationId: settingsListAllModelingData
      summary: Settings - List all modeling data
      tags:
      - AO Developer Platform
      description: "List all settings modeling data with pagination and filtering support.\n\n Response\
        \ Fields\n\n Field \n Data Type \n Description \n Example \n\n id \n Integer \n Unique identifier\
        \ for the setting \n 1 \n\n name \n String \n Name of the setting \n \"EnableAutoSave\" \n\n value\
        \ \n String \n Value of the setting \n \"true\" \n\n type \n String \n Data type of the setting\
        \ \n \"boolean\" \n\n description \n String \n Description of the setting \n \"Enables automatic\
        \ saving\" \n\n category \n String \n Category of the setting \n \"General\" \n\n created \n String\
        \ (ISO datetime) \n Creation timestamp \n \"2024-09-24T10:00:00Z\" \n\n modified \n String (ISO\
        \ datetime) \n Last modification timestamp \n \"2024-09-24T10:00:00Z\""
      parameters:
      - name: cmst_id
        in: path
        required: true
        description: Path parameter cmst_id
        schema:
          type: string
      - name: limit
        in: query
        required: false
        description: Query parameter limit
        schema:
          type: integer
        example: '50'
      - name: offset
        in: query
        required: false
        description: Query parameter offset
        schema:
          type: integer
        example: '0'
      - name: ordering
        in: query
        required: false
        description: Query parameter ordering
        schema:
          type: string
        example: name
      - name: search
        in: query
        required: false
        description: Query parameter search
        schema:
          type: string
        example: timeout
      - name: category
        in: query
        required: false
        description: Query parameter category
        schema:
          type: string
        example: Security
      - name: type
        in: query
        required: false
        description: Query parameter type
        schema:
          type: string
        example: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example:
            - api_name: setting_bool_1
              value_type: bool
              label: Bool Setting 1
              description: Does something cool
              choices: null
              default_value: 'false'
              default_risk: medium
              default_category: system_config
            - api_name: setting_int_1
              value_type: int
              label: Int Setting 1
              description: Does something really cool
              choices: null
              default_value: '1'
              default_risk: medium
              default_category: system_config
            - api_name: setting_picklist_1
              value_type: picklist
              label: Picklist Setting 1
              description: Does something super cool
              choices:
                foo: bar
                lorem: ipsum
              default_value: foo
              default_risk: medium
              default_category: system_config
      responses:
        '200':
          description: Settings - List all modeling data
          content:
            application/json:
              schema:
                type: object
              examples:
                SettingsListallmodelingdata:
                  summary: Settings - List all modeling data
                  value:
                    count: 5
                    next: null
                    previous: null
                    results:
                    - api_name: allowed_email_domains
                      value_type: list_str
                      label: Allowed Email Domains
                      description: List of email domains allowed when users register
                      choices: null
                      default_risk: medium
                      default_category: system_config
                    - api_name: lockout_duration
                      value_type: picklist
                      label: Lockout Duration
                      description: Number of minutes a user is locked out after invalid login attempts
                      choices:
                        '5': 5 Minutes
                        '10': 10 Minutes
                      default_risk: medium
                      default_category: system_config
                    - api_name: max_invalid_login_attempts
                      value_type: int
                      label: Max Invalid Login Attempts
                      description: The number of invalid login attempts before the user is locked out
                      choices: null
                      default_risk: high
                      default_category: system_config
                    - api_name: mfa_enforced
                      value_type: bool
                      label: MFA Enforced
                      description: Requires the use of MFA
                      choices: null
                      default_risk: critical
                      default_category: system_config
                    - api_name: password_change_interval
                      value_type: int
                      label: Password Change Interval
                      description: How many days until a user is required to change their password
                      choices: null
                      default_risk: medium
                      default_category: system_config
        '401':
          description: Unauthorized — missing or invalid AppOmni API token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — the token lacks permission for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: settingsAddSingleModelingData
      summary: Settings - Add single modeling data
      tags:
      - AO Developer Platform
      description: "Add a single setting to the modeling data.\n\n Request Body\n\n Field \n Data Type\
        \ \n Required \n Description \n Example \n\n name \n String \n Yes \n Name of the setting \n \"\
        MaxUploadSize\" \n\n value \n String \n Yes \n Value of the setting \n \"100MB\" \n\n type \n\
        \ String \n Yes \n Data type of the setting \n \"string\" \n\n description \n String \n No \n\
        \ Description of the setting \n \"Maximum file upload size\" \n\n category \n String \n No \n\
        \ Category of the setting \n \"Limits\" \n\n Response Fields\n\n Field \n Data Type \n Description\
        \ \n Example \n\n id \n Integer \n Unique identifier for the setting \n 2 \n\n name \n String\
        \ \n Name of the setting \n \"MaxUploadSize\" \n\n value \n String \n Value of the setting \n\
        \ \"100MB\" \n\n type \n String \n Data type of the setting \n \"string\" \n\n description \n\
        \ String \n Description of the setting \n \"Maximum file upload size\" \n\n category \n String\
        \ \n Category of the setting \n \"Limits\" \n\n created \n String (ISO datetime) \n Creation timestamp\
        \ \n \"2024-09-24T10:00:00Z\" \n\n modified \n String (ISO datetime) \n Last modification timestamp\
        \ \n \"2024-09-24T10:00:00Z\""
      parameters:
      - name: cmst_id
        in: path
        required: true
        description: Path parameter cmst_id
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example:
              api_name: password_change_interval
              value_type: int
              label: Password Change Interval
              description: How many days until a user is required to change their password
              choices: null
              default_risk: medium
              default_category: system_config
      responses:
        '204':
          description: Settings - Add single modeling data
        '401':
          description: Unauthorized — missing or invalid AppOmni API token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — the token lacks permission for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: settingsUpdateModelingData
      summary: Settings - Update modeling data
      tags:
      - AO Developer Platform
      description: "Update an existing setting in the modeling data.\n\n Request Body\n\n Field \n Data\
        \ Type \n Required \n Description \n Example \n\n value \n String \n No \n Value of the setting\
        \ \n \"150MB\" \n\n description \n String \n No \n Description of the setting \n \"Updated maximum\
        \ file upload size\" \n\n category \n String \n No \n Category of the setting \n \"Limits\" \n\
        \n Note: name and type cannot be updated after creation.\n\n Response Fields Documentation\n\n\
        \ Returns the updated setting object with the same fields as single setting creation."
      parameters:
      - name: cmst_id
        in: path
        required: true
        description: Path parameter cmst_id
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example:
              api_name: password_change_interval
              value_type: int
              label: Password Change Interval
              description: How many days until a user is required to change their password
              choices: null
              default_risk: high
              default_category: system_config
      responses:
        '204':
          description: Settings - Update modeling data
        '401':
          description: Unauthorized — missing or invalid AppOmni API token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — the token lacks permission for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: settingsDeleteMultipleModelingData
      summary: Settings - Delete multiple modeling data
      tags:
      - AO Developer Platform
      description: "Delete multiple settings from the modeling data.\n\n Request Body\n\n Field \n Data\
        \ Type \n Required \n Description \n Example \n\n ids \n Array[Integer] \n Yes \n Array of setting\
        \ IDs to delete \n [1, 2, 3] \n\n Response\n\n Returns HTTP 204 No Content on successful deletion."
      parameters:
      - name: cmst_id
        in: path
        required: true
        description: Path parameter cmst_id
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example:
              setting_names:
              - password_change_interval
      responses:
        '204':
          description: Settings - Delete multiple modeling data
        '401':
          description: Unauthorized — missing or invalid AppOmni API token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — the token lacks permission for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v1/custom/custommonitoredservicetype/{cmst_id}/settings/bulk_create/:
    post:
      operationId: settingsAddMultipleModelingData
      summary: Settings - Add multiple modeling data
      tags:
      - AO Developer Platform
      description: "Add multiple settings to the modeling data.\n\n Request Body\n\n Field \n Data Type\
        \ \n Required \n Description \n Example \n\n settings \n Array[Object] \n Yes \n Array of setting\
        \ objects to create \n See nested fields below \n\n settings[].name \n String \n Yes \n Name of\
        \ the setting \n \"SessionTimeout\" \n\n settings[].value \n String \n Yes \n Value of the setting\
        \ \n \"30\" \n\n settings[].type \n String \n Yes \n Data type of the setting \n \"integer\" \n\
        \n settings[].description \n String \n No \n Description of the setting \n \"Session timeout in\
        \ minutes\" \n\n settings[].category \n String \n No \n Category of the setting \n \"Security\"\
        \ \n\n Response Fields\n\n Returns an array of created setting objects with the same fields as\
        \ single setting creation."
      parameters:
      - name: cmst_id
        in: path
        required: true
        description: Path parameter cmst_id
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example:
              data:
              - api_name: allowed_email_domains
                value_type: list_str
                label: Allowed Email Domains
                description: List of email domains allowed when users register
                choices: null
                default_risk: medium
                default_category: system_config
      responses:
        '204':
          description: Settings - Add multiple modeling data
        '401':
          description: Unauthorized — missing or invalid AppOmni API token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — the token lacks permission for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    put:
      operationId: settingsReplaceAllModelingData
      summary: Settings - Replace all modeling data
      tags:
      - AO Developer Platform
      description: "Replace all settings modeling data. This operation will delete all existing entries\
        \ and create new ones.\n\n Request Body\n\n Field \n Data Type \n Required \n Description \n Example\
        \ \n\n settings \n Array[Object] \n Yes \n Array of setting objects to create \n See nested fields\
        \ below \n\n settings[].id \n Integer \n Yes \n Unique identifier for the setting \n 1 \n\n settings[].name\
        \ \n String \n Yes \n Name of the setting \n \"EnableAutoSave\" \n\n settings[].value \n String\
        \ \n Yes \n Value of the setting \n \"true\" \n\n settings[].type \n String \n Yes \n Data type\
        \ of the setting \n \"boolean\" \n\n settings[].description \n String \n No \n Description of\
        \ the setting \n \"Enables automatic saving\" \n\n settings[].category \n String \n No \n Category\
        \ of the setting \n \"General\" \n\n Response Fields\n\n Returns HTTP 200 with the created settings\
        \ data."
      parameters:
      - name: cmst_id
        in: path
        required: true
        description: Path parameter cmst_id
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example:
              data:
              - api_name: mfa_enforced
                value_type: bool
                label: MFA Enforced
                description: Requires the use of MFA
                choices: null
                default_risk: critical
                default_category: system_config
              - api_name: max_invalid_login_attempts
                value_type: int
                label: Max Invalid Login Attempts
                description: The number of invalid login attempts before the user is locked out
                choices: null
                default_risk: high
                default_category: system_config
              - api_name: lockout_duration
                value_type: picklist
                label: Lockout Duration
                description: Number of minutes a user is locked out after invalid login attempts
                choices:
                  '5': 5 Minutes
                  '10': 10 Minutes
                default_risk: medium
                default_category: system_config
      responses:
        '204':
          description: Settings - Replace all modeling data
        '401':
          description: Unauthorized — missing or invalid AppOmni API token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — the token lacks permission for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v1/custom/custommonitoredservicetype/{cmst_id}/permissions/:
    get:
      operationId: permissionsListAllModelingData
      summary: Permissions - List all modeling data
      tags:
      - AO Developer Platform
      description: "List all permissions modeling data with pagination and filtering support.\n\n Response\
        \ Fields\n\n Field \n Data Type \n Description \n Example \n\n id \n Integer \n Unique identifier\
        \ for the permission \n 1 \n\n display_name \n String \n Display name of the permission \n \"\
        Create Document\" \n\n technical_name \n String \n Technical name of the permission \n \"create_document\"\
        \ \n\n description \n String \n Description of the permission \n \"Allows creating new documents\"\
        \ \n\n category \n String \n Category of the permission \n \"Document Management\" \n\n external_id\
        \ \n String \n External system identifier \n \"ext_123\" \n\n created \n String (ISO datetime)\
        \ \n Creation timestamp \n \"2024-09-24T10:00:00Z\" \n\n modified \n String (ISO datetime) \n\
        \ Last modification timestamp \n \"2024-09-24T10:00:00Z\""
      parameters:
      - name: cmst_id
        in: path
        required: true
        description: Path parameter cmst_id
        schema:
          type: string
      - name: limit
        in: query
        required: false
        description: Query parameter limit
        schema:
          type: integer
        example: '50'
      - name: offset
        in: query
        required: false
        description: Query parameter offset
        schema:
          type: integer
        example: '0'
      - name: ordering
        in: query
        required: false
        description: Query parameter ordering
        schema:
          type: string
        example: id
      - name: search
        in: query
        required: false
        description: Query parameter search
        schema:
          type: string
        example: document
      - name: category
        in: query
        required: false
        description: Query parameter category
        schema:
          type: string
        example: Document Management
      responses:
        '200':
          description: Permissions - List all modeling data
          content:
            application/json:
              schema:
                type: object
              examples:
                PermissionsListallmodelingdata:
                  summary: Permissions - List all modeling data
                  value:
                    count: 7
                    next: null
                    previous: null
                    results:
                    - api_name: create-group
                      label: Create Group
                      description: Allows user to create a new group
                      default_risk: medium
                      default_category: data_access
                      indicates_elevated: true
                      indicates_admin: false
                    - api_name: create-project
                      label: Create Project
                      description: Allows user to create a new project
                      default_risk: medium
                      default_category: data_access
                      indicates_elevated: true
                      indicates_admin: false
                    - api_name: edit-all
                      label: Edit All
                      description: Allows user to edit all records
                      default_risk: high
                      default_category: data_access
                      indicates_elevated: false
                      indicates_admin: true
                    - api_name: edit_groups
                      label: Edit Groups
                      description: Allows user to edit existing groups
                      default_risk: critical
                      default_category: data_access
                      indicates_elevated: true
                      indicates_admin: false
                    - api_name: manage-users
                      label: Manage Users
                      description: Allows user to manage other user accounts
                      default_risk: critical
                      default_category: data_access
                      indicates_elevated: true
                      indicates_admin: true
                    - api_name: read-all
                      label: Read All
                      description: Allows user to read all records
                      default_risk: medium
                      default_category: data_access
                      indicates_elevated: false
                      indicates_admin: false
                    - api_name: write-all
                      label: Write All
                      description: Allows user to write all records
                      default_risk: critical
                      default_category: data_access
                      indicates_elevated: true
                      indicates_admin: true
        '401':
          description: Unauthorized — missing or invalid AppOmni API token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — the token lacks permission for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      operationId: permissionsAddSingleModelingData
      summary: Permissions - Add single modeling data
      tags:
      - AO Developer Platform
      description: "Add a single permission to the modeling data.\n\n Request Body\n\n Field \n Data Type\
        \ \n Required \n Description \n Example \n\n display_name \n String \n Yes \n Display name of\
        \ the permission \n \"Edit Document\" \n\n technical_name \n String \n Yes \n Technical name of\
        \ the permission \n \"edit_document\" \n\n description \n String \n No \n Description of the permission\
        \ \n \"Allows editing existing documents\" \n\n category \n String \n No \n Category of the permission\
        \ \n \"Document Management\" \n\n external_id \n String \n No \n External system identifier \n\
        \ \"ext_124\" \n\n Response Fields\n\n Field \n Data Type \n Description \n Example \n\n id \n\
        \ Integer \n Unique identifier for the permission \n 2 \n\n display_name \n String \n Display\
        \ name of the permission \n \"Edit Document\" \n\n technical_name \n String \n Technical name\
        \ of the permission \n \"edit_document\" \n\n description \n String \n Description of the permission\
        \ \n \"Allows editing existing documents\" \n\n category \n String \n Category of the permission\
        \ \n \"Document Management\" \n\n external_id \n String \n External system identifier \n \"ext_124\"\
        \ \n\n created \n String (ISO datetime) \n Creation timestamp \n \"2024-09-24T10:00:00Z\" \n\n\
        \ modified \n String (ISO datetime) \n Last modification timestamp \n \"2024-09-24T10:00:00Z\""
      parameters:
      - name: cmst_id
        in: path
        required: true
        description: Path parameter cmst_id
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example:
              api_name: edit-all
              label: Edit All
              description: Allows user to edit all records
              default_risk: high
              default_category: data_access
              indicates_elevated: false
              indicates_admin: true
      responses:
        '204':
          description: Permissions - Add single modeling data
        '401':
          description: Unauthorized — missing or invalid AppOmni API token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — the token lacks permission for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    patch:
      operationId: permissionsUpdateModelingData
      summary: Permissions - Update modeling data
      tags:
      - AO Developer Platform
      description: "Update an existing permission in the modeling data.\n\n Request Body\n\n Field \n\
        \ Data Type \n Required \n Description \n Example \n\n display_name \n String \n No \n Display\
        \ name of the permission \n \"Create and Edit Document\" \n\n description \n String \n No \n Description\
        \ of the permission \n \"Allows creating and editing documents\" \n\n category \n String \n No\
        \ \n Category of the permission \n \"Document Management\" \n\n external_id \n String \n No \n\
        \ External system identifier \n \"ext_123_updated\" \n\n Note: technical_name cannot be updated\
        \ after creation.\n\n Response Fields\n\n Returns the updated permission object with the same\
        \ fields as single permission creation."
      parameters:
      - name: cmst_id
        in: path
        required: true
        description: Path parameter cmst_id
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example:
              api_name: create-group
              label: Create New Group
              description: Allows user to create a new group
              default_risk: low
              default_category: data_access
              indicates_elevated: false
              indicates_admin: false
      responses:
        '204':
          description: Permissions - Update modeling data
        '401':
          description: Unauthorized — missing or invalid AppOmni API token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — the token lacks permission for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      operationId: permissionsDeleteMultipleModelingData
      summary: Permissions - Delete multiple modeling data
      tags:
      - AO Developer Platform
      description: "Delete multiple permissions from the modeling data.\n\n Request Body\n\n Field \n\
        \ Data Type \n Required \n Description \n Example \n\n ids \n Array[Integer] \n Yes \n Array of\
        \ permission IDs to delete \n [1, 2, 3] \n\n Response\n\n Returns HTTP 204 No Content on successful\
        \ deletion."
      parameters:
      - name: cmst_id
        in: path
        required: true
        description: Path parameter cmst_id
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example:
              permission_names:
              - create-group
              - create-project
      responses:
        '204':
          description: Permissions - Delete multiple modeling data
        '401':
          description: Unauthorized — missing or invalid AppOmni API token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden — the token lacks permission for this resource
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/v1/custom/custommonitoredservicetype/{cmst_id}/permissions/bulk_create/:
    post:
      operationId: permissionsAddMultipleModelingData
      summary: Permissions - Add multiple modeling data
      tags:
      - AO Developer Platform
      description: "Add multiple permissions to the modeling data.\n\n Request Body\n\n Field \n Data\
        \ Type \n Required \n Description \n Example \n\n permissions \n Array[Object] \n Yes \n Array\
        \ of permission objects to create \n See nested fields below \n\n permissions[].display_name \n\
        \ String \n Yes \n Display name of the permission \n \"Delete Document\" \n\n permissions[].technical_name\
        \ \n String \n Yes \n Technical name of the permission \n \"delete_document\" \n\n permissions[].description\
        \ \n String \n No \n Description of the permission \n \"Allows deleting documents\" \n\n permissions[].category\
        \ \n String \n No \n Category of the permission \n \"Document Management\" \n\n permissions[].external_id\
        \ \n String \n No \n External system identifier \n \"ext_125\" \n\n Response Fields\n\n Returns\
        \ an array of created permission objects with the same fields as single permission creation."
      parameters:
      - name: cmst_id
        in: path
        required: true
        description: Path parameter cmst_id
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example:
              data:
              - api_name: create-group
                label: Create Group
                description: Allows user to create a new group
                default_risk: medium
                default_category: data_access
                indicates_elevated: true
                indicates_admin: 

# --- truncated at 32 KB (71 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/appomni/refs/heads/main/openapi/appomni-developer-platform-api-openapi.yml