DoiT Support Requests API

Create and manage support tickets with DoiT.

Business capability
Customer Inquiry Management BC-430.10

Operations 9

GET /support/v1/tickets List requests #
POST /support/v1/tickets Create a request #
GET /support/v1/tickets/{ticketId} Get a request #
PATCH /support/v1/tickets/{ticketId} Update a request #
GET /support/v1/tickets/{ticketId}/comments List request comments #
POST /support/v1/tickets/{ticketId}/comments Add a comment #
GET /support/v1/tickets/{ticketId}/tags List tags on a support request #
POST /support/v1/tickets/{ticketId}/tags Add tags to a support request #
DELETE /support/v1/tickets/{ticketId}/tags Remove tags from a support request #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/doit-support-requests-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

doit-support-requests-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: DoiT Support Requests API
  description: Programmatic access to DoiT Platform
  version: v1
servers:
- url: https://api.doit.com
security:
- api_key: []
- tenantId: []
  api_key: []
tags:
- name: Support Requests
  description: Create and manage support tickets with DoiT.
paths:
  /support/v1/tickets:
    get:
      tags:
      - Support Requests
      summary: List requests
      description: 'Returns a list of all historical requests that your account has access to.

        Tickets are returned in reverse chronological order by default.'
      operationId: idOfTickets
      x-cli-name: list-tickets
      x-cli-aliases:
      - id-of-tickets
      parameters:
      - name: maxResults
        in: query
        description: The maximum number of results to return in a single page. Leverage the page tokens to iterate through the entire collection.
        schema:
          minimum: 1
          maximum: 100
          type: integer
          format: int64
          default: 100
      - $ref: '#/components/parameters/pageToken'
      - name: filter
        in: query
        description: 'An expression for filtering the results of the request. The syntax is `key:[<value>]`. e.g: "severity:normal". Multiple filters can be

          connected using a pipe |. Note that using different keys in the same

          filter results in “AND,” while using the same key multiple times in

          the same filter results in “OR”.

          '
        schema:
          type: string
      - name: minCreationTime
        in: query
        description: Min value for tickets creation time, in milliseconds since the POSIX epoch. If set, only tickets created after or at this timestamp are returned.
        schema:
          type: string
      - name: maxCreationTime
        in: query
        description: Max value for tickets creation time, in milliseconds since the POSIX epoch. If set, only tickets created before or at this timestamp are returned.
        schema:
          type: string
      responses:
        '200':
          description: OK - List of historical requests returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TicketsList'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '502':
          $ref: '#/components/responses/502'
        '503':
          $ref: '#/components/responses/503'
    post:
      tags:
      - Support Requests
      summary: Create a request
      description: Creates a new support request
      operationId: idOfTicketsPost
      x-cli-name: create-ticket
      x-cli-aliases:
      - id-of-tickets-post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TicketCreateFormExtAPI'
        required: true
      responses:
        '201':
          description: Created - New support request created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TicketResponseExtAPI'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
      x-codegen-request-body-name: Body
  /support/v1/tickets/{ticketId}:
    get:
      tags:
      - Support Requests
      summary: Get a request
      description: Returns the details of a single support request by its ID.
      operationId: idOfTicketGet
      x-cli-name: get-ticket
      x-cli-aliases:
      - id-of-ticket-get
      parameters:
      - name: ticketId
        in: path
        required: true
        description: The unique identifier of the support request.
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: OK - Support request details returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TicketDetailExtAPI'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '502':
          $ref: '#/components/responses/502'
        '503':
          $ref: '#/components/responses/503'
    patch:
      tags:
      - Support Requests
      summary: Update a request
      description: 'Partially updates a support request. Supports setting the request

        `status` and/or `assignee`. DoiT employees may set any of `open`,

        `pending`, `hold`, or `solved` and may set the `assignee`; customers may

        set only `solved` (parity with the console "mark as resolved" action)

        and may not set an assignee. `closed` is not settable via the API

        (Zendesk auto-closes from `solved`). The `assignee` is a DoiT-employee

        email, resolved server-side to a Zendesk agent; an email that does not

        resolve to an active agent returns `400`. At least one mutable field

        must be present. The response echoes the fields that were applied.'
      operationId: idOfTicketUpdate
      x-cli-name: update-ticket
      x-cli-aliases:
      - id-of-ticket-update
      parameters:
      - name: ticketId
        in: path
        required: true
        description: The unique identifier of the support request.
        schema:
          type: integer
          format: int64
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              minProperties: 1
              properties:
                status:
                  type: string
                  description: The status to set on the request.
                  enum:
                  - open
                  - pending
                  - hold
                  - solved
                assignee:
                  type: string
                  format: email
                  description: 'Email of the DoiT employee to assign the request to,

                    resolved to a Zendesk agent. DoiT employees only.'
      responses:
        '200':
          description: OK - Request updated. Echoes the fields that were applied.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    format: int64
                  status:
                    type: string
                  assignee:
                    type: string
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /support/v1/tickets/{ticketId}/comments:
    get:
      tags:
      - Support Requests
      summary: List request comments
      description: 'Returns all comments on a support request. For customers, only public

        comments are returned. For DoiT employees, both public and private

        comments are returned. All comments are returned in a single response

        (no pagination).'
      operationId: idOfTicketCommentsList
      x-cli-name: list-ticket-comments
      x-cli-aliases:
      - id-of-ticket-comments-list
      parameters:
      - name: ticketId
        in: path
        required: true
        description: The unique identifier of the support request.
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: OK - List of comments returned.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentsResponseExtAPI'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '502':
          $ref: '#/components/responses/502'
        '503':
          $ref: '#/components/responses/503'
    post:
      tags:
      - Support Requests
      summary: Add a comment
      description: 'Adds a comment to an existing support request. For customers, comments

        are always public. For DoiT employees, comments can be marked as

        private (internal notes) by setting the `private` field to `true`.'
      operationId: idOfTicketCommentsPost
      x-cli-name: create-ticket-comment
      x-cli-aliases:
      - id-of-ticket-comments-post
      parameters:
      - name: ticketId
        in: path
        required: true
        description: The unique identifier of the support request.
        schema:
          type: integer
          format: int64
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCommentRequest'
      responses:
        '201':
          description: Created - Comment added to the support request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommentExtAPI'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
  /support/v1/tickets/{ticketId}/tags:
    get:
      tags:
      - Support Requests
      summary: List tags on a support request
      description: 'Returns the tags currently set on a support request.


        DoiT employee (doer) callers receive the full tag set verbatim,

        including internal namespaces (e.g. `tier/*`, `synapse_*`). Customer

        callers receive only tags under the `customer_tag/` namespace, with

        that prefix stripped (e.g. a tag added as `billing` reads back as

        `billing`). Always present; empty array when the caller has no visible

        tags.'
      operationId: listTicketTags
      parameters:
      - name: ticketId
        in: path
        required: true
        description: The unique identifier of the support request.
        schema:
          type: integer
          format: int64
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagsGetResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    post:
      tags:
      - Support Requests
      summary: Add tags to a support request
      description: 'Adds one or more tags to an existing support request. The operation is

        surgical — only the tags listed in the request are added; existing tags

        on the ticket are preserved. Re-adding a tag that is already present is

        a successful no-op.


        All submitted tags are normalized (trim + lowercase) before storage. For

        customers, the system additionally applies a `customer_tag/` namespace

        prefix to prevent collisions with internal DoiT process tags. The

        response echoes the actual stored strings so callers can verify the

        transform.'
      operationId: idOfTicketTagsAdd
      x-cli-name: add-ticket-tags
      x-cli-aliases:
      - id-of-ticket-tags-add
      parameters:
      - name: ticketId
        in: path
        required: true
        description: The unique identifier of the support request.
        schema:
          type: integer
          format: int64
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagsRequest'
      responses:
        '200':
          description: OK - Tags added (or already present).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagsResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
    delete:
      tags:
      - Support Requests
      summary: Remove tags from a support request
      description: 'Removes one or more tags from an existing support request. The operation

        is surgical — only the tags listed in the request are removed; tags not

        listed are preserved. Removing a tag that is not present is a successful

        no-op.


        For customers, the system applies the same `customer_tag/` namespace

        mapping as on add, so a customer who added `my_tag` (stored as

        `customer_tag/my_tag`) can remove it by sending `my_tag`.'
      operationId: idOfTicketTagsRemove
      x-cli-name: remove-ticket-tags
      x-cli-aliases:
      - id-of-ticket-tags-remove
      parameters:
      - name: ticketId
        in: path
        required: true
        description: The unique identifier of the support request.
        schema:
          type: integer
          format: int64
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagsRequest'
      responses:
        '200':
          description: OK - Tags removed (or already absent).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagsResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
