Support: Ticket Creation
Problem Statement
Creating a support ticket involves categorizing the issue, providing a description, setting priority, and optionally attaching files. This is a write operation that triggers routing and SLA timers.
Why Human-Only Semantics Fail
- Category dropdowns have nested hierarchies not reflected in the DOM
- Priority labels ("Urgent", "High") don't map to SLA definitions
- File attachment controls don't declare accepted types or size limits
- "Submit Ticket" doesn't declare the routing side-effects
Why Scraping Fails Here
- Support portals are behind authentication
- Category trees are lazily loaded
- Rich text description fields use WYSIWYG editors
- Ticket confirmation pages are dynamically rendered
How AXAG Eliminates Scraping
ticket.create declares categories as enums, priority levels with semantic meaning, and the side-effects of creation (routing, SLA timer start).
Annotated UI Example
Support — create ticket
<button
axag-intent="ticket.create"
axag-entity="ticket"
axag-action-type="write"
axag-required-parameters='["subject","description","category","priority"]'
axag-optional-parameters='["attachment_urls","tags","cc_emails"]'
axag-postconditions='["ticket created","routing rules applied","SLA timer started"]'
axag-risk-level="low"
axag-idempotent="false"
axag-scope="tenant"
axag-description="Create a new support ticket"
>Submit Ticket</button>
Semantic Manifest Excerpt
Manifest — ticket.create
{
"intent": "ticket.create",
"entity": "ticket",
"operation_id": "ticket_create",
"action_type": "write",
"parameters": {
"subject": { "type": "string", "required": true, "maxLength": 200 },
"description": { "type": "string", "required": true, "maxLength": 10000 },
"category": {
"type": "string",
"required": true,
"enum": ["billing","technical","account","feature_request","bug_report","other"]
},
"priority": {
"type": "string",
"required": true,
"enum": ["low","medium","high","urgent"]
},
"attachment_urls": { "type": "array", "required": false, "items": { "type": "string", "format": "uri" } },
"tags": { "type": "array", "required": false, "items": { "type": "string" } },
"cc_emails": { "type": "array", "required": false, "items": { "type": "string", "format": "email" } }
},
"postconditions": ["ticket created", "routing rules applied", "SLA timer started"],
"risk_level": "low",
"idempotent": false,
"scope": "tenant"
}
Generated Tool Example
Tool — ticket_create
{
"tool_name": "ticket_create",
"description": "Create a new support ticket",
"input_schema": {
"type": "object",
"properties": {
"subject": { "type": "string", "maxLength": 200 },
"description": { "type": "string", "maxLength": 10000 },
"category": { "type": "string", "enum": ["billing","technical","account","feature_request","bug_report","other"] },
"priority": { "type": "string", "enum": ["low","medium","high","urgent"] },
"attachment_urls": { "type": "array", "items": { "type": "string", "format": "uri" } },
"tags": { "type": "array", "items": { "type": "string" } }
},
"required": ["subject", "description", "category", "priority"]
},
"safety": { "risk_level": "low", "idempotent": false }
}
Constraints & Safety Notes
- Not idempotent: duplicate submissions create duplicate tickets
- Low risk — creates a ticket but doesn't modify existing data
- SLA timer starts immediately upon creation based on priority level
- Routing rules assign the ticket to the appropriate team
urgentpriority may trigger immediate page/notification to on-call staff