Refurbed TicketService API

The TicketService API from Refurbed — 10 operation(s) for ticketservice.

OpenAPI Specification

refurbed-ticketservice-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  title: Affiliate Partner BuybackBidService TicketService API
  version: '1.0'
  description: The refurbed affiliate partner API allows to retrieve info about markets, products and instances including the buybox info (current price, grading, warranty).
  contact:
    name: Refurbed Affiliate Partner Integrations Team
    email: integrations@refurbed.com
host: api.refurbed.com
schemes:
- https
consumes:
- application/json
produces:
- application/json
security:
- APIKeyAuth: []
tags:
- name: TicketService
paths:
  /refb.merchant.v1.TicketService/CreateTicket:
    post:
      summary: Creates a new ticket.
      operationId: CreateTicket
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/CreateTicketResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/Status'
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/CreateTicketRequest'
      tags:
      - TicketService
  /refb.merchant.v1.TicketService/CreateTicketHelpRequest:
    post:
      summary: Creates a help request for a given ticket.
      operationId: CreateTicketHelpRequest
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/CreateTicketHelpRequestResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/Status'
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/CreateTicketHelpRequestRequest'
      tags:
      - TicketService
  /refb.merchant.v1.TicketService/GenerateReturnShippingLabel:
    post:
      summary: 'Generates a return shipping label and posts it as a message on the ticket.

        Call GetTicket to load the ticket messages again.'
      operationId: GenerateReturnShippingLabel
      responses:
        '200':
          description: A successful response.
          schema:
            properties: {}
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/Status'
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/GenerateReturnShippingLabelRequest'
      tags:
      - TicketService
  /refb.merchant.v1.TicketService/GetTicket:
    post:
      summary: Retrieves a single ticket by its ID, including its messages.
      operationId: GetTicket
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/GetTicketResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/Status'
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/GetTicketRequest'
      tags:
      - TicketService
  /refb.merchant.v1.TicketService/GetTicketHelpRequest:
    post:
      summary: Retrieves details of a single help request by its ID, including the messages.
      operationId: GetTicketHelpRequest
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/GetTicketHelpRequestResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/Status'
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/GetTicketHelpRequestRequest'
      tags:
      - TicketService
  /refb.merchant.v1.TicketService/ListTicketHelpRequests:
    post:
      summary: Lists all help requests for a given ticket.
      operationId: ListTicketHelpRequests
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/ListTicketHelpRequestsResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/Status'
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/ListTicketHelpRequestsRequest'
      tags:
      - TicketService
  /refb.merchant.v1.TicketService/ListTickets:
    post:
      summary: Lists tickets.
      operationId: ListTickets
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/ListTicketsResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/Status'
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/ListTicketsRequest'
      tags:
      - TicketService
  /refb.merchant.v1.TicketService/RequestTopicChange:
    post:
      summary: 'Requests a topic change for a ticket.

        If request is approved, the ticket topic is changed to a generic topic, the caller does

        not specify the desired topic.'
      operationId: RequestTopicChange
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/RequestTopicChangeResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/Status'
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/RequestTopicChangeRequest'
      tags:
      - TicketService
  /refb.merchant.v1.TicketService/UpdateTicket:
    post:
      summary: 'Updates the ticket by performing one or more of the following actions:

        - Assigning the ticket to a user (by email)

        - Changing the ticket status

        - Adding a message to the ticket

        - Updating the notes'
      operationId: UpdateTicket
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/UpdateTicketResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/Status'
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/UpdateTicketRequest'
      tags:
      - TicketService
  /refb.merchant.v1.TicketService/UpdateTicketHelpRequest:
    post:
      summary: Updates the ticket help request by adding a message to it.
      operationId: UpdateTicketHelpRequest
      responses:
        '200':
          description: A successful response.
          schema:
            $ref: '#/definitions/UpdateTicketHelpRequestResponse'
        default:
          description: An unexpected error response.
          schema:
            $ref: '#/definitions/Status'
      parameters:
      - name: body
        in: body
        required: true
        schema:
          $ref: '#/definitions/UpdateTicketHelpRequestRequest'
      tags:
      - TicketService
