global:
  module_name: "api-service"
  output_dir: "internal/handlers"
  enable_swagger: true
  enable_logging: true

# services:
#   retribusi:
#     name: "Retribusi"
#     category: "retribusi"
#     package: "retribusi"
#     description: "Retribusi service for tariff and billing management"
#     base_url: ""
#     timeout: 30
#     retry_count: 3

services:
  qris:
    name: "QRIS"
    category: "qris"
    package: "qris"
    description: "QRIS service for QR code payment management"
    base_url: ""
    timeout: 30
    retry_count: 3

    endpoints:
      qris:
        description: "QRIS management"
        handler_folder: "qris"
        handler_file: "qris.go"
        handler_name: "QRIS"
        table_name: "m_deviceqris"
        functions:
          create:
            methods: ["POST"]
            path: "/broadcast/qris"
            post_routes: "/broadcast/qris"
            post_path: "/broadcast/qris"
            model: "QrisCreateRequest"
            response_model: "QrisCreateResponse"
            request_model: "QrisCreateRequest"
            description: "Send new QRIS broadcast"
            summary: "Send QRIS"
            tags: ["QRIS"]
            require_auth: true
            cache_enabled: false
            enable_database: true
            cache_ttl: 0

          create:
            methods: ["POST"]
            path: "/broadcast/check"
            post_routes: "/broadcast/check"
            post_path: "/broadcast/check"
            model: "QrisCreateRequest"
            response_model: "QrisCreateResponse"
            request_model: "QrisCreateRequest"
            description: "Send new QRIS check broadcast"
            summary: "Send QRIS check"
            tags: ["QRIS"]
            require_auth: true
            cache_enabled: false
            enable_database: true
            cache_ttl: 0

