Introduction

This is the reference document for the REST API and resources provided by Spider Incident. The REST APIs are for developers who want to integrate Spider Incident with other standalone or web applications.

Structure of the REST URIs

The REST API provide access to resources via URI paths. To use the REST API, a HTTP request has to be made and the response need to be parsed.

The REST API supports JSON as data format and the standard HTTP methods like GET, PUT, POST and DELETE.

URIs for the REST API have the following structure:
http://host.port/operationsmanager/rest/api/1/incident/model-namespace/resource-name
e.g.
http://demo.myserver.com:8080/operationsmanager/rest/api/1/incident/myhelpdesk/ticket/20140425131126000

Authentication

The REST API support two types of authentication: HTTP Basic access authentication and HttpSession (Cookie) based authentication. The prefered way is HTTP Basic (with SSL). To use HttpSession based authentication, first a valid HttpSession has to be established via the login page in a browser. It is then possible to call any REST resources e.g. via Javascript.

Output Formats

The REST API supports the response in the format: JSON.

Resources

The REST API allows you to manage tickets, messages and contacts.

REST API: Ticket

URI: /rest/api/1/incident/{model-namespace}/ticket

Http Method: POST /ticket

Create a new Ticket based on the submitted data.

Authentication

  • Support-Team member
  • Incident Manager

Parameters

No parameters.

Possible HTTP Status codes

  • 201: Ticket was created successfully
  • 400: Input is invalid. e.g. missing required fields, invalid field values
  • 401: User is not authenticated
  • 403: User is not allowed to create a Ticket

Request Data

The minimum required request data is:

NameDescriptionRequiredType
 name The subject of the ticket Yes String
 message content The content of the first message Yes String
 contact email/phone A contact with email and/or phone Yes String

Response
The URI of the newly created ticket.

Example
curl -D- -u john:secret123 -X POST --data "@newticket.json" -H "Content-Type: application/json" http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/ticket

JSON data

{ "name": "Test Ticket from REST Client.", "category": { "name" : "cat 1" }, "costCenter": { "name" : "cc 1" }, "classification": "REQUEST_FOR_CHANGE", "priority": "HIGH", "impact": "MEDIUM", "deadline": "2013-04-05T11:32:30.862+0200", "serviceLevelName": "SL 1", "queue": "1st Level Support", "affectedItemType": "SPIDER_ASSET", "affectedItemId": "AFF-ID-123", "issue": ["INC-123", "OPM-456"], "effort": 12, "extendedAttributes": { "extendedAttribute": [{ "key": "SAP Nr.", "value": { "value": "SAP-123456" } }, { "key": "Already migrated?", "value": { "value": "true" } }, { "key": "OperatingSystem", "value": { "value": "Windows 8" } }, { "key": "Migrationdate", "value": { "value": "2013-03-01T00:00:00.000+0100" } }] }, "messages": [{ "content": "This is a text ticket created from the REST client." }], "contacts": [{ "fullName": "Nice Customer", "emailAddress": [ "customer@example.com" ] }] }
Http Method: PUT /ticket

Updates fields of a Ticket for the given Ticket ID by the json representation. This makes it possible to update e.g. only some fields or all fields, depending on the submitted json.

These fields can be edited/updated:

  • category
  • costCenter
  • classification
  • priority
  • impact
  • serviceLevelName
  • deadline
  • name
  • affectedItemType
  • affectedItemId
  • issue
  • kbId
  • reviewOption
  • extendedAttributes

Authentication

  • Support-Team member
  • Incident Manager

Parameters

No parameters.

Possible HTTP Status codes

  • 201: Ticket was updated successfully
  • 400: Input is invalid. e.g. missing required fields, invalid field values
  • 401: User is not authenticated
  • 403: User is not allowed to update a Ticket

Response
No response.

Example
curl -D- -u john:secret123 -X PUT --data "@updateticket.json" -H "Content-Type: application/json" http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/ticket/20130304102248000

JSON data

