Case Management API Resources

This section provides details on the Case Management API’s various operations. The API supports two basic sets of operations, one workflow to create a new case, and another to add follow-up items to existing cases, including requests to the close the case.

This workflow summarizes the operations necessary to create a new support ticket. See the steps for each operation for more detailed information.

  1. First run List Categories to assign a top-level category.

  2. Run Get Subcategories to select one or more relevant subcategories for use in a new POST object.

  3. Run Get Case Attributes to prepare new data for the POST object.

  4. Based on the hypermedia link embedded in response object, optionally run Get a Questionnaire to answer questions relevant to the support ticket’s top-level category.

  5. Optionally run Get Severity Definitions and Get Response Times for help in assigning the appropriate severity level.

  6. Once you have assembled all this information, run the Create a New Case operation.

Run the remaining List Cases and Get a Case operations to select support tickets. Run Add a Note and Upload a File to update a ticket, and Download a File to get uploaded files. Run Close a Case once the support ticket has been addressed.

API Summary

Operation Method Endpoint
Categories
List Categories GET /case-management/v2/categories
Get Subcategories GET /case-management/v2/categories/{categoryType}/sub-categories
Get Case Attributes GET /case-management/v2/categories/{categoryType}/case-attributes{?product,problem,area,service}
Get Severity Definitions GET /case-management/v2/categories/{categoryType}/severity-definitions{?product}
Get Response Times GET /case-management/v2/categories/{categoryType}/response-time-frequency{?product}
Questionnaires
Get a Questionnaire GET /case-management/v2/questionnaires/{questionnaireId}
Cases
Create a New Case POST /case-management/v2/cases/
List Cases GET /case-management/v2/cases/{?type}
Get a Case GET /case-management/v2/cases/{caseId}
Add a Note POST /case-management/v2/cases/{caseId}/notes
Close a Case POST /case-management/v2/cases/{caseId}/close-request
Upload a File POST /case-management/v2/cases/{caseId}/files
Download a File GET /case-management/v2/cases/{caseId}/files/{fileId}

List Categories

To create a new support ticket, you first need to categorize it, both with a top-level category and a set of subcategories. This operation gets the top-level category necessary to list the subcategories.

GET /case-management/v2/categories

Example: /case-management/v2/categories

Status 200 application/json

Response:

[
    {
        "categoryType": "Technical",
        "displayName": "Technical Support Issue",
        "description": "Performance, Stale Content, Errors and Unexpected behaviors, and other break/fix issues, etc."
    },
    {
        "categoryType": "Business",
        "displayName": "Business Support Issue or Question",
        "description": "CP Code, User Access and Management, How To Use Luna Control Center, Reporting, Contract, etc."
    },
    {
        "categoryType": "Billing",
        "displayName": "Billing Support Issue or Question",
        "description": "Invoice issues, Billing discrepancies, Purchase Order details, etc."
    },
    {
        "categoryType": "Security",
        "displayName": "Managed Security Support",
        "description": null
    },
    {
        "categoryType": "Professional-Services",
        "displayName": "Professional Services Request (billable)",
        "description": null
    }
]

Run this operation to retrieve a categoryType value for use in gathering information to create a new support ticket:

  1. GET /case-management/v2/categories.

  2. From the response array, choose the appropriate Category object.

  3. Store the object’s categoryType.

Get Subcategories

To create a new support ticket, you need to provide a top-level category and at least one relevant subcategory. This operation provides data from which to extract a subcategory type and unique value.

GET /case-management/v2/categories/{categoryType}/sub-categories

Example: /case-management/v2/categories/Technical/sub-categories

Parameter Type Sample Description
Required
categoryType Enumeration Technical The top-level category assigned to the support ticket, either Billing, Business, Professional-Services, Security, or Technical.

Status 200 application/json

Response:

{
    "subCategory": {
        "subCategoryType": "area",
        "displayName": "Area",
        "subCategories": [
            {
                "subCategoryType": "CP Code Management",
                "displayName": "CP Code Management",
                "subCategory": {
                    "subCategoryType": "service",
                    "displayName": "Service",
                    "subCategories": [
                        {
                            "subCategoryType": "Change Contract Association",
                            "displayName": "Change Contract Association"
                        },
                        {
                            "subCategoryType": "Delete CP Code",
                            "displayName": "Delete CP Code"
                        },
                        {
                            "subCategoryType": "Edit CP Code Details",
                            "displayName": "Edit CP Code Details"
                        },
                        {
                            "subCategoryType": "New CP Code",
                            "displayName": "New CP Code"
                        }
                    ]
                }
            },
            {
                "subCategoryType": "Context Selector",
                "displayName": "Context Selector",
                "subCategory": {
                    "subCategoryType": "service",
                    "displayName": "Service",
                    "subCategories": [
                        {
                            "subCategoryType": "Delete Context",
                            "displayName": "Delete Context"
                        },
                        {
                            "subCategoryType": "Merge Contexts",
                            "displayName": "Merge Contexts"
                        },
                        {
                            "subCategoryType": "Set up Context",
                            "displayName": "Set up Context"
                        }
                    ]
                }
            },
            {
                "subCategoryType": "General Account Management",
                "displayName": "General Account Management",
                "subCategory": {
                    "subCategoryType": "service",
                    "displayName": "Service",
                    "subCategories": [
                        {
                            "subCategoryType": "Product Support",
                            "displayName": "Product Support"
                        }
                    ]
                }
            },
            {
                "subCategoryType": "Portal Reports",
                "displayName": "Portal Reports",
                "subCategory": {
                    "subCategoryType": "service",
                    "displayName": "Service",
                    "subCategories": [
                        {
                            "subCategoryType": "Contract Usage Report",
                            "displayName": "Contract Usage Report"
                        },
                        {
                            "subCategoryType": "Information Request",
                            "displayName": "Information Request"
                        },
                        {
                            "subCategoryType": "SLA Reports",
                            "displayName": "SLA Reports"
                        },
                        {
                            "subCategoryType": "Traffic Reports",
                            "displayName": "Traffic Reports"
                        },
                        {
                            "subCategoryType": "URL Reports",
                            "displayName": "URL Reports"
                        },
                        {
                            "subCategoryType": "Visitor Reports",
                            "displayName": "Visitor Reports"
                        }
                    ]
                }
            },
            {
                "subCategoryType": "Reporting Groups",
                "displayName": "Reporting Groups",
                "subCategory": {
                    "subCategoryType": "service",
                    "displayName": "Service",
                    "subCategories": [
                        {
                            "subCategoryType": "Create Reporting Group",
                            "displayName": "Create Reporting Group"
                        },
                        {
                            "subCategoryType": "Delete Reporting Group",
                            "displayName": "Delete Reporting Group"
                        },
                        {
                            "subCategoryType": "Edit Reporting Group",
                            "displayName": "Edit Reporting Group"
                        }
                    ]
                }
            },
            {
                "subCategoryType": "SSL Certificate Validation",
                "displayName": "SSL Certificate Validation",
                "subCategory": {
                    "subCategoryType": "service",
                    "displayName": "Service",
                    "subCategories": [
                        {
                            "subCategoryType": "Information Request",
                            "displayName": "Information Request"
                        }
                    ]
                }
            },
            {
                "subCategoryType": "Storage Groups",
                "displayName": "Storage Groups",
                "subCategory": {
                    "subCategoryType": "service",
                    "displayName": "Service",
                    "subCategories": [
                        {
                            "subCategoryType": "Create Storage Group",
                            "displayName": "Create Storage Group"
                        },
                        {
                            "subCategoryType": "Create Upload Account",
                            "displayName": "Create Upload Account"
                        },
                        {
                            "subCategoryType": "Delete Storage Group",
                            "displayName": "Delete Storage Group"
                        },
                        {
                            "subCategoryType": "Delete Upload Account",
                            "displayName": "Delete Upload Account"
                        },
                        {
                            "subCategoryType": "Edit Storage Group Details",
                            "displayName": "Edit Storage Group Details"
                        }
                    ]
                }
            },
            {
                "subCategoryType": "Test Objects",
                "displayName": "Test Objects",
                "subCategory": {
                    "subCategoryType": "service",
                    "displayName": "Service",
                    "subCategories": [
                        {
                            "subCategoryType": "Delete SLA Test Object",
                            "displayName": "Delete SLA Test Object"
                        },
                        {
                            "subCategoryType": "Set up SLA Test Object",
                            "displayName": "Set up SLA Test Object"
                        },
                        {
                            "subCategoryType": "Set up SureRoute Test Object",
                            "displayName": "Set up SureRoute Test Object"
                        }
                    ]
                }
            },
            {
                "subCategoryType": "Training",
                "displayName": "Training",
                "subCategory": {
                    "subCategoryType": "service",
                    "displayName": "Service",
                    "subCategories": [
                        {
                            "subCategoryType": "LUNA Training",
                            "displayName": "LUNA Training"
                        },
                        {
                            "subCategoryType": "Product Training",
                            "displayName": "Product Training"
                        }
                    ]
                }
            },
            {
                "subCategoryType": "User Admin",
                "displayName": "User Admin",
                "subCategory": {
                    "subCategoryType": "service",
                    "displayName": "Service",
                    "subCategories": [
                        {
                            "subCategoryType": "24x7 User Management",
                            "displayName": "24x7 User Management"
                        },
                        {
                            "subCategoryType": "Create New User",
                            "displayName": "Create New User"
                        },
                        {
                            "subCategoryType": "Delete User",
                            "displayName": "Delete User"
                        },
                        {
                            "subCategoryType": "Edit User Details",
                            "displayName": "Edit User Details"
                        },
                        {
                            "subCategoryType": "Forgot Username/Password",
                            "displayName": "Forgot Username/Password"
                        }
                    ]
                }
            }
        ]
    }
}

Run these steps to build an array of subcategories for use in creating a new support ticket.

  1. Run the steps for the List Categories operation to store a relevant categoryType value.

  2. Make a GET request to /case-management/v2/categories/{categoryType}/sub-categories.

  3. The response object is a recursive data structure that represents a hierarchy of subcategories. Store the subSelection object’s subSelectionType and displayName, which specify a topic for the subcategory.

  4. If there is a subCategories array, it specifies each relevant subcategory within the topic. Select a relevant object from the array and store its subSelectionType as subSelectionValue.

  5. If the subcategory features a nested subSelection member, optionally repeat the previous two steps until you have descended the tree to select the most appropriate pair of subSelectionType and subSelectionValue values.

  6. Push an object with the subSelectionType, subSelectionValue, and displayName values to an array.

  7. Optionally repeat if you want to assign more than one relevant subcategory to a support ticket.

Get Case Attributes

To create a new support ticket, this operation prompts for content you are expected to fill out. The response features various field names, expected data types, and enumerated values if appropriate.