#     endpoints:
      # retribusi:
      #   description: "Retribusi tariff management"
      #   handler_folder: "retribusi"
      #   handler_file: "retribusi.go"
      #   handler_name: "Retribusi"
      #   table_name: "data_retribusi"
      #   functions:
      #     list:
      #       methods: ["GET"]
      #       path: "/"
      #       get_routes: "/"
      #       get_path: "/"
      #       model: "Retribusi"
      #       response_model: "RetribusiGetResponse"
      #       description: "Get retribusi list with pagination and filters"
      #       summary: "Get Retribusi List"
      #       tags: ["Retribusi"]
      #       require_auth: true
      #       cache_enabled: true
      #       enable_database: true
      #       cache_ttl: 300
      #       has_pagination: true
      #       has_filter: true
      #       has_search: true
      #       has_stats: true

      #     get:
      #       methods: ["GET"]
      #       path: "/:id"
      #       get_routes: "/:id"
      #       get_path: "/:id"
      #       model: "Retribusi"
      #       response_model: "RetribusiGetByIDResponse"
      #       description: "Get retribusi by ID"
      #       summary: "Get Retribusi by ID"
      #       tags: ["Retribusi"]
      #       require_auth: true
      #       cache_enabled: true
      #       enable_database: true
      #       cache_ttl: 300

      #     dynamic:
      #       methods: ["GET"]
      #       path: "/dynamic"
      #       get_routes: "/dynamic"
      #       get_path: "/dynamic"
      #       model: "Retribusi"
      #       response_model: "RetribusiGetResponse"
      #       description: "Get retribusi with dynamic filtering"
      #       summary: "Get Retribusi Dynamic"
      #       tags: ["Retribusi"]
      #       require_auth: true
      #       cache_enabled: true
      #       enable_database: true
      #       cache_ttl: 300
      #       has_dynamic: true

      #     search:
      #       methods: ["GET"]
      #       path: "/search"
      #       get_routes: "/search"
      #       get_path: "/search"
      #       model: "Retribusi"
      #       response_model: "RetribusiGetResponse"
      #       description: "Search retribusi"
      #       summary: "Search Retribusi"
      #       tags: ["Retribusi"]
      #       require_auth: true
      #       cache_enabled: true
      #       enable_database: true
      #       cache_ttl: 300
      #       has_search: true

      #     create:
      #       methods: ["POST"]
      #       path: "/"
      #       post_routes: "/"
      #       post_path: "/"
      #       model: "RetribusiCreateRequest"
      #       response_model: "RetribusiCreateResponse"
      #       request_model: "RetribusiCreateRequest"
      #       description: "Create new retribusi"
      #       summary: "Create Retribusi"
      #       tags: ["Retribusi"]
      #       require_auth: true
      #       cache_enabled: false
      #       enable_database: true
      #       cache_ttl: 0

          # update:
          #   methods: ["PUT"]
          #   path: "/:id"
          #   put_routes: "/:id"
          #   put_path: "/:id"
          #   model: "RetribusiUpdateRequest"
          #   response_model: "RetribusiUpdateResponse"
          #   request_model: "RetribusiUpdateRequest"
          #   description: "Update retribusi"
          #   summary: "Update Retribusi"
          #   tags: ["Retribusi"]
          #   require_auth: true
          #   cache_enabled: false
          #   enable_database: true
          #   cache_ttl: 0

          # delete:
          #   methods: ["DELETE"]
          #   path: "/:id"
          #   delete_routes: "/:id"
          #   delete_path: "/:id"
          #   model: "Retribusi"
          #   response_model: "RetribusiDeleteResponse"
          #   description: "Delete retribusi"
          #   summary: "Delete Retribusi"
          #   tags: ["Retribusi"]
          #   require_auth: true
          #   cache_enabled: false
          #   enable_database: true
          #   cache_ttl: 0

          # stats:
          #   methods: ["GET"]
          #   path: "/stats"
          #   get_routes: "/stats"
          #   get_path: "/stats"
          #   model: "AggregateData"
          #   response_model: "AggregateData"
          #   description: "Get retribusi statistics"
          #   summary: "Get Retribusi Stats"
          #   tags: ["Retribusi"]
          #   require_auth: true
          #   cache_enabled: true
          #   enable_database: true
          #   cache_ttl: 180
          #   has_stats: true

  # Example of another service
  # user:
  #   name: "User"
  #   category: "user"
  #   package: "user"
  #   description: "User management service"
  #   base_url: ""
  #   timeout: 30
  #   retry_count: 3

  #   endpoints:
  #     user:
  #       description: "User management endpoints"
  #       handler_folder: "retribusi"
  #       handler_file: "user.go"
  #       handler_name: "User"
  #       table_name: "data_user"
  #       functions:
  #         list:
  #           methods: ["GET"]
  #           path: "/"
  #           get_routes: "/"
  #           get_path: "/"
  #           model: "User"
  #           response_model: "UserGetResponse"
  #           description: "Get user list with pagination"
  #           summary: "Get User List"
  #           tags: ["User"]
  #           require_auth: true
  #           cache_enabled: true
  #           enable_database: true
  #           cache_ttl: 300
  #           has_pagination: true
  #           has_filter: true
  #           has_search: true

  #         get:
  #           methods: ["GET"]
  #           path: "/:id"
  #           get_routes: "/:id"
  #           get_path: "/:id"
  #           model: "User"
  #           response_model: "UserGetByIDResponse"
  #           description: "Get user by ID"
  #           summary: "Get User by ID"
  #           tags: ["User"]
  #           require_auth: true
  #           cache_enabled: true
  #           enable_database: true
  #           cache_ttl: 300

  #         create:
  #           methods: ["POST"]
  #           path: "/"
  #           post_routes: "/"
  #           post_path: "/"
  #           model: "UserCreateRequest"
  #           response_model: "UserCreateResponse"
  #           request_model: "UserCreateRequest"
  #           description: "Create new user"
  #           summary: "Create User"
  #           tags: ["User"]
  #           require_auth: true
  #           cache_enabled: false
  #           enable_database: true
  #           cache_ttl: 0

  #         update:
  #           methods: ["PUT"]
  #           path: "/:id"
  #           put_routes: "/:id"
  #           put_path: "/:id"
  #           model: "UserUpdateRequest"
  #           response_model: "UserUpdateResponse"
  #           request_model: "UserUpdateRequest"
  #           description: "Update user"
  #           summary: "Update User"
  #           tags: ["User"]
  #           require_auth: true
  #           cache_enabled: false
  #           enable_database: true
  #           cache_ttl: 0

  #         delete:
  #           methods: ["DELETE"]
  #           path: "/:id"
  #           delete_routes: "/:id"
  #           delete_path: "/:id"
  #           model: "User"
  #           response_model: "UserDeleteResponse"
  #           description: "Delete user"
  #           summary: "Delete User"
  #           tags: ["User"]
  #           require_auth: true
  #           cache_enabled: false
  #           enable_database: true
  #           cache_ttl: 0