{ "name": "Test Ticket from REST Client updated", "category": { "name": "Some Category" }, "costCenter": { "name": "Some CostCenter" }, "classification": "REQUEST_FOR_CHANGE", "priority": "HIGH", "impact": "MEDIUM", "deadline": "2014-04-05T11:32:30.862+0200", "serviceLevelName": "SL 1", "affectedItemType": "SPIDER_ASSET", "affectedItemId": "AFF-ID-123", "issue": ["INC-123", "OPM-456"], "extendedAttributes": { "extendedAttribute": [{ "key": "SAP Nr.", "value": { "value": "SAP-123456" } }] } }
Http Method: GET /ticket/{ticketId}

Returns a full representation of the Ticket for the given Ticket ID.

Authentication

  • Support-Team member
  • Incident Manager
  • Report Viewer
  • Priority Monitor Viewer

Parameters

No parameters.

Possible HTTP Status codes

  • 200: Request was successful
  • 401: User is not authenticated
  • 403: User does not have permission to view it.
  • 404: Ticket was not found

Response Data

NameDescriptionTypeExample Value
 id The id of the Ticket String 20140425131126000
 uuid The unique uuid of the Ticket String 515bfd16-f765-4099-bbbc-e73bf0dae19c
 name The subject of the Ticket String Some Subject
 creationDate The date when this Ticket was created.  ISO-8601 compliant notation 2013-03-21T11:18:34.000+0000
 updateDate The date when this Ticket was updated the last time.  ISO-8601 compliant notation 2013-03-21T11:18:34.000+0000
 category Category name where this Ticket is linked to. String 
 costCenter CostCenter name where this Ticket is linked to. String 
 classification The classification of this Ticket String 
 priority The priority of this Ticket  String LOW
 impact The impact of this Ticket  String LOW
 state The state of this Ticket  String UNCONFIRMED
 processingState The processing (technical) state of this Ticket  String OPEN_NOT_STARTED
 queue The name of the ticket queue where this Ticket is linked to.  String 1st Level Support
 effort The effort of the Ticket  Number 15
 assignedAgent The assigned agent of this ticket. If there is no agent assigned, this can also be a ticket queue.  String John Doe
 involvedAgent A list of involved agents who did work on this ticket.  String John Doe
 messages A list of messages for this Ticket. 
 contacts A list of contacts for this Ticket. 
 url The URL to read this Ticket in a web browser.  Stringhttp://example.com:8080/operationsmanager/faces/incident/helpdesk1/ticket/20140425131126000
Example
curl -D- -u john:secret123 -X GET -H "Content-Type: application/json" http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/ticket/20130304102248000

Response Body

{ "id": "20130304102248000", "uuid": "515bfd16-f765-4099-bbbc-e73bf0dae19c", "name": "Sample Ticket", "creationDate": "2013-03-04T10:22:48.051+0100", "category": { "name" : "Hardware" }, "costCenter": { "name" : "Sales" }, "classification": "INCIDENT", "priority": "MEDIUM", "impact": "MEDIUM", "deadline": "2013-03-31T10:21:00+0200", "serviceLevelName": "LOW(5x8h 8/40)", "state": "UNCONFIRMED", "processingState": "WAITING TO BE PROCESSED", "queue": "1st Level Support", "affectedItemType": "SPIDER_ASSET", "affectedItemId": "AS-4567", "issue": "CNC-123", "effort": "15", "updateDate": "2013-03-04T10:22:48.861+0100", "assignedAgent": "1st Level Support", "involvedAgent": "John Doe (john)", "url": "http://example.com:8080/operationsmanager/app?service=external&page=chbwwfincident4_0queryticket%3AViewTicketExternal&ticketUuid=515bfd16-f765-4099-bbbc-e73bf0dae19c", "messages": { "subject": "Sample Ticket", "from": "Nice Customer <customer@example.com>", "creationDate": "2013-03-04T10:22:48.051+0100", "content": "This is a sample description." }, "contacts": { "uuid": "dd7eee51-2379-4067-b7ce-1fcbdef24bc4", "salutation": "MR", "firstName": "Nice", "name": "Customer", "fullName": "Nice Customer", "emailAddress": [ "customer@example.com" ], "phoneNumber": [ "555 55 55" ], "loginName": "customer", "location": "Customerstreet 55", "organisation": "Nice Customer Inc.", "costCenter": "Sales" } }
Http Method: DELETE /ticket/{ticketId}