components:
  responses:
    '400':
      description: Bad Request - The server cannot process the request, often due to a malformed request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    '401':
      description: Unauthorized - Invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    '404':
      description: Not Found - The requested resource does not exist.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    '503':
      description: Service Unavailable - The upstream support system is temporarily unavailable (rate limited, upstream 5xx, or a network error). Retry after the interval indicated by the Retry-After header.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    '403':
      description: Forbidden - The client is not authorized to perform the request.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    '502':
      description: Bad Gateway - The upstream support system returned an error that a retry will not resolve (e.g. an authentication or configuration problem). Escalation is required.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    CreateCommentRequest:
      type: object
      description: Request body for adding a comment to a support ticket.
      required:
      - body
      properties:
        body:
          type: string
          description: The text content of the comment. Must not be empty.
        private:
          type: boolean
          description: If true, creates a private internal note. Only honored for DoiT employees; ignored for customers.
          default: false
    TicketsList:
      type: object
      description: List of support tickets.
      properties:
        pageToken:
          type: string
          description: Page token, returned by a previous call, to request the next page of results.
        rowCount:
          type: integer
          description: Tickets rows count
          format: int64
        tickets:
          type: array
          items:
            $ref: '#/components/schemas/TicketListItem'
    TicketResponseExtAPI:
      type: object
      description: Response returned after creating a ticket.
      properties:
        created:
          type: integer
          description: Ticket creation time.
          format: int64
        id:
          type: integer
          description: Ticket ID.
          format: int64
        platform:
          type: string
          description: Ticket platform.
          enum:
          - doit
          - google_cloud_platform
          - amazon_web_services
          - microsoft_azure
        product:
          type: string
          description: Ticket product.
        requester:
          type: string
          description: Email address of the requester.
        severity:
          type: string
          description: Severity of the ticket.
          enum:
          - low
          - normal
          - high
          - urgent
        status:
          type: string
          description: Ticket status.
        subject:
          type: string
          description: Ticket subject.
        urlUI:
          type: string
          description: URL to access the ticket in DoiT console.
    Error:
      type: object
      description: Standard error response structure.
      properties:
        error:
          type: string
          description: Detailed error message.
    CommentExtAPI:
      type: object
      description: A comment on a support ticket.
      properties:
        id:
          type: integer
          description: Comment ID.
          format: int64
        body:
          type: string
          description: The text content of the comment.
        author:
          type: string
          description: Email address of the comment author.
        created:
          type: integer
          description: The time when this comment was created, in milliseconds since the epoch.
          format: int64
        attachments:
          type: array
          description: File attachments on the comment.
          items:
            type: object
            properties:
              id:
                type: integer
                format: int64
              file_name:
                type: string
              content_url:
                type: string
    TagsResponse:
      type: object
      description: 'Response body echoing the tags the operation actually acted on, after

        server-side transformation (trim + lowercase + customer namespace prefix

        where applicable).

        '
      properties:
        applied_tags:
          type: array
          items:
            type: string
          description: The tags that were stored on (POST) or removed from (DELETE) the ticket.
    TicketDetailExtAPI:
      type: object
      description: Detailed information about a single support ticket.
      properties:
        id:
          type: integer
          description: Ticket ID.
          format: int64
        subject:
          type: string
          description: The subject of the ticket.
        description:
          type: string
          description: The body of the initial ticket message.
        requester:
          type: string
          description: Email address of the ticket requester.
        severity:
          type: string
          description: Ticket severity.
          enum:
          - low
          - normal
          - high
          - urgent
        platform:
          type: string
          description: Platform of the ticket.
          enum:
          - doit
          - google_cloud_platform
          - amazon_web_services
          - microsoft_azure
        product:
          type: string
          description: Ticket product.
        platform_info:
          type: string
          description: 'The cloud asset identifier(s) the requester selected on the support

            form''s asset-selector control — typically the GCP project ID, AWS

            account ID, Azure subscription ID, or equivalent. May contain

            multiple identifiers as a comma-separated list (no spaces) when the

            requester selected more than one asset, e.g.

            "111111111111,222222222222". Empty string when the ticket has no

            asset value (e.g. older tickets or tickets opened through paths that

            bypass the form selector).'
          example: cmp-playground
        status:
          type: string
          description: Ticket status.
        createTime:
          type: integer
          description: The time when this ticket was created, in milliseconds since the epoch.
          format: int64
        updateTime:
          type: integer
          description: The time when this ticket was last updated, in milliseconds since the epoch.
          format: int64
        urlUI:
          type: string
          description: Link to the ticket in DoiT console.
        is_public:
          type: boolean
          description: Whether the ticket is public.
        tags:
          type: array
          items:
            type: string
          description: 'Ticket tags, filtered by caller type. DoiT employee (doer) callers

            receive the full tag set verbatim, including internal namespaces

            (e.g. `tier/*`, `synapse_*`). Customer callers receive only tags

            under the `customer_tag/` namespace, with that prefix stripped

            (e.g. a tag added as `billing` reads back as `billing`). Always

            present; empty array when the caller has no visible tags.'
    TicketExtAPI:
      type: object
      description: Payload to create a support ticket via API.
      required:
      - body
      - platform
      - product
      - severity
      - subject
      properties:
        body:
          type: string
          description: The body of the ticket (can include html formatting).
          x-cloudflow-format: multiReference
        created:
          type: string
          description: Ticket creation time.
        platform:
          type: string
          description: Platform of the ticket.
          enum:
          - doit
          - google_cloud_platform
          - amazon_web_services
          - microsoft_azure
        product:
          type: string
          description: Ticket product details.
        severity:
          type: string
          description: Ticket severity.
          enum:
          - low
          - normal
          - high
          - urgent
          x-cloudflow-format: noReference
        subject:
          type: string
          description: The subject of the ticket.
    TicketListItem:
      type: object
      description: Summary information about a support ticket.
      properties:
        createTime:
          type: integer
          description: The time when this ticket was created, in milliseconds since the epoch.
          format: int64
        id:
          type: integer
          description: Ticket ID (e.g., "33234").
          format: int64
        is_public:
          type: boolean
          description: Whether the ticket is public.
        platform:
          type: string
          description: Platform of the ticket.
          enum:
          - doit
          - google_cloud_platform
          - amazon_web_services
          - microsoft_azure
        product:
          type: string
          description: Ticket product.
        requester:
          type: string
          description: The ticket requester in the form of user@domain.com
        severity:
          type: string
          description: Ticket severity.
        status:
          type: string
          description: Ticket status.
        subject:
          type: string
          description: The subject of the ticket.
        updateTime:
          type: integer
          description: The time when this ticket was last updated, in milliseconds since the epoch.
          format: int64
        urlUI:
          type: string
          description: Link to the report in DoiT console.
        tags:
          type: array
          items:
            type: string
          description: 'Ticket tags, filtered by caller type. DoiT employee (doer) callers

            receive the full tag set verbatim, including internal namespaces

            (e.g. `tier/*`, `synapse_*`). Customer callers receive only tags

            under the `customer_tag/` namespace, with that prefix stripped.

            Always present; empty array when the caller has no visible tags.'
    CommentsResponseExtAPI:
      type: object
      description: Response containing all comments on a support ticket.
      properties:
        comments:
          type: array
          items:
            $ref: '#/components/schemas/CommentExtAPI'
    TicketCreateFormExtAPI:
      type: object
      description: Wrapper object for creating support tickets via the external API.
      x-cloudflow-labels:
        ticket: Ticket details
      properties:
        ticket:
          $ref: '#/components/schemas/TicketExtAPI'
      required:
      - ticket
    TagsRequest:
      type: object
      description: 'Request body for adding (POST) or removing (DELETE) tags on a support

        request. The operation is surgical — only the tags listed are affected;

        any other tags on the ticket are preserved.

        '
      required:
      - tags
      properties:
        tags:
          type: array
          minItems: 1
          maxItems: 50
          items:
            type: string
            minLength: 1
            maxLength: 80
          description: List of tags to add or remove. Customer-submitted tags are auto-prefixed with `customer_tag/`.
    TagsGetResponse:
      type: object
      description: 'Response body for GET /support/v1/tickets/{ticketId}/tags. Contains

        the current tags visible to the caller.'
      properties:
        tags:
          type: array
          items:
            type: string
          description: 'Ticket tags, filtered by caller type. DoiT employee (doer) callers

            receive the full tag set verbatim, including internal namespaces

            (e.g. `tier/*`, `synapse_*`). Customer callers receive only tags

            under the `customer_tag/` namespace, with that prefix stripped.

            Always present; empty array when the caller has no visible tags.'
  parameters:
    pageToken:
      name: pageToken
      in: query
      description: Page token, returned by a previous call, to request the next page of results
      schema:
        type: string
  securitySchemes:
    api_key:
      type: apiKey
      name: Authorization
      description: Use the "Bearer <API_KEY>" format or sign in for autofill
      in: header
    tenantId:
      type: apiKey
      name: X-Tenant-Id
      description: 'Tenant (customer) ID that sets the request''s customer context.


        Required when the credential can access more than one tenant; omit when the

        credential is scoped to exactly one tenant (the server resolves that tenant

        automatically). If omitted for a multi-tenant credential, the request fails

        with `400` and code `tenant_id_required`. If the value conflicts with the

        credential''s tenant scope, the request fails with `400` and code

        `tenant_id_mismatch`.


        Use this header over the legacy `customerContext` query parameter, which

        only applies to legacy API keys and is ignored by personal and service-account

        API tokens.

        '
      in: header
    oauth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://console.doit.com/sign-in/oauth
          tokenUrl: https://console.doit.com/api/auth/token
          scopes:
            dci: Access All Data
x-samples-languages:
- curl
- go
- node
- python
x-cli-config:
  security: oauth2
  params:
    client_id: cli