Howler Top Up Ticket API

The Top Up Ticket API from Howler — 7 operation(s) for top up ticket.

OpenAPI Specification

howler-top-up-ticket-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Howler API v3 Artists Top Up Ticket API
  version: 3.6.1
  description: '*Last updated: 2026-01-20 21:15:49 +0200*

    '
servers:
- url: https://{defaultHost}/api/v3/consumer_portal
  variables:
    defaultHost:
      default: www.howler.co.za
  description: Server for consumer portal endpoints
security:
- bearer_header: []
  bearer_param: []
  api_key: []
  bearer_auth: []
tags:
- name: Top Up Ticket
paths:
  /tickets/{ticket_id}/top_up:
    parameters:
    - name: ticket_id
      in: path
      description: ticket_id
      required: true
      schema:
        type: integer
    post:
      summary: select ticket (1)
      operationId: updateConsumerticketTopup
      tags:
      - Top Up Ticket
      description: 'Start the top up process of a ticket by providing the ticket id.


        The next_step in the body will indicate which action should be performed next.


        If the user is typing in the barcode manually use `/api/v3/consumer_portal/top_up` instead.

        '
      responses:
        '200':
          description: successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  top_up_order:
                    $ref: '#/components/schemas/Order'
                  next_step:
                    type: string
                required:
                - top_up_order
                - next_step
        '404':
          description: ticket not found
        '400':
          description: ticket already claimed
  /tickets/{ticket_id}/top_up/{top_up_order_id}/amounts:
    parameters:
    - name: ticket_id
      in: path
      description: ticket_id
      required: true
      schema:
        type: integer
    - name: top_up_order_id
      in: path
      description: top_up_order_id
      required: true
      schema:
        type: integer
    put:
      summary: accept amounts (2)
      operationId: updateConsumerTicketAmounts
      tags:
      - Top Up Ticket
      description: 'Specify the amount to top up the ticket with.

        '
      parameters: []
      responses:
        '200':
          description: successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  top_up_order:
                    $ref: '#/components/schemas/Order'
                  next_step:
                    type: string
                required:
                - top_up_order
                - next_step
        '404':
          description: ticket not found
        '400':
          description: ticket already claimed
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                cashless_top_up:
                  type: object
                  properties:
                    amount:
                      type: number
                  required:
                  - amount
              required:
              - cashless_top_up
            examples:
              top_up:
                summary: Top Up
                value:
                  cashless_top_up:
                    amount: 5.25
        required: true
  /tickets/{ticket_id}/top_up/{top_up_order_id}/payments:
    parameters:
    - name: ticket_id
      in: path
      description: ticket_id
      required: true
      schema:
        type: integer
    - name: top_up_order_id
      in: path
      description: top_up_order_id
      required: true
      schema:
        type: integer
    get:
      summary: select payment method (3)
      operationId: editConsumerTicketPayment
      tags:
      - Top Up Ticket
      description: 'Renders a webpage to allow the user to pay for their top up order.


        Once the user has successfully completed a payment, a redirect will be done to a specific URL.

        '
      responses:
        '200':
          description: successful
        '400':
          description: top up order invalid status
  /tickets/{ticket_id}/top_up/{top_up_order_id}/completes:
    parameters:
    - name: ticket_id
      in: path
      description: ticket_id
      required: true
      schema:
        type: integer
    - name: top_up_order_id
      in: path
      description: top_up_order_id
      required: true
      schema:
        type: integer
    get:
      summary: check complete (4)
      operationId: getConsumerTicketComplete
      tags:
      - Top Up Ticket
      description: 'Check if the top up order was completed. This request should be made after the payment web page has redirected back to the application.

        '
      responses:
        '200':
          description: successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  top_up_order:
                    $ref: '#/components/schemas/Order'
                required:
                - top_up_order
        '404':
          description: top up order not found
  /tickets/{ticket_id}/top_up/{top_up_order_id}/successful_payment:
    parameters:
    - name: ticket_id
      in: path
      description: ticket_id
      required: true
      schema:
        type: integer
    - name: top_up_order_id
      in: path
      description: top_up_order_id
      required: true
      schema:
        type: integer
    - name: merchant_reference
      in: query
      description: merchant_reference
      required: true
      schema:
        type: integer
    get:
      summary: custom schema redirect for Safari browser
      operationId: customSchemaRedirectForSafari
      tags:
      - Top Up Ticket
      description: '**Private API**

        Tests the custom redirect page rendering for Safari browsers with custom schema URLs.

        '
      responses:
        '303':
          description: successful
        '302':
          description: custom redirect page rendered
  /tickets/{ticket_id}/top_up/{top_up_order_id}/pending_successful_payment:
    parameters:
    - name: ticket_id
      in: path
      description: ticket_id
      required: true
      schema:
        type: integer
    - name: top_up_order_id
      in: path
      description: top_up_order_id
      required: true
      schema:
        type: integer
    - name: merchant_reference
      in: query
      description: merchant_reference
      required: true
      schema:
        type: integer
    get:
      summary: submit pending successful payment method (3)
      operationId: pendingSuccessConsumerTicketPayment
      tags:
      - Top Up Ticket
      description: '**Private API**

        This end-point should only ever be called by the web page rendered using the GET version of this end-point.

        '
      responses:
        '303':
          description: failed
  /tickets/{ticket_id}/top_up/{top_up_order_id}/failed_payment:
    parameters:
    - name: ticket_id
      in: path
      description: ticket_id
      required: true
      schema:
        type: integer
    - name: top_up_order_id
      in: path
      description: top_up_order_id
      required: true
      schema:
        type: integer
    - name: merchant_reference
      in: query
      description: merchant_reference
      required: true
      schema:
        type: integer
    get:
      summary: submit failed payment method (3)
      operationId: failedConsumerTicketPayment
      tags:
      - Top Up Ticket
      description: '**Private API**

        This end-point should only ever be called by the web page rendered using the GET version of this end-point.

        '
      responses:
        '303':
          description: successful