Deletes a Ticket based on the ticket ID.

Authentication

  • IncidentManager

Parameters

No parameters.

Possible HTTP Status codes

  • 204: If the Ticket was deleted successfully
  • 401: If the user is not authenticated
  • 403: If the user does not have permissions to delete this Ticket
  • 404: If the Ticket was not found
Example
curl -D- -u john:secret123 -X DELETE http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/ticket/20130301150443001

REST API: Tickets

URI: /rest/api/1/incident/{model-namespace}/tickets

Http Method: GET /tickets

Returns a list of Tickets that match the search string.

Note
By default, the messages are completely skipped. The contact contains only minimized information (fullname and uuid).
To get the full ticket, a secont request /ticket/{ticketId} is required.
To get the full contact, a secound request /contact/{contactUuid} is required.

Authentication

  • Support-Team member
  • Incident Manager
  • Report Viewer
  • Priority Monitor Viewer

Query Parameters

NameDescriptionRequiredTypeExample Value
 lucene A lucene query string used to search for Tickets No String ticket_priority:(HIGH)
 startAt The index of the first Ticket to return (0-based). must be 0 or a multiple of maxResults  No int Default: 0
 maxResults The maximum number of Tickets to return. The maximum allowed value is 1000. If you specify a value that is higher than this number, your search results will be truncated.  No int Default: 50
 orderBy The orderBy can be used to sort the result by a Ticket field. No String Default: ticket_id (descending)
 sortBy The sorting order. Default is desc (descending).  No String Default: desc, Possible values: asc, desc
 expand If set to true, all returned Tickets are expanded and contain the same data as when fetching a single Ticket  No boolean Default: false

Possible HTTP Status codes

  • 200: Request was successful
  • 401: User is not authenticated
  • 403: User does not have permission to view it.
  • 404: Tickets not found, e.g. wrong wfm namespace.

Response Data

Response data for the tickets, see GET /ticket.

NameDescriptionType
 startAt The index of the first Ticket  int
 maxResults The maximum number of Tickets to return.  int
 total The total number of found Tickets.  int
Example
curl -D- -u john:secret123 -X GET -H "Content-Type: application/json" http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/tickets?lucene=(ticket_queueId:(131073))

Response Body

{ "startAt": "0", "maxResults": "50", "total": "2", "ticket": [{ "id": "20130304102248000", "uuid": "515bfd16-f765-4099-bbbc-e73bf0dae19c", "name": "Sample Ticket", "creationDate": "2013-03-04T10:22:48.051+0100", ... "url": "http://example.com:8080/operationsmanager/app?service=external&page=chbwwfincident4_0queryticket%3AViewTicketExternal&ticketUuid=515bfd16-f765-4099-bbbc-e73bf0dae19c", "contacts": { "Uuid": "dd7eee51-2379-4067-b7ce-1fcbdef24bc4", "FullName": "Nice Customer" } }, { "id": "20130304133935000", "uuid": "e3f3e6d5-70d3-403e-a431-019bd8ad0ef9", "name": "Another Test Ticket", "creationDate": "2013-03-04T13:39:35.723+0100", ... "url": "http://example.com:8080/operationsmanager/app?service=external&page=chbwwfincident4_0queryticket%3AViewTicketExternal&ticketUuid=e3f3e6d5-70d3-403e-a431-019bd8ad0ef9", "contacts": { "Uuid": "f337c6ec-4394-45d1-bb9f-570085908054", "FullName": "Jim Knopf" } }] }

REST API: Close Ticket

URI: /rest/api/1/incident/{model-namespace}/ticket{ticketId}/close

