Howler User API

The User API from Howler — 4 operation(s) for user.

OpenAPI Specification

howler-user-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Howler API v3 Artists User 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: User
paths:
  /user:
    delete:
      summary: request user account deletion
      operationId: requestUserDeletion
      tags:
      - User
      description: Request deletion of a user account.
      responses:
        '204':
          description: successful
          content:
            application/json:
              schema:
                type: string
                nullable: true
                example: null
    get:
      summary: get user details
      operationId: getConsumerUser
      tags:
      - User
      description: 'Retrieve details of the current user.

        '
      responses:
        '200':
          description: successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  user:
                    $ref: '#/components/schemas/UserDetails'
    put:
      summary: update user details
      operationId: updateConsumerUser
      tags:
      - User
      description: 'Update details of the current user.

        '
      parameters: []
      responses:
        '200':
          description: successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  user:
                    $ref: '#/components/schemas/UserDetails'
        '422':
          description: invalid locale
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: object
                    properties:
                      user:
                        type: object
                        properties:
                          language_locale:
                            type: array
                            items:
                              type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                user:
                  $ref: '#/components/schemas/UserDetails'
              required:
              - user
        required: true
  /events/{event_id}/user/setup:
    parameters:
    - name: event_id
      in: path
      description: Event Id
      required: true
      schema:
        type: string
    get:
      summary: check if user is setup for event
      operationId: updateConsumerUserIsSetup
      tags:
      - User
      description: 'Checks if the current user is setup for a specific event. Will return true if all required details are filled in for the user profile.


        This can be compared to the event''s `user_validation_configuration`.

        '
      responses:
        '200':
          description: successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  event_id:
                    type: integer
                  is_setup?:
                    type: boolean
                required:
                - event_id
                - is_setup?
  /user/resend_confirmation:
    post:
      summary: resend user confirmation email
      operationId: resendUserConfirmation
      tags:
      - User
      description: 'Resend the confirmation email to the user''s primary email address.

        '
      responses:
        '200':
          description: successful
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  status:
                    type: string
                  message:
                    type: string
  /user/web:
    get:
      summary: input user details on a rendered form
      operationId: editConsumerUserWeb
      tags:
      - User
      description: 'Renders a webpage to allow the user to set their user details.


        Once the user information has successfully been entered, a redirect will be done to a specific URL.

        '
      responses:
        '200':
          description: successful
    put:
      summary: update user details from a rendered form
      operationId: updateConsumerUserWeb
      tags:
      - User
      description: '**Private API**

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

        '
      parameters: []
      responses:
        '303':
          description: successful
        '200':
          description: failed
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties: {}
              required: []
        required: true
components:
  schemas:
    UserDetails:
      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.
        auto_cashout:
          type: boolean
          readOnly: true
          description: Auto cashouts are enabled. This setting is updated when bank account details are captured.
        cellphone_number:
          type: string
          description: Cellphone Number
        country:
          type: string
          description: Country of Residence
        city:
          type: string
          description: City of Residence
        id_number:
          type: string
          description: South African ID Number
        gender:
          type:
          - string
          - 'null'
          enum:
          - male
          - female
          - other
          - null
          description: Gender
        date_of_birth:
          type: string
          format: ISO 8601
          description: Date of Birth
        nickname:
          type:
          - string
          - 'null'
          description: Nickname
        billing_address:
          type:
          - string
          - 'null'
          description: Billing Address
        is_rsa_citizen:
          type: boolean
          description: Indicates the user is a South African Citisen. If true they will need to fill in an ID number, otherwise they will need to fill in their passprt country and number.
        passport_number:
          type:
          - string
          - 'null'
          description: Passport Number
        passport_country:
          type:
          - string
          - 'null'
          description: Passport Country
        email_confirmed?:
          type: boolean
          description: Email has been confirmed
        avatar_url:
          type:
          - string
          - 'null'
          description: Avatar URL
        required_fields:
          type: array
          description: Required fields
        allow_email:
          type:
          - boolean
          - 'null'
          description: User allows email communication
        allow_sms:
          type:
          - boolean
          - 'null'
          description: User allows SMS communication
        postal_code:
          type:
          - string
          - 'null'
          description: Postal Code
        street_and_number:
          type:
          - string
          - 'null'
          description: Street and Number
        province:
          type:
          - string
          - 'null'
          description: Province
        country_of_birth:
          type:
          - string
          - 'null'
          description: Country of Birth
        province_of_birth:
          type:
          - string
          - 'null'
          description: Province of Birth
        city_of_birth:
          type:
          - string
          - 'null'
          description: City of Birth
        medical_aid_provider:
          type:
          - string
          - 'null'
          description: Medical Aid Provider
        medical_aid_number:
          type:
          - string
          - 'null'
          description: Medical Aid Number
        emergency_contact_name:
          type:
          - string
          - 'null'
          description: Emergency Contact Name
        emergency_contact_relationship:
          type:
          - string
          - 'null'
          description: Emergency Contact Relationship
        emergency_contact_number:
          type:
          - string
          - 'null'
          description: Emergency Contact Number
        allergies:
          type:
          - string
          - 'null'
          description: Allergies
        medical_conditions:
          type:
          - string
          - 'null'
          description: Medical Conditions
        language_locale:
          type: string
          description: User language preference
        is_language_locale_manually_set:
          type: boolean
          description: Whether the language locale was manually set by the user
      required:
      - id
      - first_name
      - last_name
      - primary_email
      - dummy?
      - allow_email
      - allow_sms
  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