GET /case-management/v2/categories/{categoryType}/case-attributes{?product,problem,area,service}

Example: /case-management/v2/categories/Technical/case-attributes?product=Alta&problem=Alerts&area=Company%20Registration&service=Address%20Change

Parameter Type Sample Description
Required
categoryType Enumeration Technical The top-level category assigned to the support ticket, either Billing, Business, Professional-Services, Security, or Technical.
Optional
area String Company Registration Filter results to subcategories whose subCategoryType is area, and where the parameter value matches the subCategoryValue.
problem String Alerts Filter results to subcategories whose subCategoryType is problem, and where the parameter value matches the subCategoryValue.
product String Alta Filter results to subcategories whose subCategoryType is product, and where the parameter value matches the subCategoryValue.
service String Address Change Filter results to subcategories whose subCategoryType is service, and where the parameter value matches the subCategoryValue.

Status 200 application/json

Response:

{
    "userDetail": {
        "userName": {
            "value": "Sample User",
            "uiControls": {
                "fieldType": "text",
                "displayName": "Name",
                "maxlength": 100,
                "isRequired": true,
                "isDisabled": false
            }
        },
        "userPhone": {
            "value": 12345467890,
            "uiControls": {
                "fieldType": "text",
                "displayName": "Phone Number",
                "maxlength": 40,
                "isRequired": true,
                "isDisabled": false
            }
        },
        "userEmail": {
            "value": "sample@email.com",
            "uiControls": {
                "fieldType": "text",
                "displayName": "Email",
                "maxlength": 80,
                "isRequired": true,
                "isDisabled": false
            }
        },
        "userCompany": {
            "value": "Sample Company",
            "uiControls": {
                "fieldType": "text",
                "displayName": "Company Name",
                "maxlength": 100,
                "isRequired": true,
                "isDisabled": true
            }
        }
    },
    "severity": {
        "answerOptions": [
            {
                "answerId": "1-Major Impact",
                "answerValue": "1-Major Impact"
            },
            {
                "answerId": "2-Major Impact",
                "answerValue": "2-Major Impact"
            },
            {
                "answerId": "3-Major Impact",
                "answerValue": "3-Major Impact"
            }
        ],
        "value": "1-Major Impact",
        "uiControls": {
            "fieldType": "dropdown",
            "displayName": "Severity",
            "isRequired": true,
            "isDisabled": false
        },
        "links": [
            {
                "href": "/case-management/v2/categories/{categoryType}/severity-definitions?product=product_1_id",
                "rel": "severity-definitions"
            },
            {
                "href": "/case-management/v2/categories/{categoryType}/response-time-frequency?product=product_1_id",
                "rel": "response-time-frequency"
            }
        ]
    },
    "subject": {
        "value": "",
        "uiControls": {
            "fieldType": "text",
            "displayName": "Subject",
            "maxlength": 100,
            "isRequired": true,
            "isDisabled": false
        }
    },
    "description": {
        "value": "",
        "uiControls": {
            "fieldType": "textarea",
            "displayName": "Description",
            "maxlength": 2000,
            "isRequired": true,
            "isDisabled": false,
            "rows": 25
        }
    },
    "additionalDetails": {
        "value": "",
        "uiControls": {
            "fieldType": "textarea",
            "displayName": "Additional Details",
            "maxlength": 2000,
            "isRequired": false,
            "isDisabled": false,
            "rows": 5
        }
    },
    "upload": {
        "value": "",
        "uiControls": {
            "fieldType": "file-upload",
            "displayName": "Upload File",
            "isRequired": false,
            "isDisabled": false,
            "maxSize": "5MB"
        }
    },
    "customer": {
        "answerOptions": [
            {
                "answerId": "c1",
                "answerValue": "Customer 1"
            },
            {
                "answerId": "c2",
                "answerValue": "Customer 2"
            },
            {
                "answerId": "c3",
                "answerValue": "Customer 3"
            },
            {
                "answerId": "c4",
                "answerValue": "Customer 4"
            }
        ],
        "value": "c1",
        "uiControls": {
            "fieldType": "dropdown",
            "displayName": "Customer",
            "isRequired": false,
            "isDisabled": false
        }
    },
    "partnerTicketNumber": {
        "value": "",
        "uiControls": {
            "fieldType": "text",
            "displayName": "Partner Ticket Number",
            "maxlength": 30,
            "isRequired": false,
            "isDisabled": false
        }
    },
    "endCustomerName": {
        "value": "",
        "uiControls": {
            "fieldType": "text",
            "displayName": "End Customer Name",
            "maxlength": 100,
            "isRequired": false,
            "isDisabled": false
        }
    },
    "customerTrackingNumber": {
        "value": "",
        "uiControls": {
            "fieldType": "text",
            "displayName": "Customer Tracking Number",
            "maxlength": 100,
            "isRequired": false,
            "isDisabled": false
        }
    },
    "links": [
        {
            "href": "/case-management/v2/questionnaires/100",
            "rel": "questionnaire"
        }
    ]
}

