basePath: /api/v1
definitions:
  api-service_internal_models_auth.LoginRequest:
    properties:
      password:
        type: string
      username:
        type: string
    required:
    - password
    - username
    type: object
  api-service_internal_models_auth.TokenResponse:
    properties:
      access_token:
        type: string
      expires_in:
        type: integer
      token_type:
        type: string
    type: object
  api-service_internal_models_auth.User:
    properties:
      email:
        type: string
      id:
        type: string
      role:
        type: string
      username:
        type: string
    type: object
host: localhost:8080
info:
  contact:
    email: support@swagger.io
    name: API Support
    url: http://www.swagger.io/support
  description: A comprehensive Go API service with Swagger documentation
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0.html
  termsOfService: http://swagger.io/terms/
  title: API Service
  version: 1.0.0
paths:
  /auth/login:
    post:
      consumes:
      - application/json
      description: Authenticate user with username and password to receive JWT token
      parameters:
      - description: Login credentials
        in: body
        name: login
        required: true
        schema:
          $ref: '#/definitions/api-service_internal_models_auth.LoginRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/api-service_internal_models_auth.TokenResponse'
        "400":
          description: Bad request
          schema:
            additionalProperties:
              type: string
            type: object
        "401":
          description: Unauthorized
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Login user and get JWT token
      tags:
      - Authentication
  /auth/me:
    get:
      description: Get information about the currently authenticated user
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/api-service_internal_models_auth.User'
        "401":
          description: Unauthorized
          schema:
            additionalProperties:
              type: string
            type: object
      security:
      - Bearer: []
      summary: Get current user info
      tags:
      - Authentication
  /auth/refresh:
    post:
      consumes:
      - application/json
      description: Refresh the JWT token using a valid refresh token
      parameters:
      - description: Refresh token
        in: body
        name: refresh
        required: true
        schema:
          additionalProperties:
            type: string
          type: object
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/api-service_internal_models_auth.TokenResponse'
        "400":
          description: Bad request
          schema:
            additionalProperties:
              type: string
            type: object
        "401":
          description: Unauthorized
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Refresh JWT token
      tags:
      - Authentication
  /auth/register:
    post:
      consumes:
      - application/json
      description: Register a new user account
      parameters:
      - description: Registration data
        in: body
        name: register
        required: true
        schema:
          additionalProperties:
            type: string
          type: object
      produces:
      - application/json
      responses:
        "201":
          description: Created
          schema:
            additionalProperties:
              type: string
            type: object
        "400":
          description: Bad request
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Register new user
      tags:
      - Authentication
  /token/generate:
    post:
      consumes:
      - application/json
      description: Generate a JWT token for a user
      parameters:
      - description: User credentials
        in: body
        name: token
        required: true
        schema:
          $ref: '#/definitions/api-service_internal_models_auth.LoginRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/api-service_internal_models_auth.TokenResponse'
        "400":
          description: Bad request
          schema:
            additionalProperties:
              type: string
            type: object
        "401":
          description: Unauthorized
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Generate JWT token
      tags:
      - Token
  /token/generate-direct:
    post:
      consumes:
      - application/json
      description: Generate a JWT token directly without password verification (for
        testing)
      parameters:
      - description: User info
        in: body
        name: user
        required: true
        schema:
          additionalProperties:
            type: string
          type: object
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/api-service_internal_models_auth.TokenResponse'
        "400":
          description: Bad request
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Generate token directly
      tags:
      - Token
  /ws/broadcast/check:
    post:
      consumes:
      - application/json
      description: Creates and broadcasts a WebSocket message with the specified type
        and data
      parameters:
      - description: Type of the message to broadcast
        in: path
        name: messageType
        required: true
        type: string
      - description: Data payload for the message
        in: body
        name: data
        required: true
        schema: {}
      produces:
      - application/json
      responses:
        "200":
          description: Message successfully queued for broadcast
          schema:
            additionalProperties:
              type: string
            type: object
        "500":
          description: Failed to queue message (queue full)
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Broadcast a WebSocket message
      tags:
      - WebSocket QRIS
  /ws/broadcast/qris:
    post:
      consumes:
      - application/json
      description: Creates and broadcasts a WebSocket message with the specified type
        and data for QRIS operations
      parameters:
      - description: Type of the QRIS message to broadcast
        in: path
        name: messageType
        required: true
        type: string
      - description: QRIS data payload for the message
        in: body
        name: data
        required: true
        schema: {}
      produces:
      - application/json
      responses:
        "200":
          description: QRIS message successfully queued for broadcast
          schema:
            additionalProperties:
              type: string
            type: object
        "500":
          description: Failed to queue QRIS message (queue full)
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Broadcast a QRIS-related WebSocket message
      tags:
      - WebSocket QRIS
schemes:
- http
- https
swagger: "2.0"
