AppOmni Monitored Services API

Register and administer the SaaS services AppOmni monitors, inspect their data-sync state, rotate ingest tokens, and manage the tenant-wide custom fields, custom field values, tags and value lists attached to them.

Operations 22

GET /api/v1/core/monitoredservice/ List monitored services #
GET /api/v1/core/monitoredservice/{serviceType}/{serviceType}org/{id} Monitored service detail #
GET /api/v1/{serviceType}/{serviceType}org/{id}/sync_timestamps/ Data syncs #
POST /api/v1/{serviceType}/{serviceType}org/{id}/request_adhoc_sync/ Request sync data type #
POST /api/v1/{serviceType}/{serviceType}org/{id}/request_adhoc_all_sync/ Request sync all data types #
PATCH /api/v1/core/monitoredservice/{ms_id}/rotate_ingest_token/ Rotate ingest token #
GET /api/v1/core/monitoredservice/{ms_id}/get_ingest_token/ Get ingest token #
GET /api/v1/core/custom_field/ List custom fields #
POST /api/v1/core/custom_field/ Create custom field #
GET /api/v1/core/custom_field/{custom_field_id}/ Retrieve a custom field #
PATCH /api/v1/core/custom_field/{custom_field_id}/ Update custom field #
GET /api/v1/core/custom_field/types List custom field types #
GET /api/v1/core/monitoredservice/{ms_id}/custom_fields/ List MS custom field value #
POST /api/v1/core/monitoredservice/{ms_id}/custom_fields/ Create MS custom field value #
GET /api/v1/core/monitoredservice/{ms_id}/custom_fields/{custom_field_value_id}/ Retrieve a MS custom field value #
PATCH /api/v1/core/monitoredservice/{ms_id}/custom_fields/{custom_field_value_id}/ Update MS custom field value #
DELETE /api/v1/core/monitoredservice/{ms_id}/custom_fields/{custom_field_value_id}/ Delete MS custom field value #
GET /api/v1/core/tag/ List tags #
GET /api/v1/core/valuelist/ List Value Lists #
POST /api/v1/core/valuelist/ Create Value List #
GET /api/v1/core/valuelistelement/ List Value List Elements #
POST /api/v1/core/valuelistelement/ Create Value List Element #

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-monitored-services-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-monitored-services-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: AppOmni Monitored Services API
  description: 'Registration and administration of monitored SaaS services, their custom fields, custom
    field values, tags and value lists.


    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: Monitored Services
- name: Custom Fields
  description: "The Custom Fields API controls the tenant-wide fields that can be custom-created and assigned\
    \ to different monitored services.\n\n Note : Delete operations for custom fields is disabled in this\
    \ API for all users.\n\n Reference information for the custom fields endpoints:"
- name: Custom Field Values for a Monitored Service
  description: The Custom Field Values API accesses the value of the custom field associated with a given
    monitored service.
- name: Tags
- name: ValueList
  description: "ValueList and ValueListElement are used to manage lists of items used by Insights. ValueLists\
    \ have a type designation and will be used by Insights on convention based on their type.\n\n Overview\n\
    \n- ValueList : A container for a list of values with a specific type and usage\n\n- ValueListElement\
    \ : Individual items within a ValueList"