Http Method: POST /ticket{ticketId}/close

Closes an existing, open Ticket.

Authentication

  • Support-Team member

Parameters

No parameters.

Possible HTTP Status codes

  • 204: Ticket was closed successfully
  • 400: Input is invalid. e.g. missing required fields, invalid field values
  • 401: User is not authenticated
  • 403: User is not allowed to close the Ticket

Request Data

The request data is:

NameDescriptionRequiredType
 subject The subject of the Closing Note Yes String
 content The content of the Closing Note Yes String
 resolution The resolution Yes String, Possible resolutions are: FIXED, INFO, LATER, DUPLICATE, WORKSFORME, INVALID, WONTFIX, REPLACED, ANSWERED, CONFIGURED, RECONFIGURED, INSTALLED, REINSTALLED, MALOPERATION, CREATED, CHANGED, DELETED, DONE, OBSOLETE
 effort The effort  Yes  int, greater than 0.
 publicMessage  If true, the message is visible for the contact  No, default is false  boolean: true, false
 notifyCustomerOnResolve  If true, the contact receives a notification e-mail  No  false  boolean: true, false
Example
curl -D- -u john:secret123 -X POST --data "@closeticket.json" -H "Content-Type: application/json" "http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/ticket/20130304133935000/close"

JSON data

{ "subject": "This is a closing note created from the REST client.", "content": "This is some <b>html</b> content.", "resolution": "FIXED", "effort": 10, "publicMessage": true, "notifyCustomerOnResolve": true }

REST API: Note

URI: /rest/api/1/incident/{model-namespace}/ticket{ticketId}/note

Http Method: POST /ticket{ticketId}/note

Add a new note to an existing Ticket.

Authentication

  • Support-Team member

Parameters

No parameters.

Possible HTTP Status codes

  • 200: Note was added successfully
  • 400: Input is invalid. e.g. missing required fields, invalid field values
  • 401: User is not authenticated
  • 403: User is not allowed to add a Note

Request Data

The request data is:

NameDescriptionRequiredType
 subject The subject of the Note Yes String
 content The content of the Note Yes String
 from The creator of the Note Yes String
 effort The effort Yes int, greater than 0
 publicMessage  If true, the message is visible for the contact  No, default is false  boolean: true, false
Example
curl -D- -u john:secret123 -X POST --data "@addnote.json" -H "Content-Type: application/json" "http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/ticket/20130304133935000/note"

JSON data

{ "subject": "This is a note created from the REST client.", "content": "This is some <b>html</b> content.", "from": "Jim Knopf <jim@example.com>", "effort": 12, "publicMessage": true }

REST API: Contact

URI: /rest/api/1/incident/{model-namespace}/contact

Http Method: POST /contact

Create a new Contact based on the submitted data.

Authentication

  • Support-Team member
  • Incident Manager

Parameters

No parameters.

Possible HTTP Status codes

  • 201: Contact was created successfully
  • 400: Input is invalid. e.g. missing required fields, invalid field values
  • 401: User is not authenticated
  • 403: User is not allowed to create a Contact

Request Data

The minimum required request data is:

E-Mail or Phone.

Response
The URI of the newly created contact.

Example
curl -D- -u john:secret123 -X POST --data "@newcontact.json" -H "Content-Type: application/json" http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/contact

JSON data

{ "firstName": "John", "name": "Doe", "fullName": "John Doe", "loginName": "john.doe", "organisation": "My Company", "emailAddress": [ "john.doe@mycompany.com" ], "extendedAttributes": { "extendedAttribute": [{ "key": "EmployeeId", "value": { "value": "99999999 2" } }] } }
Http Method: PUT /contact/{contactUuid}

Updates fields of a Contact for the given Contact UUD by the json representation. This makes it possible to update e.g. only some fields or all fields, depending on the submitted json.

These fields can be edited/updated:

  • salutation
  • firstName
  • name
  • fullName
  • eMailAddress
  • phoneNumber
  • loginName
  • location
  • organisation
  • costCenter
  • extendedAttributes

