> ## Documentation Index
> Fetch the complete documentation index at: https://help.gorelo.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Gets a ticket approval

> Gets a single approval on a ticket, with its approvers. This is where approval status lives — the conversations list stays lean and does not carry it. `Status` is worked out from the approvers: Denied as soon as anyone denies, Approved once everyone approves, Pending otherwise.



## OpenAPI

````yaml /api-reference/openapi.json get /v1/tickets/{ticketId}/approvals/{approvalId}
openapi: 3.0.4
info:
  title: Public API
  description: Gorelo Public API documentation.
  version: 1.0.0
servers:
  - url: https://api.usw.gorelo.io
    description: US
  - url: https://api.aue.gorelo.io
    description: Australia
security:
  - ApiKeyAuth: []
tags:
  - name: Attachments
    description: "Uploading a file, for anything that can carry one. One endpoint rather than one per record\r\ntype, because the upload itself is identical - only the record it is checked against differs."
  - name: Alerts
    description: Alerts management operations
  - name: Assets
    description: Assets management operations
  - name: Billing
    description: Billing management operations
  - name: Tickets
    description: Tickets management operations
  - name: Clients
    description: Clients management operations
  - name: Contacts
    description: Contacts management operations
  - name: Deletions
    description: Deletions management operations
  - name: Documents
    description: Documents management operations
  - name: Forms
    description: Forms management operations
  - name: Organization
    description: Organization management operations
  - name: Projects
    description: Projects management operations
paths:
  /v1/tickets/{ticketId}/approvals/{approvalId}:
    get:
      tags:
        - Tickets
      summary: Gets a ticket approval
      description: >-
        Gets a single approval on a ticket, with its approvers. This is where
        approval status lives — the conversations list stays lean and does not
        carry it. `Status` is worked out from the approvers: Denied as soon as
        anyone denies, Approved once everyone approves, Pending otherwise.
      operationId: get_v1_tickets_ticketId_approvals_approvalId
      parameters:
        - name: ticketId
          in: path
          description: Ticket identifier.
          required: true
          schema:
            type: string
            format: uuid
        - name: approvalId
          in: path
          description: Approval identifier, from the conversations endpoint.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: OK
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ApprovalDetailModelBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ApprovalDetailModelBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ApprovalDetailModelBaseResponse'
        '400':
          description: Bad Request
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '401':
          description: Unauthorized
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '404':
          description: Not Found
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
        '500':
          description: Internal Server Error
          content:
            text/plain:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ObjectBaseResponse'
components:
  schemas:
    ApprovalDetailModelBaseResponse:
      type: object
      properties:
        StatusCode:
          $ref: '#/components/schemas/HttpStatusCode'
        IsSuccess:
          type: boolean
        Data:
          $ref: '#/components/schemas/ApprovalDetailModel'
        DataContext:
          type: object
          additionalProperties: false
          nullable: true
          example: null
        Notifications:
          type: array
          items:
            $ref: '#/components/schemas/Error'
      additionalProperties: false
    ObjectBaseResponse:
      type: object
      properties:
        StatusCode:
          $ref: '#/components/schemas/HttpStatusCode'
        IsSuccess:
          type: boolean
        Data:
          nullable: true
        DataContext:
          $ref: '#/components/schemas/ErrorDataContext'
        Notifications:
          type: array
          items:
            $ref: '#/components/schemas/Error'
      additionalProperties: false
    HttpStatusCode:
      enum:
        - 100
        - 101
        - 102
        - 103
        - 200
        - 201
        - 202
        - 203
        - 204
        - 205
        - 206
        - 207
        - 208
        - 226
        - 300
        - 301
        - 302
        - 303
        - 304
        - 305
        - 306
        - 307
        - 308
        - 400
        - 401
        - 402
        - 403
        - 404
        - 405
        - 406
        - 407
        - 408
        - 409
        - 410
        - 411
        - 412
        - 413
        - 414
        - 415
        - 416
        - 417
        - 421
        - 422
        - 423
        - 424
        - 426
        - 428
        - 429
        - 431
        - 451
        - 500
        - 501
        - 502
        - 503
        - 504
        - 505
        - 506
        - 507
        - 508
        - 510
        - 511
      type: integer
      format: int32
    ApprovalDetailModel:
      type: object
      properties:
        Id:
          type: string
          description: >-
            Approval identifier, as a string. Matches the `Id` from the
            conversations list.
        Type:
          $ref: '#/components/schemas/CodeModel'
        Name:
          type: string
          description: Short label for the approval.
        Status:
          $ref: '#/components/schemas/CodeModel'
        Approvers:
          type: array
          items:
            $ref: '#/components/schemas/ApproverModel'
          description: One row per person who must approve.
        CreatedOn:
          type: string
          description: Creation timestamp (UTC).
          format: date-time
      additionalProperties: false
      description: "Full details of one approval on a ticket — this is where approval status lives, the\r\nconversations list being deliberately lean. Attachments belong to the approval's comments\r\nrather than to the approval itself, so there is no attachments field here. Timestamps are UTC."
    Error:
      type: object
      properties:
        Code:
          pattern: ^[0-9]{6}$
          type: string
          description: 6-digit MMTTNN error code. See the Public API error-code registry.
          example: '070101'
        Message:
          type: string
        PropertyName:
          type: string
          nullable: true
        ActionHint:
          type: string
          nullable: true
        DocUrl:
          type: string
          nullable: true
      additionalProperties: false
    ErrorDataContext:
      type: object
      properties:
        TraceId:
          type: string
          description: Request correlation id. Quote this when reporting a problem.
          nullable: true
      additionalProperties: false
      description: "The `DataContext` of an error response: carries the correlation id for the failed\r\nrequest."
    CodeModel:
      type: object
      properties:
        Id:
          type: integer
          description: >-
            Numeric identifier of the coded value (e.g. status, priority, type,
            or source id).
          format: int64
          example: 1
        Name:
          type: string
          description: Display name of the coded value.
      additionalProperties: false
      description: >-
        A coded value, such as a status, priority, type or source, as an id and
        a display name.
    ApproverModel:
      type: object
      properties:
        ContactId:
          type: integer
          description: Identifier of the contact asked to approve.
          format: int64
        Status:
          $ref: '#/components/schemas/CodeModel'
      additionalProperties: false
      description: "One person's response on an approval.\r\n            \r\nThere is deliberately no response timestamp here. The approver document carries a\r\n`submittedAt`, but it is written once when the approver is created and is never\r\nrewritten when they answer — every decided approver observed on Dev carried a\r\n`submittedAt` within 130ms of its approval's creation. Exposing it would publish a\r\ncreation time under a name that promises a response time."
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      description: >-
        Your Gorelo API key. See [Generate API key](/generate-api-key). If your
        data is hosted in Australia, click the base URL at the top of this page
        and select `https://api.aue.gorelo.io`.
      name: X-API-Key
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.