components:
  schemas:
    User:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
          description: Primary Key
        first_name:
          type: string
          description: First Name
        last_name:
          type: string
          description: Last Name
        primary_email:
          type: string
          readOnly: true
          description: Email address of user or dummy user
        dummy?:
          type: boolean
          readOnly: true
          description: True if the user has not yet signed up for an account.
      required:
      - id
      - first_name
      - last_name
      - primary_email
      - dummy?
    Order:
      type: object
      properties:
        id:
          type: integer
        reference:
          type: string
        type:
          type: string
        status:
          type: string
          enum:
          - pending
          - paid
          - expired
          - pending_payment
          - created
          - processing
        user:
          $ref: '#/components/schemas/User'
        cashless_deposit_cents:
          type: integer
      required:
      - id
      - reference
      - status
      - type
      - user
      - cashless_deposit_cents
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth2 authentication for third-party applications
      flows:
        authorizationCode:
          authorizationUrl: /oauth/authorize
          tokenUrl: /oauth/token
          scopes:
            public: Public scope
            login: Login scope
            ott: One-time token scope
    bearer_header:
      type: http
      scheme: bearer
      bearerFormat: oauth2
      in: header
    bearer_param:
      type: apiKey
      scheme: bearer
      bearerFormat: oauth2
      name: bearer_token
      in: query
    jwt_header:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT token obtained from basic authentication login
    jwt_param:
      type: apiKey
      name: bearer_token
      in: query
      description: JWT token as query parameter (alternative to Authorization header)
    basic_auth:
      type: http
      scheme: basic
      description: Basic authentication with email and password
    api_key:
      type: apiKey
      name: x-auth-token
      in: header
      description: API key authentication
    bearer_auth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT token authentication