Run these steps to get relevant values to add when POSTing a new support ticket.

  1. Run the steps for the List Categories operation to store a relevant categoryType value.

  2. Optionally set the area, problem, product or service parameters to filter attributes to a relevant type of subcategory.

  3. Make a GET request to /case-management/v2/categories/{categoryType}/case-attributes{?area,problem,product,service}.

  4. The response object specifies various field names, such as subject and description, to include in the POST object when creating a new support ticket. Iterate over the keys and corresponding object for these fields and other fields in the nested userDetail object.

  5. For each object, optionally present the value as an interface prompt.

  6. For each object, optionally check the uiControls.fieldType for guidance on the expected data type.

  7. For each object, if an answerOptions array is present, it collects fixed or previously cached values. Optionally choose the appropriate answerValue from one of the objects.

  8. For the severity object, optionally navigate its links for more information on severity levels. Make a GET request on these to run the Get Severity Definitions and Get Response Times operations.

  9. To include optional questionnaire items in the new support ticket, make a GET request on the href for the top-level hypermedia links. Add a questionnaire member to the POST object based on the steps for the Get a Questionnaire operation.

Once you have iterated through the fields for each case attribute, your POST object should be filled with appropriate top-level values, and a userDetail object should capture information about the user to whom the support ticket applies. An optional questionnaire should capture relevant questions and their answers.

Get Severity Definitions

To provide guidance when creating a new ticket, this operation provides details on each severity level.

GET /case-management/v2/categories/{categoryType}/severity-definitions{?product}

Example: /case-management/v2/categories/Technical/severity-definitions?product=Alta

Parameter Type Sample Description
Required
categoryType Enumeration Technical The top-level category assigned to the support ticket, either Billing, Business, Professional-Services, Security, or Technical.
Optional
product String Alta Filter results to subcategories whose subCategoryType is area, and where the parameter value matches the subCategoryValue.

Status 200 application/json

Response:

[
    {
        "severityLevelType": "1-Critical",
        "description": "An existing network or environment is down or there is a critical impact to an End User’s business operation. There is no reasonable workaround currently available.",
        "escalationInstructions": "Open a ticket online in the Luna control center and optionally call +1-855-625-2624 (1-855-6-AKAMAI) or +1-617-444-4605",
        "standardResponseTime": "1 hour"
    },
    {
        "severityLevelType": "2-Major",
        "description": "Operation of customer’s existing network or environment is severely degraded or significant aspects of End User’s business operation are negatively impacted by unacceptable network or environment performance.",
        "escalationInstructions": "Open a ticket online in the Luna control center and optionally call +1-855-625-2624 (1-855-6-AKAMAI) or +1-617-444-4605",
        "standardResponseTime": "1 business hour"
    },
    {
        "severityLevelType": "3-Moderate",
        "description": "Operational performance of End User’s network or environment is impaired, although most business operations remain functional.",
        "escalationInstructions": "Open a ticket online in the Luna control center",
        "standardResponseTime": "1 business day"
    },
    {
        "severityLevelType": "4-Low",
        "description": "Cisco or an End User requires information or assistance on Software capabilities, installation, or configuration.",
        "escalationInstructions": "Open a ticket online in the Luna control center",
        "standardResponseTime": "2 business days"
    }
]

Run these steps when creating a new support ticket only to get information about the possible severity level.

  1. Run the steps for the List Categories operation to store a relevant categoryType value.

  2. Optionally set product to filter results relevant only to a specific product.

  3. Make a GET request to /case-management/v2/categories/{categoryType}/severity-definitions{?product}.

  4. From the response array, select the object whose severityLevelType matches the proposed severity you may assign. The description characterizes the type of problem, while the escalationInstructions suggests alternate ways to contact Akamai about the problem.

The response’s standardResponseTime offers an estimate for how long it takes to address the ticket, but you can run the Get Response Times operation for a more detailed estimate.

Get Response Times

To provide guidance when creating a new ticket, this operation provides estimates for response times for each severity level.

GET /case-management/v2/categories/{categoryType}/response-time-frequency{?product}

Example: /case-management/v2/categories/Technical/response-time-frequency?product=Alta

Parameter Type Sample Description
Required
categoryType Enumeration Technical The top-level category assigned to the support ticket, either Billing, Business, Professional-Services, Security, or Technical.
Optional
product String Alta Filter results to subcategories whose subCategoryType is area, and where the parameter value matches the subCategoryValue.

Status 200 application/json

Response:

{
    "responseTimeAndFrequencyDetails": [
        {
            "supportTypeDisplayName": "Premium & Premium 2.0",
            "interactionTypes": [
                {
                    "interactionType": "initialResponse",
                    "responseTimes": [
                        {
                            "severityLevelType": "1-Major",
                            "responseTime": "< 30 minutes"
                        },
                        {
                            "severityLevelType": "2-Moderate",
                            "responseTime": "< 60 minutes"
                        },
                        {
                            "severityLevelType": "3-Low",
                            "responseTime": "< 1 business day"
                        }
                    ]
                },
                {
                    "interactionType": "statusUpdates",
                    "responseTimes": [
                        {
                            "severityLevelType": "1-Major",
                            "responseTime": "Hourly"
                        },
                        {
                            "severityLevelType": "1-Moderate",
                            "responseTime": "Daily"
                        },
                        {
                            "severityLevelType": "3-Low",
                            "responseTime": "Daily"
                        }
                    ]
                }
            ]
        },
        {
            "supportTypeDisplayName": "Named Enhanced Support",
            "interactionTypes": [
                {
                    "interactionType": "initialResponse",
                    "responseTimes": [
                        {
                            "severityLevelType": "1-Major",
                            "responseTime": "< 30 minutes"
                        },
                        {
                            "severityLevelType": "1-Moderate",
                            "responseTime": "< 2 hours"
                        },
                        {
                            "severityLevelType": "3-Low",
                            "responseTime": "< 1 business day"
                        }
                    ]
                },
                {
                    "interactionType": "statusUpdates",
                    "responseTimes": [
                        {
                            "severityLevelType": "1-Major",
                            "responseTime": " - "
                        },
                        {
                            "severityLevelType": "1-Moderate",
                            "responseTime": " - "
                        },
                        {
                            "severityLevelType": "3-Low",
                            "responseTime": " - "
                        }
                    ]
                }
            ]
        },
        {
            "supportTypeDisplayName": "Priority with Enhanced SLA",
            "interactionTypes": [
                {
                    "interactionType": "initialResponse",
                    "responseTimes": [
                        {
                            "severityLevelType": "1-Major",
                            "responseTime": "< 30 minutes"
                        },
                        {
                            "severityLevelType": "1-Moderate",
                            "responseTime": "< 2 hours"
                        },
                        {
                            "severityLevelType": "3-Low",
                            "responseTime": "< 1 business day"
                        }
                    ]
                },
                {
                    "interactionType": "statusUpdates",
                    "responseTimes": [
                        {
                            "severityLevelType": "1-Major",
                            "responseTime": "< 4 hours"
                        },
                        {
                            "severityLevelType": "1-Moderate",
                            "responseTime": "Daily"
                        },
                        {
                            "severityLevelType": "3-Low",
                            "responseTime": "Daily"
                        }
                    ]
                }
            ]
        },
        {
            "supportTypeDisplayName": "Priority",
            "interactionTypes": [
                {
                    "interactionType": "initialResponse",
                    "responseTimes": [
                        {
                            "severityLevelType": "1-Major",
                            "responseTime": "< 1 hour"
                        },
                        {
                            "severityLevelType": "1-Moderate",
                            "responseTime": "< 2 hours"
                        },
                        {
                            "severityLevelType": "3-Low",
                            "responseTime": "< 1 business day"
                        }
                    ]
                },
                {
                    "interactionType": "statusUpdates",
                    "responseTimes": [
                        {
                            "severityLevelType": "1-Major",
                            "responseTime": "4 hours"
                        },
                        {
                            "severityLevelType": "1-Moderate",
                            "responseTime": "Daily"
                        },
                        {
                            "severityLevelType": "3-Low",
                            "responseTime": "Daily"
                        }
                    ]
                }
            ]
        },
        {
            "supportTypeDisplayName": "Standard with Enhanced SLA",
            "interactionTypes": [
                {
                    "interactionType": "initialResponse",
                    "responseTimes": [
                        {
                            "severityLevelType": "1-Major",
                            "responseTime": "< 30 minutes"
                        },
                        {
                            "severityLevelType": "1-Moderate",
                            "responseTime": "< 2 hours"
                        },
                        {
                            "severityLevelType": "3-Low",
                            "responseTime": "< 1 business day"
                        }
                    ]
                },
                {
                    "interactionType": "statusUpdates",
                    "responseTimes": [
                        {
                            "severityLevelType": "1-Major",
                            "responseTime": " - "
                        },
                        {
                            "severityLevelType": "1-Moderate",
                            "responseTime": " - "
                        },
                        {
                            "severityLevelType": "3-Low",
                            "responseTime": " - "
                        }
                    ]
                }
            ]
        },
        {
            "supportTypeDisplayName": "Standard",
            "interactionTypes": [
                {
                    "interactionType": "initialResponse",
                    "responseTimes": [
                        {
                            "severityLevelType": "1-Major",
                            "responseTime": "< 2 hours"
                        },
                        {
                            "severityLevelType": "1-Moderate",
                            "responseTime": "< 4 hours"
                        },
                        {
                            "severityLevelType": "3-Low",
                            "responseTime": "< 2 business days"
                        }
                    ]
                },
                {
                    "interactionType": "statusUpdates",
                    "responseTimes": [
                        {
                            "severityLevelType": "1-Major",
                            "responseTime": " - "
                        },
                        {
                            "severityLevelType": "1-Moderate",
                            "responseTime": " - "
                        },
                        {
                            "severityLevelType": "3-Low",
                            "responseTime": " - "
                        }
                    ]
                }
            ]
        }
    ],
    "additionalInformation": [
        "Initial Response = First communication from Akamai personnel to customer by phone or email",
        "Status Updates = Any subsequent Akamai communication to customer by phone or email",
        "* This 1-Major Impact SLA is applicable only when the issue is opened via phone"
    ]
}

Run these steps when creating a new support ticket only to get information about the possible severity level.

  1. Run the steps for the List Categories operation to store a relevant categoryType value.

  2. Optionally set product to filter results relevant only to a specific product.

  3. Make a GET request to /case-management/v2/categories/{categoryType}/response-time-frequency{?product}.

  4. From the response’s responseTimeAndFrequencyDetails array, select the appropriate type of support object based on the supportTypeDisplayName.

  5. From the support object’s interactionTypes array, choose the interaction with the most appropriate interactionType, either initialResponse or statusUpdates.

  6. From the responseTimes array, choose the most appropriate severityLevelType to consider when posting a severity level for a new ticket. The responseTime provides an estimated time, expressed as plain text.

Get a Questionnaire

Provides a series of questions and answers relevant to the case category, for use in creating a new ticket.

GET /case-management/v2/questionnaires/{questionnaireId}

Example: /case-management/v2/questionnaires/100

Parameter Type Sample Description
Required
questionnaireId String 100 Unique identifier for a questionnaire.

Status 200 application/json

Response:

{
    "questionnaireId": 100,
    "questions": [
        {
            "questionId": 670,
            "questionText": "Question for Id 670",
            "helpText": "Help text for 670",
            "uiControls": {
                "fieldType": "Date",
                "isRequired": true,
                "isDisabled": false,
                "isClearable": true
            },
            "currentAnswers": [ "answer for question 670" ]
        },
        {
            "questionId": 671,
            "questionText": "Question for id 671",
            "helpText": "Help text for id 671",
            "uiControls": {
                "fieldType": "MultiSelect",
                "isRequired": true,
                "isDisabled": false,
                "isClearable": true
            },
            "answerOptions": [
                {
                    "answerId": 986,
                    "answerValue": "Akamai Site Analyzer",
                    "dependentQuestions": [
                        {
                            "questionId": 672,
                            "questionText": "Question for Id 672",
                            "helpText": "Help text for 672",
                            "uiControls": {
                                "fieldType": "Date",
                                "isRequired": true,
                                "isDisabled": false
                            },
                            "currentAnswers": [ "answer for question 672" ]
                        },
                        {
                            "questionId": 673,
                            "questionText": "Question for Id 673",
                            "helpText": "Help text for 673",
                            "uiControls": {
                                "fieldType": "Date",
                                "isRequired": true,
                                "isDisabled": false
                            },
                            "currentAnswers": [ "answer for question 673" ]
                        }
                    ]
                },
                {
                    "answerId": 987,
                    "answerValue": "Gomez",
                    "dependentQuestions": []
                },
                {
                    "answerId": 988,
                    "answerValue": "In-house monitoring",
                    "dependentQuestions": []
                },
                {
                    "answerId": 989,
                    "answerValue": "Keynote",
                    "dependentQuestions": []
                }
            ],
            "currentAnswers": [ "986" ]
        }
    ]
}

These steps produce a questionnaire object suitable to include within the POST request for a new support ticket. You run this operation based on a hypermedia link embedded within the response object for the Get Case Attributes operation. The required questionnaireId necessary to access the /case-management/v2/questionnaires/{questionnaireId} resource is available only within this category-specific context.

  1. Make a GET request on the supplied href link.

  2. Store the response’s questionnaireId in a questionnaire object.

  3. For each item in the questions array, evaluate the questionText and helpText. If the question is relevant, store the questionId, otherwise skip to the next question.

  4. Check the uiControls.fieldType for the answer’s expected data type.

  5. Iterate over any available answerOptions array within the question, and optionally pust its answerValue to a currentAnswers array. Otherwise push another value based on the data type.

  6. Store the questionId string and the currentAnswers array in an object, and push the object to the questionnaire object’s questions array.

  7. Within an answerOptions item, optionally answer any series of nested dependentQuestions as described above. These questions are relevant only to the answerOptions item.

After running these steps, the questionnaire object should be ready to include in a larger POST object that creates a new support ticket.

Create a New Case

Create a new support ticket based on a chosen category and set of subcategories.

POST /case-management/v2/cases/

Example: /case-management/v2/cases/

Request:

{
    "questionnaire": {
        "questionnaireId": "100",
        "questions": [
            {
                "questionId": "670",
                "currentAnswers": [ "2015-11-29T11:58:53.273Z" ]
            },
            {
                "questionId": "671",
                "currentAnswers": [ "986" ]
            }
        ]
    },
    "userDetail": {
        "userName": "Customer name",
        "userPhone": "080398137489",
        "userEmail": "acn@akamai.com",
        "userCompany": "Software"
    },
    "severity": "1-Major Impact",
    "subject": "Subject",
    "description": "Test Description",
    "customer": "telefilm",
    "customerTrackingNumber": "TRACK-FSDJW452",
    "endCustomerName": "Customer 1",
    "partnerTicketNumber": "SDG232ASD23",
    "categoryType": "Technical",
    "doNotShowInPortalFlag": false,
    "subCategories": [
        {
            "displayName": "Product",
            "subCategoryType": "product",
            "subCategoryValue": "Alta"
        },
        {
            "displayName": "Problem",
            "subCategoryType": "problem",
            "subCategoryValue": "Alerts"
        }
    ]
}

Status 200 application/json

Response:

{
    "success": true,
    "caseId": "F-CS-1778108",
    "details": [
        {
            "type": "diagnostic-url",
            "url": "http://www.ipdiagnostics.com/request.action?client=akamai&case=F-CS-1778108&URL=https://www.foo.com/d "
        }
    ],
    "message": "Case has been successfully created with Case Id  F-CS-1778108"
}

  1. Run the List Categories operation and store the relevant categoryType.

  2. Create a POST object, assigning the categoryType to the top level.

  3. Run the Get Subcategories operation and follow the operations to build an array of objects featuring subCategoryType, subCategoryValue, and displayName members. Place this array in the POST object’s subCategories.

  4. Run Get Case Attributes to prepare new data for the POST object. In addition to top-level data, it should also feature data about the user within a userDetail object.

  5. Based on the hypermedia link embedded in the CaseAttributes response object, optionally run Get a Questionnaire to answer questions relevant to the support ticket’s top-level category.

  6. Optionally run Get Severity Definitions for help in clarifying severity levels.

  7. Optionally run Get Response Times for help in estimating how long a response will take.

  8. POST the object to /case-management/v2/cases/.

  9. From the successful response object, optionally store the caseId that identifies the new support ticket.

List Cases

This operation lists support tickets and allows you to filter the results.

GET /case-management/v2/cases/{?type}