Authentication

  • Support-Team member
  • Incident Manager

Parameters

No parameters.

Possible HTTP Status codes

  • 201: Contact was updated successfully
  • 400: Input is invalid. e.g. missing required fields, invalid field values
  • 401: User is not authenticated
  • 403: User is not allowed to update a Contact

Response
No response.

Example
curl -D- -u john:secret123 -X PUT --data "@updatecontact.json" -H "Content-Type: application/json" http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/contact/1b5d777d-66be-4119-9bb2-e0a64f0c3261

JSON data

{ "organisation": "Another Organisation", "emailAddress": [ "john.doe@anotherorganisation.com" ] }
Http Method: GET /contact

Returns a full representation of the Contact for the given email address or phone number.

Authentication

  • Support-Team member
  • Incident Manager

Parameters

NameDescriptionRequiredType
 email E-mail address of the Contact No String
 phone Phone number of the contact. The phone number can have a leading asterisk ( * ). If due to the asterisk more than one result is found, only the first one will be returned. No String

Either email or phone is required.

Possible HTTP Status codes

  • 200: Request was successful
  • 401: User is not authenticated
  • 403: If the user does not have permissions to view it
  • 404: Contact not found by the email address or phone number
Example
curl -D- -u john:secret123 -X GET -H "Content-Type: application/json" http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/contact?email=customer@example.com

JSON data

{ "uuid": "dd7eee51-2379-4067-b7ce-1fcbdef24bc4", "salutation": "MR", "firstName": "Nice", "name": "Customer", "fullName": "Nice Customer", "emailAddress": [ "customer@example.com" ], "phoneNumber": [ "555 55 55" ], "loginName": "customer", "location": "Customerstreet 55", "organisation": "Nice Customer Inc.", "costCenter": "Sales" }
Http Method: GET /contact/{contactUuid}

Returns a full representation of the Contact for the given Contact UUID.

Authentication

  • Support-Team member
  • Incident Manager

Parameters

No parameters.

Possible HTTP Status codes

  • 200: Request was successful
  • 401: User is not authenticated
  • 403: If the user does not have permissions to view it
  • 404: Contact not found by the UUID.
Example
curl -D- -u john:secret123 -X GET -H "Content-Type: application/json" http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/contact/dd7eee51-2379-4067-b7ce-1fcbdef24bc4

JSON data

{ "uuid": "dd7eee51-2379-4067-b7ce-1fcbdef24bc4", "salutation": "MR", "firstName": "Nice", "name": "Customer", "fullName": "Nice Customer", "emailAddress": [ "customer@example.com" ], "phoneNumber": [ "555 55 55" ], "loginName": "customer", "location": "Customerstreet 55", "organisation": "Nice Customer Inc.", "costCenter": "Sales" }
Http Method: DELETE /contact/{contactUuid}

Deletes a Contact based on the contact Uuid.

Authentication

  • IncidentManager

Parameters

No parameters.

Possible HTTP Status codes

  • 204: If the Contact was deleted successfully
  • 401: If the user is not authenticated
  • 403: If the user does not have permissions to delete this Contact
  • 404: If the Contact was not found, or the Contact is assigned to at least one Ticket.
Example
curl -D- -u john:secret123 -X DELETE http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/contact/1b5d777d-66be-4119-9bb2-e0a64f0c3261

REST API: Contacts

URI: /rest/api/1/incident/{model-namespace}/contacts

Http Method: GET /contacts

Returns a list of Contacts that match the search string.

Authentication

  • Support-Team member
  • Incident Manager

Parameters

NameDescriptionRequiredType
 user A query string used to search in username (firstname, lastname, fullname) or loginname or e-mail address. An empty or missing user parameter is equal to user=*. This is the preferred query parameter. No String
 lucene A query string to search to search for contacts using the lucene query language. If the lucene parameter is used, then the user parameter will be ignored. No String
 startAt The index of the first contact to return (0-based, default: 0) No String
 maxResults The maximum Contacts to return. Default: 50, the maximum allowed value is 1000, higher values will be truncated No String

