basePath: /api/v1
definitions:
  models.AggregateData:
    properties:
      by_dinas:
        additionalProperties:
          type: integer
        type: object
      by_jenis:
        additionalProperties:
          type: integer
        type: object
      by_status:
        additionalProperties:
          type: integer
        type: object
      created_today:
        type: integer
      last_updated:
        type: string
      total_active:
        type: integer
      total_draft:
        type: integer
      total_inactive:
        type: integer
      updated_today:
        type: integer
    type: object
  models.ErrorResponse:
    properties:
      code:
        type: integer
      error:
        type: string
      message:
        type: string
      timestamp:
        type: string
    type: object
  models.ErrorResponseBpjs:
    properties:
      code:
        type: string
      errors:
        additionalProperties: true
        type: object
      message:
        type: string
      request_id:
        type: string
      status:
        type: string
    type: object
  models.LoginRequest:
    properties:
      password:
        type: string
      username:
        type: string
    required:
    - password
    - username
    type: object
  models.MetaResponse:
    properties:
      current_page:
        type: integer
      has_next:
        type: boolean
      has_prev:
        type: boolean
      limit:
        type: integer
      offset:
        type: integer
      total:
        type: integer
      total_pages:
        type: integer
    type: object
  models.NullableInt32:
    properties:
      int32:
        type: integer
      valid:
        type: boolean
    type: object
  models.NullableString:
    properties:
      string:
        type: string
      valid:
        type: boolean
    type: object
  models.NullableTime:
    properties:
      time:
        type: string
      valid:
        type: boolean
    type: object
  models.TokenResponse:
    properties:
      access_token:
        type: string
      expires_in:
        type: integer
      token_type:
        type: string
    type: object
  models.User:
    properties:
      email:
        type: string
      id:
        type: string
      role:
        type: string
      username:
        type: string
    type: object
  peserta.PesertaData:
    properties:
      cob:
        properties:
          nmAsuransi: {}
          noAsuransi: {}
          tglTAT: {}
          tglTMT: {}
        type: object
      hakKelas:
        properties:
          keterangan:
            type: string
          kode:
            type: string
        type: object
      informasi:
        properties:
          dinsos: {}
          eSEP: {}
          noSKTM: {}
          prolanisPRB:
            type: string
        type: object
      jenisPeserta:
        properties:
          keterangan:
            type: string
          kode:
            type: string
        type: object
      mr:
        properties:
          noMR:
            type: string
          noTelepon:
            type: string
        type: object
      nama:
        type: string
      nik:
        type: string
      noKartu:
        type: string
      pisa:
        type: string
      provUmum:
        properties:
          kdProvider:
            type: string
          nmProvider:
            type: string
        type: object
      raw_response:
        type: string
      sex:
        type: string
      statusPeserta:
        properties:
          keterangan:
            type: string
          kode:
            type: string
        type: object
      tglCetakKartu:
        type: string
      tglLahir:
        type: string
      tglTAT:
        type: string
      tglTMT:
        type: string
      umur:
        properties:
          umurSaatPelayanan:
            type: string
          umurSekarang:
            type: string
        type: object
    type: object
  peserta.PesertaResponse:
    properties:
      data:
        $ref: '#/definitions/peserta.PesertaData'
      message:
        type: string
      metaData: {}
      request_id:
        type: string
      status:
        type: string
      timestamp:
        type: string
    type: object
  retribusi.Retribusi:
    properties:
      date_created:
        $ref: '#/definitions/models.NullableTime'
      date_updated:
        $ref: '#/definitions/models.NullableTime'
      dinas:
        $ref: '#/definitions/models.NullableString'
      id:
        type: string
      jenis:
        $ref: '#/definitions/models.NullableString'
      kelompok_obyek:
        $ref: '#/definitions/models.NullableString'
      kode_tarif:
        $ref: '#/definitions/models.NullableString'
      pelayanan:
        $ref: '#/definitions/models.NullableString'
      rekening_denda:
        $ref: '#/definitions/models.NullableString'
      rekening_pokok:
        $ref: '#/definitions/models.NullableString'
      satuan:
        $ref: '#/definitions/models.NullableString'
      satuan_overtime:
        $ref: '#/definitions/models.NullableString'
      sort:
        $ref: '#/definitions/models.NullableInt32'
      status:
        type: string
      tarif:
        $ref: '#/definitions/models.NullableString'
      tarif_overtime:
        $ref: '#/definitions/models.NullableString'
      uraian_1:
        $ref: '#/definitions/models.NullableString'
      uraian_2:
        $ref: '#/definitions/models.NullableString'
      uraian_3:
        $ref: '#/definitions/models.NullableString'
      user_created:
        $ref: '#/definitions/models.NullableString'
      user_updated:
        $ref: '#/definitions/models.NullableString'
    type: object
  retribusi.RetribusiCreateRequest:
    properties:
      dinas:
        maxLength: 255
        minLength: 1
        type: string
      jenis:
        maxLength: 255
        minLength: 1
        type: string
      kelompok_obyek:
        maxLength: 255
        minLength: 1
        type: string
      kode_tarif:
        maxLength: 255
        minLength: 1
        type: string
      pelayanan:
        maxLength: 255
        minLength: 1
        type: string
      rekening_denda:
        maxLength: 255
        minLength: 1
        type: string
      rekening_pokok:
        maxLength: 255
        minLength: 1
        type: string
      satuan:
        maxLength: 255
        minLength: 1
        type: string
      satuan_overtime:
        maxLength: 255
        minLength: 1
        type: string
      status:
        enum:
        - draft
        - active
        - inactive
        type: string
      tarif:
        type: string
      tarif_overtime:
        type: string
      uraian_1:
        type: string
      uraian_2:
        type: string
      uraian_3:
        type: string
    required:
    - status
    type: object
  retribusi.RetribusiCreateResponse:
    properties:
      data:
        $ref: '#/definitions/retribusi.Retribusi'
      message:
        type: string
    type: object
  retribusi.RetribusiDeleteResponse:
    properties:
      id:
        type: string
      message:
        type: string
    type: object
  retribusi.RetribusiGetByIDResponse:
    properties:
      data:
        $ref: '#/definitions/retribusi.Retribusi'
      message:
        type: string
    type: object
  retribusi.RetribusiGetResponse:
    properties:
      data:
        items:
          $ref: '#/definitions/retribusi.Retribusi'
        type: array
      message:
        type: string
      meta:
        $ref: '#/definitions/models.MetaResponse'
      summary:
        $ref: '#/definitions/models.AggregateData'
    type: object
  retribusi.RetribusiUpdateRequest:
    properties:
      dinas:
        maxLength: 255
        minLength: 1
        type: string
      jenis:
        maxLength: 255
        minLength: 1
        type: string
      kelompok_obyek:
        maxLength: 255
        minLength: 1
        type: string
      kode_tarif:
        maxLength: 255
        minLength: 1
        type: string
      pelayanan:
        maxLength: 255
        minLength: 1
        type: string
      rekening_denda:
        maxLength: 255
        minLength: 1
        type: string
      rekening_pokok:
        maxLength: 255
        minLength: 1
        type: string
      satuan:
        maxLength: 255
        minLength: 1
        type: string
      satuan_overtime:
        maxLength: 255
        minLength: 1
        type: string
      status:
        enum:
        - draft
        - active
        - inactive
        type: string
      tarif:
        type: string
      tarif_overtime:
        type: string
      uraian_1:
        type: string
      uraian_2:
        type: string
      uraian_3:
        type: string
    required:
    - status
    type: object
  retribusi.RetribusiUpdateResponse:
    properties:
      data:
        $ref: '#/definitions/retribusi.Retribusi'
      message:
        type: string
    type: object
  rujukan.DataPeserta:
    properties:
      cob:
        properties:
          nmAsuransi: {}
          noAsuransi: {}
          tglTAT: {}
          tglTMT: {}
        type: object
      hakKelas:
        properties:
          keterangan:
            type: string
          kode:
            type: string
        type: object
      informasi:
        properties:
          dinsos: {}
          noSKTM: {}
          prolanisPRB: {}
        type: object
      jenisPeserta:
        properties:
          keterangan:
            type: string
          kode:
            type: string
        type: object
      mr:
        properties:
          noMR:
            type: string
          noTelepon: {}
        type: object
      nama:
        type: string
      nik:
        type: string
      noKartu:
        type: string
      pisa:
        type: string
      provUmum:
        properties:
          kdProvider:
            type: string
          nmProvider:
            type: string
        type: object
      sex:
        type: string
      statusPeserta:
        properties:
          keterangan:
            type: string
          kode:
            type: string
        type: object
      tglCetakKartu:
        type: string
      tglLahir:
        type: string
      tglTAT:
        type: string
      tglTMT:
        type: string
      umur:
        properties:
          umurSaatPelayanan:
            type: string
          umurSekarang:
            type: string
        type: object
    type: object
  rujukan.DiagnosaData:
    properties:
      kode:
        type: string
      nama:
        type: string
    type: object
  rujukan.PelayananData:
    properties:
      kode:
        type: string
      nama:
        type: string
    type: object
  rujukan.PoliRujukanData:
    properties:
      kode:
        type: string
      nama:
        type: string
    type: object
  rujukan.ProvPerujukData:
    properties:
      kode:
        type: string
      nama:
        type: string
    type: object
  rujukan.RujukanData:
    properties:
      diagnosa:
        $ref: '#/definitions/rujukan.DiagnosaData'
      keluhan:
        type: string
      noKunjungan:
        type: string
      pelayanan:
        $ref: '#/definitions/rujukan.PelayananData'
      peserta:
        $ref: '#/definitions/rujukan.DataPeserta'
      poliRujukan:
        $ref: '#/definitions/rujukan.PoliRujukanData'
      provPerujuk:
        $ref: '#/definitions/rujukan.ProvPerujukData'
      tglKunjungan:
        type: string
    type: object
  rujukan.RujukanRequest:
    properties:
      noKartu:
        type: string
      noRujukan:
        type: string
      request_id:
        type: string
      timestamp:
        type: string
    required:
    - noRujukan
    type: object
  rujukan.RujukanResponse:
    properties:
      data:
        $ref: '#/definitions/rujukan.RujukanData'
      list:
        items:
          $ref: '#/definitions/rujukan.RujukanData'
        type: array
      message:
        type: string
      metaData: {}
      request_id:
        type: string
      status:
        type: string
      timestamp:
        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:
  /Peserta/nik/:nik:
    get:
      consumes:
      - application/json
      description: Get participant eligibility information by NIK
      parameters:
      - description: Request ID for tracking
        in: header
        name: X-Request-ID
        type: string
      - description: nik
        example: '"example_value"'
        in: path
        name: nik
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: Successfully retrieved Bynik data
          schema:
            $ref: '#/definitions/peserta.PesertaResponse'
        "400":
          description: Bad request - invalid parameters
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "401":
          description: Unauthorized - invalid API credentials
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "404":
          description: Not found - Bynik not found
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
      security:
      - ApiKeyAuth: []
      summary: Get Bynik data
      tags:
      - Peserta
  /Peserta/nokartu/:nokartu:
    get:
      consumes:
      - application/json
      description: Get participant eligibility information by card number
      parameters:
      - description: Request ID for tracking
        in: header
        name: X-Request-ID
        type: string
      - description: nokartu
        example: '"example_value"'
        in: path
        name: nokartu
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: Successfully retrieved Bynokartu data
          schema:
            $ref: '#/definitions/peserta.PesertaResponse'
        "400":
          description: Bad request - invalid parameters
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "401":
          description: Unauthorized - invalid API credentials
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "404":
          description: Not found - Bynokartu not found
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
      security:
      - ApiKeyAuth: []
      summary: Get Bynokartu data
      tags:
      - Peserta
  /Rujukan/:norujukan:
    delete:
      consumes:
      - application/json
      description: Delete existing Rujukan from BPJS system
      parameters:
      - description: Request ID for tracking
        in: header
        name: X-Request-ID
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: Successfully deleted Rujukan
          schema:
            $ref: '#/definitions/rujukan.RujukanResponse'
        "400":
          description: Bad request - invalid parameters
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "401":
          description: Unauthorized - invalid API credentials
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "404":
          description: Not found - Rujukan not found
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
      security:
      - ApiKeyAuth: []
      summary: Delete existing Rujukan
      tags:
      - Rujukan
    post:
      consumes:
      - application/json
      description: Create new Rujukan in BPJS system
      parameters:
      - description: Request ID for tracking
        in: header
        name: X-Request-ID
        type: string
      - description: Rujukan data
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/rujukan.RujukanRequest'
      produces:
      - application/json
      responses:
        "201":
          description: Successfully created Rujukan
          schema:
            $ref: '#/definitions/rujukan.RujukanResponse'
        "400":
          description: Bad request
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "401":
          description: Unauthorized
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "409":
          description: Conflict
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
      security:
      - ApiKeyAuth: []
      summary: Create new Rujukan
      tags:
      - Rujukan
    put:
      consumes:
      - application/json
      description: Update existing Rujukan in BPJS system
      parameters:
      - description: Request ID for tracking
        in: header
        name: X-Request-ID
        type: string
      - description: Rujukan update data
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/rujukan.RujukanRequest'
      produces:
      - application/json
      responses:
        "200":
          description: Successfully updated Rujukan
          schema:
            $ref: '#/definitions/rujukan.RujukanResponse'
        "400":
          description: Bad request - invalid parameters
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "401":
          description: Unauthorized - invalid API credentials
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "404":
          description: Not found - Rujukan not found
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "409":
          description: Conflict - update conflict occurred
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
      security:
      - ApiKeyAuth: []
      summary: Update existing Rujukan
      tags:
      - Rujukan
  /Rujukanbalik/:norujukan:
    delete:
      consumes:
      - application/json
      description: Delete existing Rujukanbalik from BPJS system
      parameters:
      - description: Request ID for tracking
        in: header
        name: X-Request-ID
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: Successfully deleted Rujukanbalik
          schema:
            $ref: '#/definitions/rujukan.RujukanResponse'
        "400":
          description: Bad request - invalid parameters
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "401":
          description: Unauthorized - invalid API credentials
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "404":
          description: Not found - Rujukanbalik not found
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
      security:
      - ApiKeyAuth: []
      summary: Delete existing Rujukanbalik
      tags:
      - Rujukan
    post:
      consumes:
      - application/json
      description: Create new Rujukanbalik in BPJS system
      parameters:
      - description: Request ID for tracking
        in: header
        name: X-Request-ID
        type: string
      - description: Rujukanbalik data
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/rujukan.RujukanRequest'
      produces:
      - application/json
      responses:
        "201":
          description: Successfully created Rujukanbalik
          schema:
            $ref: '#/definitions/rujukan.RujukanResponse'
        "400":
          description: Bad request
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "401":
          description: Unauthorized
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "409":
          description: Conflict
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
      security:
      - ApiKeyAuth: []
      summary: Create new Rujukanbalik
      tags:
      - Rujukan
    put:
      consumes:
      - application/json
      description: Update existing Rujukanbalik in BPJS system
      parameters:
      - description: Request ID for tracking
        in: header
        name: X-Request-ID
        type: string
      - description: Rujukanbalik update data
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/rujukan.RujukanRequest'
      produces:
      - application/json
      responses:
        "200":
          description: Successfully updated Rujukanbalik
          schema:
            $ref: '#/definitions/rujukan.RujukanResponse'
        "400":
          description: Bad request - invalid parameters
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "401":
          description: Unauthorized - invalid API credentials
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "404":
          description: Not found - Rujukanbalik not found
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "409":
          description: Conflict - update conflict occurred
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
      security:
      - ApiKeyAuth: []
      summary: Update existing Rujukanbalik
      tags:
      - Rujukan
  /api/v1/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/models.LoginRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/models.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
  /api/v1/auth/me:
    get:
      description: Get information about the currently authenticated user
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/models.User'
        "401":
          description: Unauthorized
          schema:
            additionalProperties:
              type: string
            type: object
      security:
      - Bearer: []
      summary: Get current user info
      tags:
      - Authentication
  /api/v1/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/models.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
  /api/v1/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
  /api/v1/retribusi/{id}:
    delete:
      consumes:
      - application/json
      description: Soft deletes a retribusi by setting status to 'deleted'
      parameters:
      - description: Retribusi ID (UUID)
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: Retribusi deleted successfully
          schema:
            $ref: '#/definitions/retribusi.RetribusiDeleteResponse'
        "400":
          description: Invalid ID format
          schema:
            $ref: '#/definitions/models.ErrorResponse'
        "404":
          description: Retribusi not found
          schema:
            $ref: '#/definitions/models.ErrorResponse'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponse'
      summary: Delete retribusi
      tags:
      - Retribusi
    get:
      consumes:
      - application/json
      description: Returns a single retribusi by ID
      parameters:
      - description: Retribusi ID (UUID)
        in: path
        name: id
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: Success response
          schema:
            $ref: '#/definitions/retribusi.RetribusiGetByIDResponse'
        "400":
          description: Invalid ID format
          schema:
            $ref: '#/definitions/models.ErrorResponse'
        "404":
          description: Retribusi not found
          schema:
            $ref: '#/definitions/models.ErrorResponse'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponse'
      summary: Get Retribusi by ID
      tags:
      - Retribusi
    put:
      consumes:
      - application/json
      description: Updates an existing retribusi record
      parameters:
      - description: Retribusi ID (UUID)
        in: path
        name: id
        required: true
        type: string
      - description: Retribusi update request
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/retribusi.RetribusiUpdateRequest'
      produces:
      - application/json
      responses:
        "200":
          description: Retribusi updated successfully
          schema:
            $ref: '#/definitions/retribusi.RetribusiUpdateResponse'
        "400":
          description: Bad request or validation error
          schema:
            $ref: '#/definitions/models.ErrorResponse'
        "404":
          description: Retribusi not found
          schema:
            $ref: '#/definitions/models.ErrorResponse'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponse'
      summary: Update retribusi
      tags:
      - Retribusi
  /api/v1/retribusis:
    get:
      consumes:
      - application/json
      description: Returns a paginated list of retribusis with optional summary statistics
      parameters:
      - default: 10
        description: Limit (max 100)
        in: query
        name: limit
        type: integer
      - default: 0
        description: Offset
        in: query
        name: offset
        type: integer
      - default: false
        description: Include aggregation summary
        in: query
        name: include_summary
        type: boolean
      - description: Filter by status
        in: query
        name: status
        type: string
      - description: Filter by jenis
        in: query
        name: jenis
        type: string
      - description: Filter by dinas
        in: query
        name: dinas
        type: string
      - description: Search in multiple fields
        in: query
        name: search
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: Success response
          schema:
            $ref: '#/definitions/retribusi.RetribusiGetResponse'
        "400":
          description: Bad request
          schema:
            $ref: '#/definitions/models.ErrorResponse'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponse'
      summary: Get retribusi with pagination and optional aggregation
      tags:
      - Retribusi
    post:
      consumes:
      - application/json
      description: Creates a new retribusi record
      parameters:
      - description: Retribusi creation request
        in: body
        name: request
        required: true
        schema:
          $ref: '#/definitions/retribusi.RetribusiCreateRequest'
      produces:
      - application/json
      responses:
        "201":
          description: Retribusi created successfully
          schema:
            $ref: '#/definitions/retribusi.RetribusiCreateResponse'
        "400":
          description: Bad request or validation error
          schema:
            $ref: '#/definitions/models.ErrorResponse'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponse'
      summary: Create retribusi
      tags:
      - Retribusi
  /api/v1/retribusis/dynamic:
    get:
      consumes:
      - application/json
      description: Returns retribusis with advanced dynamic filtering like Directus
      parameters:
      - description: Fields to select (e.g., fields=*.*)
        in: query
        name: fields
        type: string
      - description: Dynamic filters (e.g., filter[Jenis][_eq]=value)
        in: query
        name: filter[column][operator]
        type: string
      - description: Sort fields (e.g., sort=date_created,-Jenis)
        in: query
        name: sort
        type: string
      - default: 10
        description: Limit
        in: query
        name: limit
        type: integer
      - default: 0
        description: Offset
        in: query
        name: offset
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: Success response
          schema:
            $ref: '#/definitions/retribusi.RetribusiGetResponse'
        "400":
          description: Bad request
          schema:
            $ref: '#/definitions/models.ErrorResponse'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponse'
      summary: Get retribusi with dynamic filtering
      tags:
      - Retribusi
  /api/v1/retribusis/stats:
    get:
      consumes:
      - application/json
      description: Returns comprehensive statistics about retribusi data
      parameters:
      - description: Filter statistics by status
        in: query
        name: status
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: Statistics data
          schema:
            $ref: '#/definitions/models.AggregateData'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponse'
      summary: Get retribusi statistics
      tags:
      - Retribusi
  /api/v1/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/models.LoginRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/models.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
  /api/v1/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/models.TokenResponse'
        "400":
          description: Bad request
          schema:
            additionalProperties:
              type: string
            type: object
      summary: Generate token directly
      tags:
      - Token
  /bynokartu/:nokartu:
    get:
      consumes:
      - application/json
      description: Get rujukan by card number
      parameters:
      - description: Request ID for tracking
        in: header
        name: X-Request-ID
        type: string
      - description: nokartu
        example: '"example_value"'
        in: path
        name: nokartu
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: Successfully retrieved Bynokartu data
          schema:
            $ref: '#/definitions/rujukan.RujukanResponse'
        "400":
          description: Bad request - invalid parameters
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "401":
          description: Unauthorized - invalid API credentials
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "404":
          description: Not found - Bynokartu not found
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
      security:
      - ApiKeyAuth: []
      summary: Get Bynokartu data
      tags:
      - Rujukan
  /bynorujukan/:norujukan:
    get:
      consumes:
      - application/json
      description: Get rujukan by nomor rujukan
      parameters:
      - description: Request ID for tracking
        in: header
        name: X-Request-ID
        type: string
      - description: norujukan
        example: '"example_value"'
        in: path
        name: norujukan
        required: true
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: Successfully retrieved Bynorujukan data
          schema:
            $ref: '#/definitions/rujukan.RujukanResponse'
        "400":
          description: Bad request - invalid parameters
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "401":
          description: Unauthorized - invalid API credentials
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "404":
          description: Not found - Bynorujukan not found
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
        "500":
          description: Internal server error
          schema:
            $ref: '#/definitions/models.ErrorResponseBpjs'
      security:
      - ApiKeyAuth: []
      summary: Get Bynorujukan data
      tags:
      - Rujukan
schemes:
- http
- https
swagger: "2.0"
