{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/api-search/cisco-voice-portal/json-schema/cisco-voice-portal-dialed-number-pattern.json",
  "title": "Cisco Voice Portal Dialed Number Pattern",
  "description": "Schema for a CVP Dialed Number Pattern (DNP). Dialed number patterns define how incoming calls are routed to specific VXML applications or call treatments based on the dialed number (DNIS). DNPs are a core configuration element in CVP that maps incoming numbers to call handling logic and integrates with ICM/UCCE routing.",
  "type": "object",
  "properties": {
    "patternId": {
      "type": "string",
      "description": "Unique identifier for the pattern"
    },
    "pattern": {
      "type": "string",
      "description": "The dialed number pattern. Supports wildcards (* for any digits). Examples: 18005551234, 1800555*, *"
    },
    "description": {
      "type": "string",
      "description": "Description of what this pattern routes to"
    },
    "callType": {
      "type": "string",
      "enum": ["preroute", "translation_route", "post_route"],
      "description": "Call type determining how the call interacts with ICM/UCCE. Pre-route calls are sent to ICM before any treatment. Translation-route calls receive self-service treatment then route to ICM. Post-route calls are fully handled by CVP without ICM."
    },
    "applicationName": {
      "type": "string",
      "description": "VXML application associated with this pattern"
    },
    "enabled": {
      "type": "boolean",
      "default": true,
      "description": "Whether this pattern is active"
    },
    "priority": {
      "type": "integer",
      "minimum": 1,
      "description": "Pattern matching priority (lower number = higher priority)"
    },
    "sipServerGroup": {
      "type": "string",
      "description": "SIP server group for outbound routing"
    },
    "ringtoneApplication": {
      "type": "string",
      "description": "Application to play while waiting for ICM route response"
    },
    "errorApplication": {
      "type": "string",
      "description": "Application to play on error conditions"
    },
    "survivalApplication": {
      "type": "string",
      "description": "Application to use in ICM survival mode (when ICM is unreachable)"
    }
  },
  "required": ["pattern", "callType"]
}