paths:
  /api/v1/core/monitoredservice/:
    get:
      operationId: listMonitoredServices
      summary: List monitored services
      tags:
      - Monitored Services
      description: "Returns a paginated list of all Monitored Services configured in your environment.\n\
        \n Each entry includes core metadata such as name, service type, score, status flags, and connection\
        \ state. Supports filtering and annotations via query parameters.\n\n Response Fields\n\n Field\
        \ \n Data Type \n Description \n Example \n\n id \n Integer \n Unique identifier for the monitored\
        \ service. This is an AppOmni internal ID \n 5 \n\n created \n String (ISO datetime) \n Timestamp\
        \ when the service was created \n 2022-11-29T05:56:26.372253Z \n\n created_by \n Integer \n ID\
        \ of the user who created the service \n 23 \n\n modified \n String (ISO datetime) \n Timestamp\
        \ of the last modification \n 2022-11-29T05:56:26.372253Z \n\n modified_by \n Integer \n ID of\
        \ the user that last modified the entry \n 32 \n\n owner \n Integer \n ID of the user or team\
        \ that owns the service \n 23 \n\n name \n String \n Display name of the monitored service \n\
        \ 'MS Name' \n\n external_id \n String \n Identifier from the external system \n '1234-5683' \n\
        \n service_id \n String \n Unique identifier of the connected service instance. This is the ID\
        \ set by the connected service provider. \n '1234' \n\n service_type \n String \n Type of service\
        \ (e.g., box, github) \n 'box' \n\n service_type_slug \n String \n Slug version of the service\
        \ type \n 'box' \n\n description \n String \n Optional human-readable description \n\n enforcement_mode\
        \ \n String \n Policy enforcement mode (monitor, enforce, etc.) \n 'monitor' \n\n integration_connected\
        \ \n Boolean \n Indicates if the service is currently connected \n false \n\n monitoring_reqs_satisfied\
        \ \n Boolean \n Whether monitoring requirements are met \n true \n\n has_warnings \n Boolean \n\
        \ True if the service has warnings \n false \n\n has_errors \n Boolean \n True if the service\
        \ has errors \n false \n\n initial_ingest_complete \n Boolean \n True if initial data ingestion\
        \ is complete \n true \n\n is_archived \n Boolean \n True if the service has been archived \n\
        \ false \n\n tags \n Array[Integer] \n List of tag IDs assigned to the service \n [34, 55, 66]\
        \ \n\n baseline_policies \n Array[Integer] \n IDs of applied baseline policies \n [1] \n\n detection_ingest_enabled\
        \ \n Boolean \n True if detection ingest is enabled \n true \n\n score \n Integer \n Security\
        \ score for the service (typically 0–100) \n 100 \n\n Annotations schema \n\n When the query parameter\
        \ annotations=1 is included in the request, each Monitored Service object in the results array\
        \ includes the following read-only, computed fields :\n\n Field \n Type \n Description \n Example\
        \ \n\n open_issues_count \n Integer \n Number of unresolved issues associated with this service\
        \ \n 1 \n\n last_run_insights \n String (ISO datetime) \n Timestamp of the last insights scan\
        \ or analysis run \n 2022-11-29T05:56:26.372253Z \n\n num_perspective_errors \n Integer \n Number\
        \ of errors found across perspectives \n 33 \n\n any_perspective_errors \n Boolean \n Whether\
        \ any perspective errors exist \n false \n\n service_installed_app_needs_update \n Boolean \n\
        \ True if an installed app related to the service needs updating \n false \n\n total_users_count\
        \ \n Integer \n Total number of users in the monitored service \n 123 \n\n inactive_user_count\
        \ \n Integer \n Number of users marked as inactive \n 222 \n\n elevated_perm_user_count \n Integer\
        \ \n Number of users with elevated permissions \n 32 \n\n admin_perm_user_count \n Integer \n\
        \ Number of users with administrative permissions \n 432"
      responses:
        '200':
          description: List Monitored Services
          content:
            text/plain:
              schema:
                type: string
              example: "{\n  \"count\": 6,\n  \"next\": null,\n  \"previous\": null,\n  \"results\": [\n\
                \    {\n      \"id\": 1,\n      \"created\": \"2025-03-10T20:10:45.013060Z\",\n      \"\
                created_by\": 1,\n      \"modified\": \"2025-04-08T15:41:32.406310Z\",\n      \"modified_by\"\
                : null,\n      \"owner\": 1,\n      \"name\": \"Box DE\",\n      \"external_id\": null,\n\
                \      \"service_id\": \"285415710\",\n      \"service_type\": \"box\",\n      \"service_type_slug\"\
                : \"box\",\n      \"description\": null,\n      \"enforcement_mode\": \"monitor\",\n \
                \     \"integration_connected\": true,\n      \"monitoring_reqs_satisfied\": true,\n \
                \     \"has_warnings\": false,\n      \"has_errors\": false,\n      \"initial_ingest_complete\"\
                : true,\n      \"is_archived\": false,\n      \"tags\": [1],\n      \"baseline_policies\"\
                : [],\n      \"detection_ingest_enabled\": true,\n      \"score\": 100\n    },\n    ...,\n\
                \  ]\n}"
        '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/core/monitoredservice/{serviceType}/{serviceType}org/{id}:
    get:
      operationId: monitoredServiceDetail
      summary: Monitored service detail
      tags:
      - Monitored Services
      description: "Returns detailed metadata, sync status, user stats, preferences, and policy posture\
        \ for a single monitored service instance by service type and org ID.\n\n If using developer platform\
        \ modules, run the following call instead: GET api/v1/core/custom/custommonitoredservice/{id}\n\
        \n Response Fields\n\n Field \n Type \n Description \n Example \n\n id \n Integer \n Unique identifier\
        \ for the monitored service \n 1 \n\n created \n String (ISO datetime) \n Timestamp of creation\
        \ \n 2022-11-29T05:56:26.372253Z \n\n modified \n String (ISO datetime) \n Timestamp of last modification\
        \ \n 2022-11-29T05:56:26.372253Z \n\n external_id \n String \n External service identifier \n\
        \ '12345' \n\n created_by \n Integer \n ID of the creator \n 2022-11-29T05:56:26.372253Z \n\n\
        \ modified_by \n Integer \n ID of last modifier \n 2022-11-29T05:56:26.372253Z \n\n owner \n Integer\
        \ \n ID of the owning user/team \n 33 \n\n monitored_service_type \n String \n Type of the monitored\
        \ service (e.g., box) \n 'box' \n\n service_type_slug \n String \n Slugified type (same as above)\
        \ \n 'box' \n\n name \n String \n Display name \n 'MS Name' \n\n authoritative_name \n String\
        \ \n Authoritative identifier (if configured) \n '123456' \n\n description \n String \n Optional\
        \ human-readable description \n 'description' \n\n service_id \n String \n Unique identifier for\
        \ the service instance \n '5678' \n\n initial_ingest_complete \n Boolean \n Whether the initial\
        \ ingest completed \n true \n\n integration_connected \n Boolean \n Whether integration is connected\
        \ \n true \n\n integration_failed_at \n String (ISO datetime) \n Timestamp of last failed integration\
        \ (if any) \n 2022-11-29T05:56:26.372253Z \n\n has_warnings \n Boolean \n Indicates if warnings\
        \ exist \n true \n\n has_errors \n Boolean \n Indicates if errors exist \n false \n\n integration_installed_version\
        \ \n String \n Installed version of the integration \n '1234' \n\n notify_ms_owner \n Boolean\
        \ \n Whether to notify the monitored service owner \n false \n\n notify_user \n Integer \n ID\
        \ of an additional user to notify \n 45 \n\n extra_notification_emails \n Array[String] \n Extra\
        \ email addresses to notify \n [' 123@email.com '] \n\n allow_deploy_remediation \n Boolean \n\
        \ Whether remediation actions can be deployed \n false \n\n enforcement_mode \n String \n Mode\
        \ of policy enforcement \n 'monitor' \n\n last_service_data_sync \n String (ISO datetime) \n Last\
        \ successful service data sync \n 2022-11-29T05:56:26.372253Z \n\n last_user_sync \n String \n\
        \ Last user sync time \n 2022-11-29T05:56:26.372253Z \n\n last_login_sync \n String \n Last login\
        \ data sync time \n 2022-11-29T05:56:26.372253Z \n\n String \n Last security data sync time \n\
        \ 2022-11-29T05:56:26.372253Z \n\n String \n Last apps data sync time \n 2022-11-29T05:56:26.372253Z\
        \ \n\n last_detection_collection \n String \n Last detection data collection time \n 2022-11-29T05:56:26.372253Z\
        \ \n\n total_internal_user_count \n Integer \n Count of internal users \n 54 \n\n internal_active_user_count\
        \ \n Integer \n Active internal users \n 65 \n\n total_external_user_count \n Integer \n External\
        \ users count \n 22 \n\n external_active_user_count \n Integer \n Active external users \n 43\
        \ \n\n inactive_user_count \n Integer \n Total inactive users \n 43 \n\n internal_inactive_user_count\
        \ \n Integer \n Inactive internal users \n 54 \n\n external_inactive_user_count \n Integer \n\
        \ Inactive external users \n 123 \n\n elevated_perm_user_count \n Integer \n Users with elevated\
        \ permissions \n 424 \n\n internal_elevated_perm_user_count \n Integer \n Internal users with\
        \ elevated permissions \n 243 \n\n external_elevated_perm_user_count \n Integer \n External users\
        \ with elevated permissions \n 234 \n\n admin_perm_user_count \n Integer \n Admin users total\
        \ \n 2343 \n\n internal_admin_perm_user_count \n Integer \n Internal admin users \n 12 \n\n external_admin_perm_user_count\
        \ \n Integer \n External admin users \n 32 \n\n tags \n Array[Integer] \n Associated tag IDs \n\
        \ [1324] \n\n classification_configurations \n Array \n Custom classification settings (if any)\
        \ \n [] \n\n num_internal_users_covered \n Integer \n Covered internal users \n 43 \n\n num_external_users_covered\
        \ \n Integer \n Covered external users \n 54 \n\n internal_user_covera"
      parameters:
      - name: serviceType
        in: path
        required: true
        description: Path parameter serviceType
        schema:
          type: string
      - name: id
        in: path
        required: true
        description: Path parameter id
        schema:
          type: string
      responses:
        '200':
          description: Monitored Service Detail
          content:
            application/json:
              schema:
                type: object
              examples:
                MonitoredServiceDetail:
                  summary: Monitored Service Detail
                  value:
                    id: 1
                    created: '2025-03-10T20:10:45.013060Z'
                    modified: '2025-04-08T15:41:32.406310Z'
                    external_id: null
                    created_by: 1
                    modified_by: null
                    owner: 1
                    monitored_service_type: box
                    service_type_slug: box
                    name: Box DE
                    authoritative_name: null
                    description: null
                    service_id: '285415710'
                    initial_ingest_complete: true
                    integration_connected: true
                    integration_failed_at: null
                    has_warnings: false
                    has_errors: false
                    integration_installed_version: null
                    notify_ms_owner: true
                    notify_user: null
                    extra_notification_emails: []
                    allow_deploy_remediation: false
                    enforcement_mode: monitor
                    last_service_data_sync: '2025-04-08T15:41:32.401611Z'
                    last_user_sync: null
                    last_login_sync: null
                    last_security_data_sync: null
                    last_apps_data_sync: null
                    last_detection_collection: null
                    total_internal_user_count: 20
                    internal_active_user_count: 20
                    total_external_user_count: 0
                    external_active_user_count: 0
                    inactive_user_count: null
                    internal_inactive_user_count: null
                    external_inactive_user_count: null
                    elevated_perm_user_count: null
                    internal_elevated_perm_user_count: null
                    external_elevated_perm_user_count: null
                    admin_perm_user_count: null
                    internal_admin_perm_user_count: null
                    external_admin_perm_user_count: null
                    tags:
                    - 1
                    classification_configurations: []
                    num_internal_users_covered: 0
                    num_external_users_covered: 0
                    internal_user_coverage: 0.0
                    external_user_coverage: 0.0
                    num_internal_users_represented: 0
                    num_external_users_represented: 0
                    service_installed_app_needs_update: false
                    service_statistics:
                      md_kind: fsb.ms.service_statics
                      file_count: 40
                      md_version: 2
                      site_count: 0
                      folder_count: 69
                      user_count_external: 0
                      user_count_internal: 20
                    user_msgs:
                      md_kind: core.monitoredservice.user_msgs
                      md_version: 1
                      msgs: []
                    open_issues_count: 0
                    monitoring_reqs_satisfied: true
                    is_archived: false
                    archived_at: null
                    prefs:
                      md_version: 1
                      md_kind: core.shared.prefs.ms_container
                      preference_groups:
                        modules:
                          group_label: Module Settings
                          group_description: Configure which modules are enabled
                          preferences:
                          - name: dam
                            label: Exposure - enabled
                            value_type: bool
                            show_in_ui: false
                            value: true
                            default_value: true
                            description: Data Exposure will be monitored
                            md_version: 1
                            md_kind: core.shared.prefs.entry
                          md_version: 1
                          md_kind: core.shared.prefs.group
                      flat_dict:
                        modules.dam: true
                    baseline_policies: []
                    degraded_feature_keys: []
                    detection_ingest_enabled: true
                    score: 100
                    score_last_calculated: '2025-04-09T18:07:02.533226Z'
                    admin_perspective: 9
                    preferences:
                      batch_perspectives: true
                    active_perspective_count: 1
                    perspective_count: 5
        '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/{serviceType}/{serviceType}org/{id}/sync_timestamps/:
    get:
      operationId: dataSyncs
      summary: Data syncs
      tags:
      - Monitored Services
      description: "Provides users with information pertaining to the status of syncing various data types\
        \ to AppOmni from their SaaS application.\n\n For example, if a sync hadn't started or finished\
        \ for a few days, AppOmni would be operating on data from whenever the last data sync completed\
        \ successfully, and could be missing important configuration changes or repo additions that occurred\
        \ during that interim period.\n\n For developer platform modules, run:\nGET api/v1/custom/custommonitoredservice/{id}/sync_timestamps/\n\
        \n Response Fields\n\n Field \n Type \n Description \n Example \n\n timestamp_field \n String\
        \ \n Internal field name for the last sync timestamp (used for lookups and logic) \n 'timestamp'\
        \ \n\n label \n String \n i18n key or label describing the sync category \n 'label' \n\n allow_adhoc_refresh\
        \ \n Boolean \n Whether ad-hoc manual sync is allowed for this type \n true \n\n description \n\
        \ String \n i18n key or full description of the sync category \n 'description' \n\n rate_limited\
        \ \n Boolean \n Whether triggering this sync is rate-limited \n true \n\n rate_limit_category\
        \ \n String \n Indicates how heavily the sync is rate-limited (e.g., light, medium, heavy) \n\
        \ 'light' \n\n last_sync_timestamp \n String (ISO datetime) \n Time the last sync finished (or\
        \ was recorded as completed) \n 2022-11-29T05:56:26.372253Z \n\n required_syncs \n Array[String]\
        \ \n List of dependent sync steps that must be completed first \n [] \n\n status \n String \n\
        \ Current sync status (pending, failed, complete, etc.) \n 'complete' \n\n last_sync_start_time\
        \ \n String (ISO datetime) \n Time the sync last began (useful for tracking duration) \n 2022-11-29T05:56:26.372253Z\
        \ \n\n long_sync_detected \n Boolean \n True if the system has flagged the sync as taking unusually\
        \ long \n false \n\n messages \n String \n Optional additional info or warning messages \n \"\""
      parameters:
      - name: serviceType
        in: path
        required: true
        description: Path parameter serviceType
        schema:
          type: string
      - name: id
        in: path
        required: true
        description: Path parameter id
        schema:
          type: string
      responses:
        '200':
          description: Data Syncs
          content:
            text/plain:
              schema:
                type: string
              example: "[\n  {\n    \"timestamp_field\": \"last_org_sync\",\n    \"label\": \"common.monitored_service.data_timestamps.last_security_data_sync.label\"\
                ,\n    \"allow_adhoc_refresh\": true,\n    \"description\": \"common.monitored_service.data_timestamps.last_security_data_sync.description\"\
                ,\n    \"rate_limited\": false,\n    \"rate_limit_category\": \"light\",\n    \"last_sync_timestamp\"\
                : \"2025-04-08T23:50:20.161334+00:00\",\n    \"required_syncs\": [\n      \"org_settings_sync\"\
                \n    ],\n    \"status\": \"complete\",\n    \"last_sync_start_time\": \"2025-04-08T23:50:15.463009+00:00\"\
                ,\n    \"long_sync_detected\": false,\n    \"messages\": null\n  },\n  ...,\n]"
        '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/{serviceType}/{serviceType}org/{id}/request_adhoc_sync/:
    post:
      operationId: requestSyncDataType
      summary: Request sync data type
      tags:
      - Monitored Services
      description: "Request an on-demand resync of the provided data type.\n\n Affected by rate_limits\
        \ and availability. Data syncs are enqueued. Only syncs with ‘allow_adhoc_refresh: true’ and ‘rate_limited:\
        \ false’ will be requested.\n\n For the payload, specify the timestamp_field to resync.\n\n For\
        \ developer platform module types, run:\nPOST - api/v1/{serviceType}/{serviceType}org/{id}/request_adhoc_sync/.\n\
        \n Response Fields\n\n Field \n Data Type \n Required \n Description \n Example \n\n sync_type\
        \ \n String \n Yes \n Timestamp field to resync (use value from Data syncs) \n last_security_data_sync"
      parameters:
      - name: serviceType
        in: path
        required: true
        description: Path parameter serviceType
        schema:
          type: string
      - name: id
        in: path
        required: true
        description: Path parameter id
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example: '{ sync_type: "last_security_data_sync"}'
      responses:
        '200':
          description: Successful response
        '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/{serviceType}/{serviceType}org/{id}/request_adhoc_all_sync/:
    post:
      operationId: requestSyncAllDataTypes
      summary: Request sync all data types
      tags:
      - Monitored Services
      description: "Request on-demand resyncs of all data types meeting the required criteria.\n\n No\
        \ payload is necessary. \n\n Utilizes the same schema as Request Sync Data Type.\n\n For developer\
        \ platform module types, run:\nPOST - api/v1/custom/custommonitoredservice/{id}/request_adhoc_all_sync/"
      parameters:
      - name: serviceType
        in: path
        required: true
        description: Path parameter serviceType
        schema:
          type: string
      - name: id
        in: path
        required: true
        description: Path parameter id
        schema:
          type: string
      responses:
        '200':
          description: Successful response
        '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/core/monitoredservice/{ms_id}/rotate_ingest_token/:
    patch:
      operationId: rotateIngestToken
      summary: Rotate ingest token
      tags:
      - Monitored Services
      description: "Each sync event for a monitored service is a job that requires authentication to push\
        \ data to AppOmni. An ingest token is the authentication that makes the sync secure. You might\
        \ require the ingest token to make direct API calls when you're using the AppOmni Developer Platform.\
        \ Rotating a token immediately replaces the ingest token with a new value. Any existing integrations\
        \ using the old/previous ingest token cease to work.\n\n Only users with Admin or Service Onboarder\
        \ roles are able to use this endpoint. Users without permission will return a 403.\n\n Run the\
        \ \"List Monitored Services\" endpoint to obtain the ms_id variable.\n\n There is no payload required\
        \ for this endpoint.\n\n Response Fields\n\n Field \n Data Type \n Description \n Example \n\n\
        \ token \n String (UUID) \n New ingest token value \n a5633c0d-a9dd-46c5-903d-5007dc6d6e42 \n\n\
        \ rotate_time \n String (ISO datetime) \n Time the token was rotated \n 2024-07-17T18:41:02.452800+00:00\
        \ \n\n url \n String \n Ingest API endpoint URL \n https://your-domain.appomni.com/platform/ingest/v2/ingest/"
      parameters:
      - name: ms_id
        in: path
        required: true
        description: Path parameter ms_id
        schema:
          type: string
      responses:
        '200':
          description: Rotate Ingest Token
          content:
            application/json:
              schema:
                type: object
              examples:
                RotateIngestToken:
                  summary: Rotate Ingest Token
                  value:
                    token: a5633c0d-a9dd-46c5-903d-5007dc6d6e42
                    rotate_time: '2024-07-17T18:41:02.452800+00:00'
                    url: https://[your-domain].appomni.com/platform/ingest/v2/ingest/
        '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/core/monitoredservice/{ms_id}/get_ingest_token/:
    get:
      operationId: getIngestToken
      summary: Get ingest token
      tags:
      - Monitored Services
      description: "Each sync event for a monitored service is a job that requires authentication to push\
        \ data to AppOmni. An ingest token is the authentication that makes the sync secure. You might\
        \ require the ingest token to make direct API calls when you're using the AppOmni Developer Platform.\n\
        \n Only users with Admin or Service Onboarder roles are able to use this endpoint. Users without\
        \ permission will return a 403.\n\n Run the \"List Monitored Services\" endpoint to obtain the\
        \ ms_id variable.\n\n Response Fields\n\n Field \n Data Type \n Description \n Example \n\n token\
        \ \n String (UUID) \n Current ingest token value \n 3ea1ae3e-792f-4682-ae01-c07e6c63ea39 \n\n\
        \ rotate_time \n String (ISO datetime) or null \n Time the token was rotated (if ever) \n null\
        \ \n\n url \n String \n Ingest API endpoint URL \n https://your-domain.appomni.com/platform/ingest/v2/ingest/"
      parameters:
      - name: ms_id
        in: path
        required: true
        description: Path parameter ms_id
        schema:
          type: string
      responses:
        '200':
          description: Get Ingest Token
          content:
            application/json:
              schema:
                type: object
              examples:
                GetIngestToken:
                  summary: Get Ingest Token
                  value:
                    token: 3ea1ae3e-792f-4682-ae01-c07e6c63ea39
                    rotate_time: null
                    url: https://[your-domain].appomni.com/platform/ingest/v2/ingest/
        '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/core/custom_field/:
    get:
      operationId: listCustomFields
      summary: List custom fields
      tags:
      - Custom Fields
      description: "Returns a list of custom fields.\n\n Response Fields\n\n Field \n Data Type \n Description\
        \ \n Example \n\n display_name \n String \n Display name for the custom field \n \"First Field\"\
        \ \n\n field_name \n String \n Unique field name for the custom field \n \"field_1\" \n\n field_type\
        \ \n String \n Data type the field can have (decimal, integer, string) \n \"string\" \n\n description\
        \ \n String \n Optional descriptive text \n \"My first field\" \n\n id \n String (UUID) \n Unique\
        \ identifier for the custom field \n \"864b35f9-b042-4a9d-b6a4-f293e8ea7fda\" \n\n created \n\
        \ String (ISO datetime) \n Timestamp when the custom field was created \n \"2024-07-03T15:08:32.502585Z\"\
        \ \n\n modified \n String (ISO datetime) \n Timestamp when the custom field was last modified\
        \ \n \"2024-07-03T15:08:32.502607Z\" \n\n external_id \n String or null \n External identifier\
        \ controlled by end user \n null"
      parameters:
      - 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: field
      - name: id__in
        in: query
        required: false
        description: Query parameter id__in
        schema:
          type: string
        example: '["e6a1993f-52c4-4e82-b734-7772ed551aa1","1d0dccb1-b3c3-462e-a95f-a4a2dba72d15"]'
      - name: display_name__icontains
        in: query
        required: false
        description: Query parameter display_name__icontains
        schema:
          type: string
        example: example
      - name: field_name__icontains
        in: quer

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