Possible HTTP Status codes

  • 200: Request was successful
  • 400: If there is a problem with the query
  • 401: User is not authenticated
  • 403: If the user does not have permissions to view it
Example
curl -D- -u john:secret123 -X GET -H "Content-Type: application/json" http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/contacts?user=example.com

JSON data

{ "startAt": "0", "maxResults": "50", "total": "2", "contact": [{ "uuid": "dd7eee51-2379-4067-b7ce-1fcbdef24bc4", "salutation": "MR", "firstName": "Nice", "name": "Customer", "fullName": "Nice Customer", "emailAddress": [ "customer@example.com" ], "phoneNumber": [ "555 55 55" ], "loginName": "customer", "location": "Customerstreet 55", "organisation": "Nice Customer Inc.", "costCenter": "Sales" }, { "uuid": "f337c6ec-4394-45d1-bb9f-570085908054", "salutation": "MR", "firstName": "Jim", "name": "Knopf", "fullName": "Jim Knopf", "emailAddress": [ "jim@example.com" ] }] }

REST API: Categories

URI: /rest/api/1/incident/{model-namespace}/categories

Http Method: GET /categories

Returns a list of available categories.

Authentication

  • Support-Team member

Parameters

No Parameters.

Possible HTTP Status codes

  • 200: Request was successful
  • 401: User is not authenticated
  • 403: If the user does not have permissions to view it
Example
curl -D- -u john:secret123 -X GET -H "Content-Type: application/json" http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/categories

JSON data

{ "category": [ { "name": "Category A", "uuid": "fbcd3824-f822-4005-afc5-579ad56cb4c0", "categories": [{ "name": "Sub Category AA", "uuid": "d5772df5-21b9-4328-a0e4-ebbf77b8769c", "parentUuid": "fbcd3824-f822-4005-afc5-579ad56cb4c0", "categories": [{ "name": "Sub-sub Category AAA", "uuid": "10f6434a-6ac4-4200-af88-183038dd1fd3", "parentUuid": "d5772df5-21b9-4328-a0e4-ebbf77b8769c" }] }] }, { "name": "Category B", "uuid": "f6337600-2886-44e9-80e3-fed51b770fde" }] }

REST API: CostCenters

URI: /rest/api/1/incident/{model-namespace}/costcenters

Http Method: GET /costcenters

Returns a list of available cost centers.

Authentication

  • Support-Team member

Parameters

No Parameters.

Possible HTTP Status codes

  • 200: Request was successful
  • 401: User is not authenticated
  • 403: If the user does not have permissions to view it
Example
curl -D- -u john:secret123 -X GET -H "Content-Type: application/json" http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/costcenters

JSON data

{ "costCenter": [ { "name": "Cost Center A", "uuid": "b8da1075-f7c0-4ad9-a17a-35f7fcf0c3b1", "categories": [{ "name": "Sub Cost Center AA", "uuid": "50b8d73e-6793-4864-9617-8f3a6ba89c1d", "parentUuid": "b8da1075-f7c0-4ad9-a17a-35f7fcf0c3b1", "categories": [{ "name": "Sub-sub Cost Center AAA", "uuid": "bd782fe5-8424-4757-b474-13bd6fd14d93", "parentUuid": "50b8d73e-6793-4864-9617-8f3a6ba89c1d" }] }] }, { "name": "Cost Center B", "uuid": "e0ce75eb-cff6-4743-a311-169673e1c1e3" }] }

Lucene

Some queries use the Lucene query syntax. Lucene supports escaping special characters that are part of the query syntax. The current list of special characters are

+ - && || ! ( ) { } [ ] ^ " ~ * ? : \

To escape these character use the \ before the character.

If the value contains spaces and should be searched as a key word, it has to be included into braces.

Example

Searching for tickets with ticket queue "1st Level Support":