Example: /case-management/v2/cases/?type=user-active

Parameter Type Sample Description
Required
type Enumeration user-active Filter tickets, either user-active or user-closed for the user filing the ticket, company-active or company-closed for cases associated with the API token’s account, or unfiltered all by default.

Status 200 application/json

Response:

[
    {
        "caseId": "F-CS-1013252",
        "subject": "[Managedsecurity] Customers Westpac and NAB cannot view open cases - support service not included in the contract under Luna",
        "categoryType": "Business",
        "status": "Unassigned",
        "createdDate": "2016-02-29T14:15:40+0000",
        "modifiedDate": "2016-02-29T14:15:40+0000",
        "assignedTo": "In Queue",
        "customer": "netflex",
        "links": [
            {
                "rel": "self",
                "href": "/case-management/v2/cases/F-CS-1013252"
            }
        ]
    },
    {
        "caseId": "F-CS-1152565",
        "subject": "Re: [Managedsecurity] Attack targeting power account DataCenter",
        "categoryType": "Technical",
        "status": "Unassigned",
        "createdDate": "2016-02-29T14:15:40+0000",
        "modifiedDate": "2016-02-29T14:15:40+0000",
        "assignedTo": "PS_Americas_Security_SMP",
        "customer": "netflex",
        "links": [
            {
                "rel": "self",
                "href": "/case-management/v2/cases/F-CS-1152565"
            }
        ]
    }
]

  1. Optionally choose a type of case on which to filter: company-active or company-closed for account-wide tickets, otherwise user-active or user-closed for tickets associated with the API token.

  2. Make a GET request to /case-management/v2/cases/{?type}.

From the resulting response array, choose a Case.ticketInfo object whose subject matches the appropriate support ticket. To access details about the case, store its caseId and run the Get a Case operation, or else navigate directly to the hypermedia link.

Get a Case

This retrieves the complete details about a specific case.

GET /case-management/v2/cases/{caseId}

Example: /case-management/v2/cases/F-CS–1013252

Parameter Type Sample Description
Required
caseId String F-CS-1013252 Unique identifier for the support ticket.

Status 200 application/json

Response:

{
    "ticketInfo": {
        "caseId": "F-CS-1455428",
        "subject": "testing",
        "description": "testing",
        "status": "Unassigned",
        "severity": "3-Low Impact",
        "assignedTo": "In Queue",
        "categoryType": "Technical",
        "createdDate": "2016-02-29T14:15:40+0000",
        "modifiedDate": "2016-03-09T08:57:13+0000",
        "customer": "netflix",
        "externalSystemNumber": "AD-1432",
        "geoLinkId": "1-HGAJ",
        "partnerTicketNumber": "ADYH-1272",
        "endCustomerName": "a-netflix",
        "nextStepExternal": "NA",
        "customerTrackingNumber": "AFYGJA-125412",
        "submittedBy": "Rupernita Sahoo",
        "subCategories": [
            {
                "displayName": "Product",
                "subCategoryType": "product",
                "subCategoryValue": "Download Delivery"
            },
            {
                "displayName": "Problem",
                "subCategoryType": "problem",
                "subCategoryValue": "Certificates"
            }
        ]
    },
    "permissions": {
        "requestClose": true,
        "uploadFile": true,
        "addNote": true
    },
    "userDetail": {
        "userCompany": "Akamai Technologies - Assets",
        "userEmail": "rsahoo@nomail-akamai.com",
        "userPhone": "617.475.5661",
        "userName": "Rupernita Sahoo"
    },
    "solution": {
        "solutionSubject": "testing",
        "investigation": "Entry is missing",
        "resolution": "Provide the access"
    },
    "caseMilestones": [
        {
            "caseMilestoneId": "created",
            "caseMilestoneDate": "2016-02-29T14:15:48+0000"
        },
        {
            "caseMilestoneId": "assigned",
            "caseMilestoneDate": "2016-02-29T14:15:48+0000"
        },
        {
            "caseMilestoneId": "initialResponse",
            "caseMilestoneDate": "2016-03-09T08:57:12+0000"
        },
        {
            "caseMilestoneId": "inProgress",
            "caseMilestoneDate": "2016-02-29T14:15:48+0000"
        },
        {
            "caseMilestoneId": "pending",
            "caseMilestoneDate": "2016-02-29T14:15:48+0000"
        },
        {
            "caseMilestoneId": "closed",
            "caseMilestoneDate": "2016-02-29T14:15:48+0000"
        }
    ],
    "activities": [
        {
            "activitySubject": "Web Update",
            "activityDescription": "On Jay request",
            "activityType": "webUpdate",
            "activityCreatedDate": "2016-03-09T08:57:11+0000",
            "fileName": "screen.jpg",
            "activityCreatedBy": "Luna Case Mgmt",
            "links": []
        },
        {
            "activitySubject": "AddFile",
            "activityDescription": "AddFile",
            "activityType": "attachment",
            "activityCreatedDate": "2016-03-09T08:57:11+0000",
            "fileName": "file.txt",
            "activityCreatedBy": "Luna Case Mgmt",
            "links": [
                {
                    "href": "/case-management/v2/cases/F-CS-1413014/files/123456",
                    "rel": "file"
                }
            ]
        }
    ]
}

  1. Run the List Cases operation and select the appropriate object from the response array. Either navigate directly to the embedded hypermedia link, or store the caseId.

  2. If storing the caseId value, make a GET request to /case-management/v2/cases/{caseId}.

Add a Note

