Skip to content
Snippets Groups Projects
tickets.md 4.31 KiB
Newer Older
Tickets
=======
The API supports ticket creation via the HTTP API (as well as via email,
etc.). Currently, the API support creation of tickets only -- so no
modifications and deletions of existing tickets is possible via the API for
now.

Create a Ticket
---------------

### Fields ######

*   __email__:   *required* Email address of the submitter
*   __name__:    *required* Name of the submitter
*   __subject__: *required* Subject of the ticket
*   __message__: *required* Initial message for the ticket thread

*   __alert__:       If unset, disable alerts to staff. Default is `true`
*   __autorespond__: If unset, disable autoresponses. Default is
                     `true`
*   __ip__:          IP address of the submitter
*   __phone__:       Phone number of the submitter. See examples below for
                     embedding the extension with the phone number
*   __phone_ext__:   Phone number extension -- can also be embedded in
                     *phone*
*   __priorityId__:  Priority *id* for the new ticket to assume
*   __source__:      Source of the ticket, default is `API`
*   __topicId__:     Help topic *id* associated with the ticket

*   __attachments__: An array of files to attach to the initial message.
                     Each attachment must have some content and also the
                     following fields:
    *   __name__:     *required* name of the file to be attached. Multiple files
                      with the same name are allowable
    *   __type__:     Mime type of the file. Default is `text/plain`
    *   __encoding__: Set to `base64` if content is base64 encoded 

### XMl Payload Example ######

The XML data format is extremely lax. Content can be either sent as an
attribute or a named element if it has no sub-content.

In the example below, the simple element could also be replaced as
attributes on the root `<ticket>` element; however, if a `CDATA` element is
necessary to hold special content, or difficult content such as double
quotes is to be embedded, simple sub-elements are also supported.

Notice that the phone extension can be sent as the `@ext` attribute of the
`phone` sub-element.

    <?xml version="1.0" encoding="UTF-8"?>
    <ticket alert="true" autorespond="true" source="API">
        <name>Peter Rotich</name>
        <email>peter@osticket.com</email>
        <subject>Testing API</subject>
        <phone ext="123">504-305-8634</phone>
        <message><![CDATA[Message content here]]></message>
        <attachments>
            <file name="file.txt" type="plain/text" 
                encoding="base64"><![CDATA[
                    File content is here and is automatically trimmed
            ]]></file>
        </attachments>
        <ip>123.211.233.122</ip>
    </ticket>

### JSON Payload Example ###

Attachment data for the JSON payload uses the [RFC 2397][] data URL format.
As described above, the content-type and base64 encoding hints are optional.
Furthermore, a character set can be optionally declared for each attachment
and will be automatically converted to UTF-8 for database storage.

Notice that the phone number extension can be embedded in the `phone` value
denoted with a capital `X`

Do also note that the JSON format forbids a comma after the last element in
an object or array definition, and newlines are not allowed inside strings.

    {
        "alert": true,
        "autorespond": true,
        "source": "API",
        "name": "Peter Rotich",
        "email": "peter@osticket.com",
        "phone": "5043058634X123",
        "subject": "Testing API",
        "ip": "123.211.233.122",
        "message": "MESSAGE HERE",
        "attachments": [
            {"file.txt": "data:text/plain;charset=utf-8,content"},
            {"image.png": "data:image/png;base64,R0lGODdhMAA..."},
        ]
    }

[rfc 2397]:     http://www.ietf.org/rfc/rfc2397.txt     "Data URLs"

### Response ######

If successful, the server will send `HTTP/201 Created`. Otherwise, it will
send an appropriate HTTP status with the content being the error
description. Most likely offenders are

* Required field not included
* Data type mismatch (text send for numeric field)
* Incorrectly encoded base64 data
* Unsupported field sent
* Incorrectly formatted payload (bad JSON or XML)

Upon success, the content of the response will be the external ticket id of
the newly-created ticket.

    Status: 201 Created
    123456