http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/tickets?lucene=ticket_queue:(\"1st Level Support\")

resp.
http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/tickets?lucene=ticket_queue:(\%221st%20Level%20Support\%22)

Another example including a special character inside the key word:

http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/tickets?lucene=ticket_queue:(\"2nd Level \\(Incident\\)\")

resp.
http://example.com:8080/operationsmanager/rest/api/1/incident/helpdesk1/tickets?lucene=ticket_queue:(\%222nd%20Level%20\\(Incident\\)\%22)

Schemas

Ticket

<Ticket>
 <id>xs:string</id>[1]
 <uuid>xs:string</uuid>[1]
 <name>xs:string</name>[1]
 <creationDate>xs:dateTime</creationDate>[1]
 <category>xs:string</category>[0..1]
 <costCenter>xs:string</costCenter>[0..1]
 <classification>{'SW_DEFECT'|'SW_RFC'|'INCIDENT'|'REQUEST_FOR_ENHANCEMENT'|'REQUEST_FOR_CHANGE'|'INQUIRY'|'REQUEST_FOR_SERVICE'}</classification>[0..1]
 <priority>{'LOW'|'MEDIUM'|'HIGH'}</priority>[0..1]
 <impact>{'LOW'|'MEDIUM'|'HIGH'}</impact>[0..1]
 <deadline>xs:dateTime</deadline>[0..1]
 <serviceLevelName>xs:string</serviceLevelName>[0..1]
 <state>{'UNCONFIRMED'|'CONFIRMED'|'REOPENED'|'ASSIGNED'|'RESOLVED'|'VERIFIED'|'CLOSED'|'ONSITE'}</state>[1]
 <processingState>{'OPEN_NOT_STARTED'|'OPEN_RUNNING'|'OPEN_SUSPENDED'}</processingState>[0..1]
 <resolution>{'FIXED'|'INFO'|'LATER'|'DUPLICATE'|'WORKSFORME'|'INVALID'|'WONTFIX'|'REPLACED'|'ANSWERED'|'CONFIGURED'|'RECONFIGURED'|'INSTALLED'|'REINSTALLED'|'MALOPERATION'|'CREATED'|'CHANGED'|'DELETED'|'DONE'|'OBSOLETE'}</resolution>[0..1]
 <queue>xs:string</queue>[1]
 <affectedItemType>{'COLUMBUS_ASSET'|'COLUMBUS_MDM_DEVICE'|'SPIDER_ASSET'|'OTHER'}</affectedItemType>[0..1]
 <affectedItemId>xs:string</affectedItemId>[0..1]
 <issue>xs:string</issue>[0..*]
 <kbId>xs:string</kbId>[0..1]
 <reviewOption>{'NONE'|'REVIEWED'|'MARKED_FOR_ARCHIVE'|'MARKED_FOR_DELETION'|'MARKED_FOR_KB_PROCESSING'|'MARKED_AS_SPAM'}</reviewOption>[0..1]
 <effort>xs:int</effort>[1]
 <updateDate>xs:dateTime</updateDate>[1]
 <followupDate>xs:dateTime</followupDate>[0..1]
 <assignedAgent>xs:string</assignedAgent>[0..1]
 <involvedAgent>xs:string</involvedAgent>[0..1]
 <url>xs:anyURI</url>[1]
 <ExtendedAttributes>[0..1]
   <ExtendedAttribute>
     <Key>xs:string</Key>
     <Value>xs:string</Value>
   </ExtendedAttribute>[1..*]
 </ExtendedAttributes>
 <messages>
   <subject>xs:string</subject>[1]
   <from>xs:string</from>[1]
   <to>xs:string</to>[0..1]
   <cc>xs:string</cc>[0..1]
   <creationDate>xs:dateTime</creationDate>[1]
   <content>xs:string</content>[1]
   <url>xs:anyURI</url>[1]
 </messages>[0..*]
 <contacts>
   <Uuid>xs:string</Uuid>[1]
   <XRefId>xs:string</XRefId>[0..1]
   <Salutation>{'MR'|'MS'}</Salutation>[0..1]
   <FirstName>xs:string (length max. 32)</FirstName>[0..1]
   <Name>xs:string (length max. 32)</Name>[0..1]
   <FullName>xs:string (length max. 96)</FullName>[0..1]
   <EMailAddress>xs:string (length max. 64)</EMailAddress>[0..1]
   <PhoneNumber>xs:string (length max. 32)</PhoneNumber>[0..1]
   <LoginName>xs:string (length max. 32)</LoginName>[0..1]
   <Location>xs:string (length max. 256)</Location>[0..1]
   <Organisation>xs:string (length max. 64)</Organisation>[0..1]
   <CostCenter>xs:string (length max. 64)</CostCenter>[0..1]
   <ExtendedAttributes>[0..1]
     <ExtendedAttribute>
       <Key>xs:string</Key>
       <Value>xs:string</Value>
     </ExtendedAttribute>[1..*]
   </ExtendedAttributes>
   <CreationDate>xs:dateTime</CreationDate>[1]
   <ModificationDate>xs:dateTime</ModificationDate>[0..1]
   <Url>xs:string</Url>[1]
 </contacts>[0..*]
</Ticket>

Contact

<Contact>
   <Uuid>xs:string</Uuid>[1]
   <XRefId>xs:string</XRefId>[0..1]
   <Salutation>{'MR'|'MS'}</Salutation>[0..1]
   <FirstName>xs:string (length max. 32)</FirstName>[0..1]
   <Name>xs:string (length max. 32)</Name>[0..1]
   <FullName>xs:string (length max. 96)</FullName>[0..1]
   <EMailAddress>xs:string (length max. 64)</EMailAddress>[0..1]
   <PhoneNumber>xs:string (length max. 32)</PhoneNumber>[0..1]
   <LoginName>xs:string (length max. 32)</LoginName>[0..1]
   <Location>xs:string (length max. 256)</Location>[0..1]
   <Organisation>xs:string (length max. 64)</Organisation>[0..1]
   <CostCenter>xs:string (length max. 64)</CostCenter>[0..1]
   <ExtendedAttributes>[0..1]
     <ExtendedAttribute>
       <Key>xs:string</Key>
       <Value>xs:string</Value>
     </ExtendedAttribute>[1..*]
   </ExtendedAttributes>
   <CreationDate>xs:dateTime</CreationDate>[1]
   <ModificationDate>xs:dateTime</ModificationDate>[0..1]
   <Url>xs:string</Url>[1]
</Contact>

Migration Notes

Some parts of the API has been slightly changed during its beta phase (4.0.500 - 4.0.520).
This lists all changes:

API changes (4.0.500 - 4.0.520)

New: Http Method: PUT /ticket

Update a Ticket, multiple fields or even only one single field.

New: Http Method: POST /ticket{ticketId}/note

Add a new Note to a Ticket.

New: Http Method: GET /contact/{contactUuid}

Returns a contact by its UUID.

New: Http Method: POST /contact

Create a new Contact.

New: Http Method: PUT /contact

Update a Contact, multiple fields or even only one single field.

New: Http Method: DELETE /contact

Deletes a contact.

Updated: Http Method: GET /tickets

The range of the returned content has been shortened.
By default, the /tickets request does not return the messages of the tickets anymore. To get all messages of a ticket, a second request /ticket/{ticketID} is required.

New query parameters "orderBy", "sortBy" and "expand".

Request/Result Data changes

ExtendedProperty changed to ExtendedAttribute

All ExtendedProperties/ExtendedProperty have been changed to ExtendedAttributes/ExtendedAttribute for consistency reasons. This affects Ticket and Contact.

ReviewOption

Returns now a Constant instead of plain string. See Ticket Schema for more details.

ProcessingState

Returns now a Constant instead of plain string. See Ticket Schema for more details.

CostCenter/Category

Returns now a CostCenterType with name, description, uuid, parentUuid instead of only the name.