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",
"action_type": "write",
"operation_id": "ticket_create",
"description": "Create a new support ticket",
"required_parameters": [
{ "name": "subject", "type": "string", "maxLength": 200 },
{ "name": "description", "type": "string", "maxLength": 10000 },
{
"name": "category",
"type": "string",
"enum": ["billing", "technical", "account", "feature_request", "bug_report", "other"]
},
{ "name": "priority", "type": "string", "enum": ["low", "medium", "high", "urgent"] }
],
"optional_parameters": [
{ "name": "attachment_urls", "type": "array", "items": { "type": "string", "format": "uri" } },
{ "name": "tags", "type": "array", "items": { "type": "string" } },
{ "name": "cc_emails", "type": "array", "items": { "type": "string", "format": "email" } }
],
"risk_level": "low",
"idempotent": false,
"scope": "tenant",
"postconditions": ["ticket created", "routing rules applied", "SLA timer started"]
}
Generated Tool Example
Tool — ticket_create
{
"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"]
},
"metadata": {
"action_type": "write",
"risk_level": "low",
"idempotent": false,
"confirmation_required": false,
"approval_required": false,
"source_intent": "ticket.create",
"source_entity": "ticket"
}
}
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