Once a support ticket has been created, this operation adds follow-up comments, which are reflected in the Case object’s activities array.

POST /case-management/v2/cases/{caseId}/notes

Example: /case-management/v2/cases/F-CS–1013252/notes

Request:

{ "comment": "Adding note" }

Parameter Type Sample Description
Required
caseId String F-CS-1013252 Unique identifier for the support ticket.

Status 200 application/json

Response:

{
    "caseId": "F-CS-1203600",
    "statusMessage": "Ticket has been successfully updated with notes",
    "links": [
        {
            "href": "/case-management/v2/cases/F-CS-1203600",
            "rel": "parent"
        }
    ]
}

  1. If you do not already have a relevant caseId value, run the List Cases operation, select the appropriate object from the response array, and store the caseId.

  2. Create a simple request object featuring a single comment member and accompanying text. For example: {"comment":"This is the comment."}

  3. POST the object to /case-management/v2/cases/{caseId}/notes.

Close a Case

This operation requests to close a ticket, without directly closing it.

POST /case-management/v2/cases/{caseId}/close-request

Example: /case-management/v2/cases/F-CS–1013252/close-request

Request:

{ "comment": "Request to close a ticket." }

Parameter Type Sample Description
Required
caseId String F-CS-1013252 Unique identifier for the support ticket.

Status 200 application/json

Response:

{
    "caseId": "F-CS-1203600",
    "statusMessage": "Ticket has been successfully updated with notes",
    "links": [
        {
            "href": "/case-management/v2/cases/F-CS-1203600",
            "rel": "parent"
        }
    ]
}

  1. If you do not already have a relevant caseId value, run the List Cases operation, select the appropriate object from the response array, and store the caseId.

  2. Create a simple request object featuring a single comment member and accompanying text. For example: {"comment":"please close the ticket."}

  3. POST the comment object to /case-management/v2/cases/{caseId}/close-request.

Upload a File

Once a support ticket has been created, this operation adds a file attachment and comment to it, which are reflected in the Case object’s activities array.

POST /case-management/v2/cases/{caseId}/files

Example: /case-management/v2/cases/F-CS–1013252/files

URL Parameters:

Parameter Type Sample Description
Required URL Parameters
caseId String F-CS-1013252 Unique identifier for the support ticket.
Required Form Parameters
file File N/A The file to be uploaded.
Optional Form Parameters
comment String Adding logs Any additional information.

Status 200 application/json

Response:

{
    "caseId": "F-CS-1203600",
    "statusMessage": "Ticket has been successfully updated with notes",
    "links": [
        {
            "href": "/case-management/v2/cases/F-CS-1203600",
            "rel": "parent"
        }
    ]
}

  1. If you do not already have a relevant caseId value, run the List Cases operation, select the appropriate object from the response array, and store the caseId.

  2. Create a simple request object featuring a single comment member and accompanying text. For example: {"comment":"Description of file."}

  3. Encode the file if it is in a binary format.

  4. Form a multipart/form-data string, using a unique separator to delimit each part. The data needs to incorporate the comment object typed as application/json, and the file upload string using its appropriate MIME type.

  5. POST the multipart/form-data typed string to /case-management/v2/cases/{caseId}/files.

  6. From the successful response object, optionally store the hypermedia link to download the file later.

Download a File

This operation downloads any file attached to a support ticket.

GET /case-management/v2/cases/{caseId}/files/{fileId}

Example: /case-management/v2/cases/F-CS–1013252/files/00Pm0000009XDiiEAG

Parameter Type Sample Description
Required
caseId String F-CS-1013252 Unique identifier for the support ticket.
fileId String 00Pm0000009XDiiEAG Unique identifier for the file attachment.

Status 200 application/json

Response:

4944 3302 0000 0000 1030 3230 3134 0000
0826 0000 1000 656e 6769 5475 6e50 4741
5000 3000 0054 454e 0000 0f00 6954 756e
6573 2076 372e 342e 3200 434f 4d00 0068
0065 6e67 6954 756e 4e4f 524d 0020 3030
3030 3032 3735 2030 3030 3030 3239 4320
3030 3030 3433 3334 2030 3030 3034 3138
3020 3030 3032 3539 4131 2030 3030 3235
3941 3120 3030 3030 3737 4242 2030 3030
3036 4243 3520 3030 3031 4538 3738 2030
3030 3145 3830 4600 434f 4d00 0082 0065
6e67 6954 756e 534d 5042 0020 3030 3030
3030 3030 2030 3030 3030 3231 3020 3030
3030 3039 3446 2030 3030 3030 3030 3030
3037 3237 4132 3120 3030 3030 3030 3030
2030 3033 4533 4638 3320 3030 3030 3030
3030 2030 3030 3030 3030 3020 3030 3030

Ideally, when running the Upload a File operation, you should store the resulting hypermedia link to later access the file. Otherwise follow these steps if you don’t have that information.

  1. If you do not already have a relevant caseId value, run the List Cases operation, select the appropriate object from the response array, and store the caseId.

  2. Run the Get a Case operation by making a GET request to /case-management/v2/cases/{caseId}.

  3. Filter the response Case object’s activities array to include objects whose activityType is attachment.

  4. Select the activity whose fileName or activityCreatedDate is most appropriate.

  5. Make a GET request on the embedded hypermedia link. This corresponds to this URL template, for which there is no direct need to store the fileId value: /case-management/v2/cases/{caseId}/files/{fileId}.


Last modified: 1/17/2017