definitions:
  ScopedTicketMessage:
    type: object
    properties:
      message:
        $ref: '#/definitions/TicketMessage'
      scope:
        $ref: '#/definitions/TicketMessageScope'
    description: Represents a ticket message with a scope of visibility.
  SubmittableTicketStatus:
    type: string
    enum:
    - UNSPECIFIED
    - PENDING
    - SOLVED
    default: UNSPECIFIED
  TicketMessageSubmission:
    type: object
    properties:
      body_html:
        type: string
        description: The HTML body of the message.
        required:
        - body_html
      attachments:
        type: array
        items:
          $ref: '#/definitions/TicketMessageSubmission.Attachment'
        description: File attachments.
    description: 'Represents a message to be submitted to a ticket when creating a new ticket or adding a message to an existing ticket.

      Also used for creating messages within ticket help requests.'
    required:
    - body_html
  ScopedMessageSubmission:
    type: object
    properties:
      message:
        $ref: '#/definitions/TicketMessageSubmission'
      scope:
        $ref: '#/definitions/TicketMessageScope'
  SlaCheckpoint:
    type: object
    properties:
      checkpoint_type:
        $ref: '#/definitions/TicketSlaCheckpointType'
      at:
        type: string
        format: date-time
  StringSetContainsFilter:
    type: object
    properties:
      any_of:
        type: array
        items:
          type: string
      none_of:
        type: array
        items:
          type: string
      contains:
        type: string
        x-nullable: true
  Int64Pagination:
    type: object
    properties:
      limit:
        type: integer
        format: int64
        x-nullable: true
        description: 'Limit on the number of results to be returned. Between 1 and 100.

          Default and maximum is 100.'
      ending_before:
        type: string
        format: int64
      starting_after:
        type: string
        format: int64
    description: Paginates resources with int64 primary key.
  StringEqualsFilter:
    type: object
    properties:
      eq:
        type: string
  TicketUrgencyStatus:
    type: string
    enum:
    - UNSPECIFIED
    - PANIC
    - URGENT
    default: UNSPECIFIED
    description: " - PANIC: Refurbed customer service is monitoring each update and will support you and the customer if need be.\n - URGENT: The ticket has been escalated to refurbed second-level team,\nand they are working with your agents and the customer to find the best solution for all parties."
  CreateTicketHelpRequestRequest:
    type: object
    properties:
      ticket_id:
        type: string
        format: int64
        description: The ID of the ticket for which help is being requested.
        required:
        - ticket_id
      topic:
        $ref: '#/definitions/TicketHelpRequestTopic'
        description: The topic of the help request. This is needed to route the request to the appropriate support team.
      message:
        $ref: '#/definitions/TicketMessageSubmission'
        description: Message describing the issue for which help is requested, as well relevant attachments (documents).
    required:
    - ticket_id
  TicketTopicChangeRequestAttachmentExemptionReason:
    type: string
    enum:
    - UNSPECIFIED
    - ISSUE_SOLVED_ITSELF
    - WRONG_CONFIGURATION_BY_CUSTOMER
    - OTHER
    default: UNSPECIFIED
    title: "- ISSUE_SOLVED_ITSELF: The customer reported a problem, but there was no actual problem.\n - WRONG_CONFIGURATION_BY_CUSTOMER: Customer's fault, e.g., wrong software configuration or treatment"
  TicketUrgencyStatusFilter:
    type: object
    properties:
      any_of:
        type: array
        items:
          $ref: '#/definitions/TicketUrgencyStatus'
      none_of:
        type: array
        items:
          $ref: '#/definitions/TicketUrgencyStatus'
  GetTicketResponse:
    type: object
    properties:
      ticket:
        $ref: '#/definitions/Ticket'
        description: The ticket details.
      messages:
        type: array
        items:
          $ref: '#/definitions/ScopedTicketMessage'
        description: Messages posted on the ticket.
  ListTicketsResponse:
    type: object
    properties:
      tickets:
        type: array
        items:
          $ref: '#/definitions/Ticket'
      has_more:
        type: boolean
  Customer:
    type: object
    properties:
      email:
        type: string
      name:
        type: string
  BoolFilter:
    type: object
    properties:
      value:
        type: boolean
        x-nullable: true
  TicketMessageSubmission.Attachment:
    type: object
    properties:
      filename:
        type: string
        description: Name of the file.
        required:
        - filename
      data:
        type: string
        format: byte
        description: Raw bytes of the file.
        required:
        - data
    required:
    - filename
    - data
  CreateTicketHelpRequestResponse:
    type: object
    properties:
      help_request:
        $ref: '#/definitions/TicketHelpRequest'
        description: The created help request.
      messages:
        type: array
        items:
          $ref: '#/definitions/TicketMessage'
        description: Messages posted on the help request.
  MarketplaceOrderItem:
    type: object
    properties:
      order_item_id:
        type: string
        format: int64
      order_id:
        type: string
        format: int64
      instance_name:
        type: string
        title: Product and instance name combined, e.g., iPhone 12 | 64 GB | blue
  ListTicketsRequest:
    type: object
    properties:
      pagination:
        $ref: '#/definitions/Int64Pagination'
      sort:
        $ref: '#/definitions/ListTicketsRequest.Sort'
      filter:
        $ref: '#/definitions/ListTicketsRequest.Filter'
  Author:
    type: object
    properties:
      type:
        $ref: '#/definitions/TicketMessageSenderType'
        title: Type of the author (customer, merchant or refurbed)
      email:
        type: string
        x-nullable: true
        description: Email of the author. Populated only if type=merchant.
      name:
        type: string
        description: Name of the author.
  RequestTopicChangeResponse:
    type: object
    properties:
      ticket:
        $ref: '#/definitions/Ticket'
        description: The ticket for which a topic change was requested.
      messages:
        type: array
        items:
          $ref: '#/definitions/ScopedTicketMessage'
        description: Messages posted on the ticket.
  TicketSlaCheckpointType:
    type: string
    enum:
    - UNSPECIFIED
    - AWAITING_REPLY_SINCE
    - OVERDUE
    - REFURBED_TAKEOVER
    default: UNSPECIFIED
    description: " - AWAITING_REPLY_SINCE: The time since when the SLA timer starts (e.g., customer or refurbed agent response).\n - OVERDUE: The time when the ticket passes its SLA due time.\n - REFURBED_TAKEOVER: When the ticket is taken over by refurbed due to SLA breach."
  GenerateReturnShippingLabelRequest:
    type: object
    properties:
      ticket_id:
        type: string
        format: int64
        description: The ID of the ticket for which the return shipping label should be generated.
        required:
        - ticket_id
    required:
    - ticket_id
  UpdateTicketHelpRequestRequest:
    type: object
    properties:
      ticket_id:
        type: string
        format: int64
        description: The ID of the ticket the help request belongs to.
        required:
        - ticket_id
      help_request_id:
        type: string
        format: int64
        required:
        - help_request_id
      new_message:
        $ref: '#/definitions/TicketMessageSubmission'
        description: A message to be added to the help request.
    required:
    - ticket_id
    - help_request_id
  CountryCodeFilter:
    type: object
    properties:
      any_of:
        type: array
        items:
          $ref: '#/definitions/CountryCode'
      none_of:
        type: array
        items:
          $ref: '#/definitions/CountryCode'
  ListTicketsRequest.Sort.By:
    type: string
    enum:
    - CREATED_AT
    - NEXT_SLA_BREACH_AT
    - UPDATED_AT
    default: CREATED_AT
  Any:
    type: object
    properties:
      '@type':
        type: string
        description: "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n  value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n  URL, or have them precompiled into a binary to avoid any\n  lookup. Therefore, binary compatibility needs to be preserved\n  on changes to types. (Use versioned type names to manage\n  breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics."
    additionalProperties: {}
    description: "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n    Foo foo = ...;\n    Any any;\n    any.PackFrom(foo);\n    ...\n    if (any.UnpackTo(&foo)) {\n      ...\n    }\n\nExample 2: Pack and unpack a message in Java.\n\n    Foo foo = ...;\n    Any any = Any.pack(foo);\n    ...\n    if (any.is(Foo.class)) {\n      foo = any.unpack(Foo.class);\n    }\n\n Example 3: Pack and unpack a message in Python.\n\n    foo = Foo(...)\n    any = Any()\n    any.Pack(foo)\n    ...\n    if any.Is(Foo.DESCRIPTOR):\n      any.Unpack(foo)\n      ...\n\n Example 4: Pack and unpack a message in Go\n\n     foo := &pb.Foo{...}\n     any, err := anypb.New(foo)\n     if err != nil {\n       ...\n     }\n     ...\n     foo := &pb.Foo{}\n     if err := any.UnmarshalTo(foo); err != nil {\n       ...\n     }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n    package google.profile;\n    message Person {\n      string first_name = 1;\n      string last_name = 2;\n    }\n\n    {\n      \"@type\": \"type.googleapis.com/google.profile.Person\",\n      \"firstName\": <string>,\n      \"lastName\": <string>\n    }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n    {\n      \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n      \"value\": \"1.212s\"\n    }"
  TicketMessageSenderType:
    type: string
    enum:
    - UNSPECIFIED
    - CUSTOMER
    - REFURBED
    - MERCHANT
    - SYSTEM
    default: UNSPECIFIED
  GetTicketRequest:
    type: object
    properties:
      ticket_id:
        type: string
        format: int64
        required:
        - ticket_id
    required:
    - ticket_id
  UpdateTicketResponse:
    type: object
    properties:
      ticket:
        $ref: '#/definitions/Ticket'
        description: The updated ticket.
      messages:
        type: array
        items:
          $ref: '#/definitions/ScopedTicketMessage'
        description: Messages posted on the ticket.
  ListTicketsRequest.Sort:
    type: object
    properties:
      order:
        $ref: '#/definitions/SortOrder'
      by:
        $ref: '#/definitions/ListTicketsRequest.Sort.By'
  SortOrder:
    type: string
    enum:
    - ASC
    - DESC
    default: ASC
  CountryCode:
    type: string
    enum:
    - UNSPECIFIED
    - AF
    - AL
    - AQ
    - DZ
    - AS
    - AD
    - AO
    - AG
    - AZ
    - AR
    - AU
    - AT
    - BS
    - BH
    - BD
    - AM
    - BB
    - BE
    - BM
    - BT
    - BO
    - BA
    - BW
    - BV
    - BR
    - BZ
    - IO
    - SB
    - VG
    - BN
    - BG
    - MM
    - BI
    - BY
    - KH
    - CM
    - CA
    - CV
    - KY
    - CF
    - LK
    - TD
    - CL
    - CN
    - TW
    - CX
    - CC
    - CO
    - KM
    - YT
    - CG
    - CD
    - CK
    - CR
    - HR
    - CU
    - CY
    - CZ
    - BJ
    - DK
    - DM
    - DO
    - EC
    - SV
    - GQ
    - ET
    - ER
    - EE
    - FO
    - FK
    - GS
    - FJ
    - FI
    - AX
    - FR
    - GF
    - PF
    - TF
    - DJ
    - GA
    - GE
    - GM
    - PS
    - DE
    - GH
    - GI
    - KI
    - GR
    - GL
    - GD
    - GP
    - GU
    - GT
    - GN
    - GY
    - HT
    - HM
    - VA
    - HN
    - HK
    - HU
    - IS
    - IN
    - ID
    - IR
    - IQ
    - IE
    - IL
    - IT
    - CI
    - JM
    - JP
    - KZ
    - JO
    - KE
    - KP
    - KR
    - KW
    - KG
    - LA
    - LB
    - LS
    - LV
    - LR
    - LY
    - LI
    - LT
    - LU
    - MO
    - MG
    - MW
    - MY
    - MV
    - ML
    - MT
    - MQ
    - MR
    - MU
    - MX
    - MC
    - MN
    - MD
    - ME
    - MS
    - MA
    - MZ
    - OM
    - NA
    - NR
    - NP
    - NL
    - CW
    - AW
    - SX
    - BQ
    - NC
    - VU
    - NZ
    - NI
    - NE
    - NG
    - NU
    - NF
    - 'NO'
    - MP
    - UM
    - FM
    - MH
    - PW
    - PK
    - PA
    - PG
    - PY
    - PE
    - PH
    - PN
    - PL
    - PT
    - GW
    - TL
    - PR
    - QA
    - RE
    - RO
    - RU
    - RW
    - BL
    - SH
    - KN
    - AI
    - LC
    - MF
    - PM
    - VC
    - SM
    - ST
    - SA
    - SN
    - RS
    - SC
    - SL
    - SG
    - SK
    - VN
    - SI
    - SO
    - ZA
    - ZW
    - ES
    - SS
    - SD
    - EH
    - SR
    - SJ
    - SZ
    - SE
    - CH
    - SY
    - TJ
    - TH
    - TG
    - TK
    - TO
    - TT
    - AE
    - TN
    - TR
    - TM
    - TC
    - TV
    - UG
    - UA
    - MK
    - EG
    - GB
    - GG
    - JE
    - IM
    - TZ
    - US
    - VI
    - BF
    - UY
    - UZ
    - VE
    - WF
    - WS
    - YE
    - ZM
    default: UNSPECIFIED
    description: Alpha-2 country codes as specified in ISO 3166-1.
  Int64AnyOfFilter:
    type: object
    properties:
      any_of:
        type: array
        items:
          type: string
          format: int64
  TicketHelpRequestStatus:
    type: string
    enum:
    - UNSPECIFIED
    - OPEN
    - CLOSED
    - PENDING
    - SOLVED
    default: UNSPECIFIED
    description: " - OPEN: Help request is open, awaiting a response from refurbed.\n - CLOSED: Help request is permanently closed and immutable.\n - PENDING: Refurbed has replied; the merchant should review.\n - SOLVED: Refurbed has resolved the help request; the merchant can still reply, unlike closed."
  TicketOrderItemIdentifier:
    type: object
    properties:
      marketplace_order_item_id:
        type: string
        format: int64
      buyback_order_item_id:
        type: string
        format: int64
    description: 'Used to identify an order item related to a ticket. It could be either a marketplace order item (order_items.id), or

      a buyback order item (buyback_order_items.id).'
    title: Ticket order item identifier
  CreateTicketResponse:
    type: object
    properties:
      ticket:
        $ref: '#/definitions/Ticket'
        description: The created ticket.
      messages:
        type: array
        items:
          $ref: '#/definitions/ScopedTicketMessage'
        description: Messages posted on the ticket.
  TicketHelpRequestTopic:
    type: string
    enum:
    - UNSPECIFIED
    - REFURBED_RESPONSIBILITY
    - CUSTOMER_COMMUNICATION
    - TECHNICAL_ISSUES
    - ACCOUNT_TAKEOVER
    - SHIPPING_AGREEMENT
    - LEGAL
    - INFORMATION_FOR_REFURBED
    - POTENTIAL_FRAUD_CASE
    - OTHER
    default: UNSPECIFIED
  TicketMessage.Attachment:
    type: object
    properties:
      filename:
        type: string
        description: Name of the attachment file.
      url:
        type: string
        description: Public URL to view or download the attachment.
      content_type:
        type: string
        description: Content type of the attachment file, e.g., image/png.
  Status:
    type: object
    properties:
      code:
        type: integer
        format: int32
        description: The status code, which should be an enum value of [google.rpc.Code][google.rpc.Code].
      message:
        type: string
        description: 'A developer-facing error message, which should be in English. Any

          user-facing error message should be localized and sent in the

          [google.rpc.Status.details][google.rpc.Status.details] field, or localized by the client.'
      details:
        type: array
        items:
          $ref: '#/definitions/Any'
        description: 'A list of messages that carry the error details.  There is a common set of

          message types for APIs to use.'
    description: 'The `Status` type defines a logical error model that is suitable for

      different programming environments, including REST APIs and RPC APIs. It is

      used by [gRPC](https://github.com/grpc). Each `Status` message contains

      three pieces of data: error code, error message, and error details.


      You can find out more about this error model and how to work with it in the

      [API Design Guide](https://cloud.google.com/apis/design/errors).'
  ListTicketsRequest.Filter:
    type: object
    properties:
      ticket_id:
        $ref: '#/definitions/Int64AnyOfFilter'
      assignee_user_email:
        $ref: '#/definitions/StringEqualsFilter'
      status:
        $ref: '#/definitions/TicketStatusFilter'
      customer_email:
        $ref: '#/definitions/StringEqualsFilter'
      marketplace_order_id:
        $ref: '#/definitions/Int64AnyOfFilter'
      marketplace_order_item_id:
        $ref: '#/definitions/Int64AnyOfFilter'
      buyback_order_id:
        $ref: '#/definitions/Int64AnyOfFilter'
      buyback_order_item_id:
        $ref: '#/definitions/Int64AnyOfFilter'
      country:
        $ref: '#/definitions/CountryCodeFilter'
      topic:
        $ref: '#/definitions/StringFilter'
      urgency_status:
        $ref: '#/definitions/TicketUrgencyStatusFilter'
      customer_panicked:
        $ref: '#/definitions/BoolFilter'
      is_buyback:
        $ref: '#/definitions/BoolFilter'
      customer_name:
        $ref: '#/definitions/StringSetContainsFilter'
      seller_action_needed:
        $ref: '#/definitions/BoolFilter'
      has_help_requests:
        $ref: '#/definitions/BoolFilter'
  UpdateTicketHelpRequestResponse:
    type: object
    properties:
      help_request:
        $ref: '#/definitions/TicketHelpRequest'
        description: The updated help request.
      messages:
        type: array
        items:
          $ref: '#/definitions/TicketMessage'
        description: Messages posted on the help request.
  Ticket:
    type: object
    properties:
      id:
        type: string
        format: int64
        description: The ID of the ticket.
      status:
        $ref: '#/definitions/TicketStatus'
        description: Status of the ticket.
      urgency_status:
        $ref: '#/definitions/TicketUrgencyStatus'
        x-nullable: true
        description: Urgency status of the ticket.
      created_at:
        type: string
        format: date-time
        description: Time of ticket creation.
      marketplace_order_item:
        $ref: '#/definitions/MarketplaceOrderItem'
      buyback_order_item:
        $ref: '#/definitions/Ticket.BuybackOrderItem'
      topic_slug:
        type: string
        description: Ticket topic.
      country:
        $ref: '#/definitions/CountryCode'
        description: Country of the order associated to the ticket.
      customer:
        $ref: '#/definitions/Customer'
        description: The customer who placed the order associated to the ticket.
      assignee:
        $ref: '#/definitions/Assignee'
        x-nullable: true
        description: The user currently assigned to handle the ticket.
      sla_checkpoints:
        type: array
        items:
          $ref: '#/definitions/SlaCheckpoint'
        description: Service Level Agreement (SLA) checkpoints associated with the ticket.
      updated_at:
        type: string
        format: date-time
        description: When the ticket was last updated.
      seller_action_needed:
        type: boolean
        description: Indicates whether the ticket requires action from the seller.
      customer_panicked:
        type: boolean
        description: Indicates whether the customer has panicked the ticket (requested help).
      notes:
        type: string
        description: Notes that the merchant can add to the ticket for internal use. Only visible to the merchant.
      follow_up_to_ticket_id:
        type: string
        format: int64
        x-nullable: true
        description: If the ticket is a follow-up ticket, this field contains the ID of the original ticket.
      topic_change_allowed:
        type: boolean
        description: Whether ticket topic change requests for the ticket are allowed.
      has_help_requests:
        type: boolean
        description: Whether the ticket has at least one help request created by the merchant.
    description: 'A customer support ticket.

      Only stores metadata, such as status, order, etc.

      Ticket messages can be retrieved only when calling GetTicket.'
  TicketMessageScope:
    type: string
    enum:
    - UNSPECIFIED
    - PUBLIC
    - INTERNAL
    default: UNSPECIFIED
    description: " - PUBLIC: Messages visible to all parties (merchant, refurbed agents, customer).\n - INTERNAL: Messages visible only to the merchant and refurbed agents."
  Assignee:
    type: object
    properties:
      email:
        type: string
      name:
        type: string
  RequestTopicChangeRequest:
    type: object
    properties:
      ticket_id:
        type: string
        format: int64
        description: The ID of the ticket for which the topic change is being requested.
        required:
        - ticket_id
      message:
        $ref: '#/definitions/TicketMessageSubmission'
        description: Message justifying the request, as well relevant attachments (documents).
      attachment_exemption_reason:
        $ref: '#/definitions/TicketTopicChangeRequestAttachmentExemptionReason'
        x-nullable: true
        description: Justification if the topic change request is exempt from providing the relevant attachments (documents).
    required:
    - ticket_id
  TicketHelpRequest:
    type: object
    properties:
      id:
        type: string
        format: int64
        description: The ID of the help request.
      ticket_id:
        type: string
        format: int64
        description: The ID of the ticket associated to the help request.
      status:
        $ref: '#/definitions/TicketHelpRequestStatus'
        description: Status of the help request.
      topic:
        $ref: '#/definitions/TicketHelpRequestTopic'
        description: Topic of the help request.
      created_at:
        type: string
        format: date-time
        description: Time of help request creation.
    description: 'A help request associated to a ticket.

      Created by a merchant to request help from refurbed to assist with handling a ticket.'
  StringFilter:
    type: object
    properties:
      any_of:
        type: array
        items:
          type: string
      none_of:
        type: array
        items:
          type: string
  GetTicketHelpRequestResponse:
    type: object
    properties:
      help_request:
        $ref: '#/definitions/TicketHelpRequest'
        description: The help request details.
      messages:
        type: array
        items:
          $ref: '#/definitions/TicketMessage'
        description: Messages posted on the help request.
  Ticket.BuybackOrderItem:
    type: object
    properties:
      buyback_order_item_id:
        type: string
        format: int64
      buyback_order_id:
        type: string
        format: int64
      product_variant_name:
        type: string
        title: Product name and attributes combined, e.g., iPhone 12 | 64 GB
  UpdateTicketRequest:
    type: object
    properties:
      ticket_id:
        type: string
        format: int64
        description: The ID of the ticket to be updated.
        required:
        - ticket_id
      new_message:
        $ref: '#/definitions/ScopedMessageSubmission'

# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/refurbed/refs/heads/main/openapi/refurbed-ticketservice-api-openapi.yml