// Package docs Code generated by swaggo/swag. DO NOT EDIT
package docs

import "github.com/swaggo/swag"

const docTemplate = `{
    "schemes": {{ marshal .Schemes }},
    "swagger": "2.0",
    "info": {
        "description": "{{escape .Description}}",
        "title": "{{.Title}}",
        "termsOfService": "http://swagger.io/terms/",
        "contact": {
            "name": "API Support",
            "url": "http://www.swagger.io/support",
            "email": "support@swagger.io"
        },
        "license": {
            "name": "Apache 2.0",
            "url": "http://www.apache.org/licenses/LICENSE-2.0.html"
        },
        "version": "{{.Version}}"
    },
    "host": "{{.Host}}",
    "basePath": "{{.BasePath}}",
    "paths": {
        "/Peserta/nik/:nik": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Get participant eligibility information by NIK",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Peserta"
                ],
                "summary": "Get Bynik data",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Request ID for tracking",
                        "name": "X-Request-ID",
                        "in": "header"
                    },
                    {
                        "type": "string",
                        "example": "\"example_value\"",
                        "description": "nik",
                        "name": "nik",
                        "in": "path",
                        "required": true
                    }
                ],
                "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"
                        }
                    }
                }
            }
        },
        "/Peserta/nokartu/:nokartu": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Get participant eligibility information by card number",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Peserta"
                ],
                "summary": "Get Bynokartu data",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Request ID for tracking",
                        "name": "X-Request-ID",
                        "in": "header"
                    },
                    {
                        "type": "string",
                        "example": "\"example_value\"",
                        "description": "nokartu",
                        "name": "nokartu",
                        "in": "path",
                        "required": true
                    }
                ],
                "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"
                        }
                    }
                }
            }
        },
        "/Rujukan/:norujukan": {
            "put": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Update existing Rujukan in BPJS system",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Rujukan"
                ],
                "summary": "Update existing Rujukan",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Request ID for tracking",
                        "name": "X-Request-ID",
                        "in": "header"
                    },
                    {
                        "description": "Rujukan update data",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/rujukan.RujukanRequest"
                        }
                    }
                ],
                "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"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Create new Rujukan in BPJS system",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Rujukan"
                ],
                "summary": "Create new Rujukan",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Request ID for tracking",
                        "name": "X-Request-ID",
                        "in": "header"
                    },
                    {
                        "description": "Rujukan data",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/rujukan.RujukanRequest"
                        }
                    }
                ],
                "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"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Delete existing Rujukan from BPJS system",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Rujukan"
                ],
                "summary": "Delete existing Rujukan",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Request ID for tracking",
                        "name": "X-Request-ID",
                        "in": "header"
                    }
                ],
                "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"
                        }
                    }
                }
            }
        },
        "/Rujukanbalik/:norujukan": {
            "put": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Update existing Rujukanbalik in BPJS system",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Rujukan"
                ],
                "summary": "Update existing Rujukanbalik",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Request ID for tracking",
                        "name": "X-Request-ID",
                        "in": "header"
                    },
                    {
                        "description": "Rujukanbalik update data",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/rujukan.RujukanRequest"
                        }
                    }
                ],
                "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"
                        }
                    }
                }
            },
            "post": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Create new Rujukanbalik in BPJS system",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Rujukan"
                ],
                "summary": "Create new Rujukanbalik",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Request ID for tracking",
                        "name": "X-Request-ID",
                        "in": "header"
                    },
                    {
                        "description": "Rujukanbalik data",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/rujukan.RujukanRequest"
                        }
                    }
                ],
                "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"
                        }
                    }
                }
            },
            "delete": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Delete existing Rujukanbalik from BPJS system",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Rujukan"
                ],
                "summary": "Delete existing Rujukanbalik",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Request ID for tracking",
                        "name": "X-Request-ID",
                        "in": "header"
                    }
                ],
                "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"
                        }
                    }
                }
            }
        },
        "/api/v1/auth/login": {
            "post": {
                "description": "Authenticate user with username and password to receive JWT token",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Authentication"
                ],
                "summary": "Login user and get JWT token",
                "parameters": [
                    {
                        "description": "Login credentials",
                        "name": "login",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/models.LoginRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/models.TokenResponse"
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/auth/me": {
            "get": {
                "security": [
                    {
                        "Bearer": []
                    }
                ],
                "description": "Get information about the currently authenticated user",
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Authentication"
                ],
                "summary": "Get current user info",
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/models.User"
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/auth/refresh": {
            "post": {
                "description": "Refresh the JWT token using a valid refresh token",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Authentication"
                ],
                "summary": "Refresh JWT token",
                "parameters": [
                    {
                        "description": "Refresh token",
                        "name": "refresh",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/models.TokenResponse"
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/auth/register": {
            "post": {
                "description": "Register a new user account",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Authentication"
                ],
                "summary": "Register new user",
                "parameters": [
                    {
                        "description": "Registration data",
                        "name": "register",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                ],
                "responses": {
                    "201": {
                        "description": "Created",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/retribusi/{id}": {
            "get": {
                "description": "Returns a single retribusi by ID",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Retribusi"
                ],
                "summary": "Get Retribusi by ID",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Retribusi ID (UUID)",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "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"
                        }
                    }
                }
            },
            "put": {
                "description": "Updates an existing retribusi record",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Retribusi"
                ],
                "summary": "Update retribusi",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Retribusi ID (UUID)",
                        "name": "id",
                        "in": "path",
                        "required": true
                    },
                    {
                        "description": "Retribusi update request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/retribusi.RetribusiUpdateRequest"
                        }
                    }
                ],
                "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"
                        }
                    }
                }
            },
            "delete": {
                "description": "Soft deletes a retribusi by setting status to 'deleted'",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Retribusi"
                ],
                "summary": "Delete retribusi",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Retribusi ID (UUID)",
                        "name": "id",
                        "in": "path",
                        "required": true
                    }
                ],
                "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"
                        }
                    }
                }
            }
        },
        "/api/v1/retribusis": {
            "get": {
                "description": "Returns a paginated list of retribusis with optional summary statistics",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Retribusi"
                ],
                "summary": "Get retribusi with pagination and optional aggregation",
                "parameters": [
                    {
                        "type": "integer",
                        "default": 10,
                        "description": "Limit (max 100)",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Offset",
                        "name": "offset",
                        "in": "query"
                    },
                    {
                        "type": "boolean",
                        "default": false,
                        "description": "Include aggregation summary",
                        "name": "include_summary",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Filter by status",
                        "name": "status",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Filter by jenis",
                        "name": "jenis",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Filter by dinas",
                        "name": "dinas",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Search in multiple fields",
                        "name": "search",
                        "in": "query"
                    }
                ],
                "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"
                        }
                    }
                }
            },
            "post": {
                "description": "Creates a new retribusi record",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Retribusi"
                ],
                "summary": "Create retribusi",
                "parameters": [
                    {
                        "description": "Retribusi creation request",
                        "name": "request",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/retribusi.RetribusiCreateRequest"
                        }
                    }
                ],
                "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"
                        }
                    }
                }
            }
        },
        "/api/v1/retribusis/dynamic": {
            "get": {
                "description": "Returns retribusis with advanced dynamic filtering like Directus",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Retribusi"
                ],
                "summary": "Get retribusi with dynamic filtering",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Fields to select (e.g., fields=*.*)",
                        "name": "fields",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Dynamic filters (e.g., filter[Jenis][_eq]=value)",
                        "name": "filter[column][operator]",
                        "in": "query"
                    },
                    {
                        "type": "string",
                        "description": "Sort fields (e.g., sort=date_created,-Jenis)",
                        "name": "sort",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 10,
                        "description": "Limit",
                        "name": "limit",
                        "in": "query"
                    },
                    {
                        "type": "integer",
                        "default": 0,
                        "description": "Offset",
                        "name": "offset",
                        "in": "query"
                    }
                ],
                "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"
                        }
                    }
                }
            }
        },
        "/api/v1/retribusis/stats": {
            "get": {
                "description": "Returns comprehensive statistics about retribusi data",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Retribusi"
                ],
                "summary": "Get retribusi statistics",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Filter statistics by status",
                        "name": "status",
                        "in": "query"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "Statistics data",
                        "schema": {
                            "$ref": "#/definitions/models.AggregateData"
                        }
                    },
                    "500": {
                        "description": "Internal server error",
                        "schema": {
                            "$ref": "#/definitions/models.ErrorResponse"
                        }
                    }
                }
            }
        },
        "/api/v1/token/generate": {
            "post": {
                "description": "Generate a JWT token for a user",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Token"
                ],
                "summary": "Generate JWT token",
                "parameters": [
                    {
                        "description": "User credentials",
                        "name": "token",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "$ref": "#/definitions/models.LoginRequest"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/models.TokenResponse"
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    },
                    "401": {
                        "description": "Unauthorized",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/api/v1/token/generate-direct": {
            "post": {
                "description": "Generate a JWT token directly without password verification (for testing)",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Token"
                ],
                "summary": "Generate token directly",
                "parameters": [
                    {
                        "description": "User info",
                        "name": "user",
                        "in": "body",
                        "required": true,
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "schema": {
                            "$ref": "#/definitions/models.TokenResponse"
                        }
                    },
                    "400": {
                        "description": "Bad request",
                        "schema": {
                            "type": "object",
                            "additionalProperties": {
                                "type": "string"
                            }
                        }
                    }
                }
            }
        },
        "/bynokartu/:nokartu": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Get rujukan by card number",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Rujukan"
                ],
                "summary": "Get Bynokartu data",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Request ID for tracking",
                        "name": "X-Request-ID",
                        "in": "header"
                    },
                    {
                        "type": "string",
                        "example": "\"example_value\"",
                        "description": "nokartu",
                        "name": "nokartu",
                        "in": "path",
                        "required": true
                    }
                ],
                "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"
                        }
                    }
                }
            }
        },
        "/bynorujukan/:norujukan": {
            "get": {
                "security": [
                    {
                        "ApiKeyAuth": []
                    }
                ],
                "description": "Get rujukan by nomor rujukan",
                "consumes": [
                    "application/json"
                ],
                "produces": [
                    "application/json"
                ],
                "tags": [
                    "Rujukan"
                ],
                "summary": "Get Bynorujukan data",
                "parameters": [
                    {
                        "type": "string",
                        "description": "Request ID for tracking",
                        "name": "X-Request-ID",
                        "in": "header"
                    },
                    {
                        "type": "string",
                        "example": "\"example_value\"",
                        "description": "norujukan",
                        "name": "norujukan",
                        "in": "path",
                        "required": true
                    }
                ],
                "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"
                        }
                    }
                }
            }
        }
    },
    "definitions": {
        "models.AggregateData": {
            "type": "object",
            "properties": {
                "by_dinas": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer"
                    }
                },
                "by_jenis": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer"
                    }
                },
                "by_status": {
                    "type": "object",
                    "additionalProperties": {
                        "type": "integer"
                    }
                },
                "created_today": {
                    "type": "integer"
                },
                "last_updated": {
                    "type": "string"
                },
                "total_active": {
                    "type": "integer"
                },
                "total_draft": {
                    "type": "integer"
                },
                "total_inactive": {
                    "type": "integer"
                },
                "updated_today": {
                    "type": "integer"
                }
            }
        },
        "models.ErrorResponse": {
            "type": "object",
            "properties": {
                "code": {
                    "type": "integer"
                },
                "error": {
                    "type": "string"
                },
                "message": {
                    "type": "string"
                },
                "timestamp": {
                    "type": "string"
                }
            }
        },
        "models.ErrorResponseBpjs": {
            "type": "object",
            "properties": {
                "code": {
                    "type": "string"
                },
                "errors": {
                    "type": "object",
                    "additionalProperties": true
                },
                "message": {
                    "type": "string"
                },
                "request_id": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                }
            }
        },
        "models.LoginRequest": {
            "type": "object",
            "required": [
                "password",
                "username"
            ],
            "properties": {
                "password": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "models.MetaResponse": {
            "type": "object",
            "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"
                }
            }
        },
        "models.NullableInt32": {
            "type": "object",
            "properties": {
                "int32": {
                    "type": "integer"
                },
                "valid": {
                    "type": "boolean"
                }
            }
        },
        "models.NullableString": {
            "type": "object",
            "properties": {
                "string": {
                    "type": "string"
                },
                "valid": {
                    "type": "boolean"
                }
            }
        },
        "models.NullableTime": {
            "type": "object",
            "properties": {
                "time": {
                    "type": "string"
                },
                "valid": {
                    "type": "boolean"
                }
            }
        },
        "models.TokenResponse": {
            "type": "object",
            "properties": {
                "access_token": {
                    "type": "string"
                },
                "expires_in": {
                    "type": "integer"
                },
                "token_type": {
                    "type": "string"
                }
            }
        },
        "models.User": {
            "type": "object",
            "properties": {
                "email": {
                    "type": "string"
                },
                "id": {
                    "type": "string"
                },
                "role": {
                    "type": "string"
                },
                "username": {
                    "type": "string"
                }
            }
        },
        "peserta.PesertaData": {
            "type": "object",
            "properties": {
                "cob": {
                    "type": "object",
                    "properties": {
                        "nmAsuransi": {},
                        "noAsuransi": {},
                        "tglTAT": {},
                        "tglTMT": {}
                    }
                },
                "hakKelas": {
                    "type": "object",
                    "properties": {
                        "keterangan": {
                            "type": "string"
                        },
                        "kode": {
                            "type": "string"
                        }
                    }
                },
                "informasi": {
                    "type": "object",
                    "properties": {
                        "dinsos": {},
                        "eSEP": {},
                        "noSKTM": {},
                        "prolanisPRB": {
                            "type": "string"
                        }
                    }
                },
                "jenisPeserta": {
                    "type": "object",
                    "properties": {
                        "keterangan": {
                            "type": "string"
                        },
                        "kode": {
                            "type": "string"
                        }
                    }
                },
                "mr": {
                    "type": "object",
                    "properties": {
                        "noMR": {
                            "type": "string"
                        },
                        "noTelepon": {
                            "type": "string"
                        }
                    }
                },
                "nama": {
                    "type": "string"
                },
                "nik": {
                    "type": "string"
                },
                "noKartu": {
                    "type": "string"
                },
                "pisa": {
                    "type": "string"
                },
                "provUmum": {
                    "type": "object",
                    "properties": {
                        "kdProvider": {
                            "type": "string"
                        },
                        "nmProvider": {
                            "type": "string"
                        }
                    }
                },
                "sex": {
                    "type": "string"
                },
                "statusPeserta": {
                    "type": "object",
                    "properties": {
                        "keterangan": {
                            "type": "string"
                        },
                        "kode": {
                            "type": "string"
                        }
                    }
                },
                "tglCetakKartu": {
                    "type": "string"
                },
                "tglLahir": {
                    "type": "string"
                },
                "tglTAT": {
                    "type": "string"
                },
                "tglTMT": {
                    "type": "string"
                },
                "umur": {
                    "type": "object",
                    "properties": {
                        "umurSaatPelayanan": {
                            "type": "string"
                        },
                        "umurSekarang": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "peserta.PesertaResponse": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/peserta.PesertaData"
                },
                "message": {
                    "type": "string"
                },
                "metaData": {},
                "request_id": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "timestamp": {
                    "type": "string"
                }
            }
        },
        "retribusi.Retribusi": {
            "type": "object",
            "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"
                }
            }
        },
        "retribusi.RetribusiCreateRequest": {
            "type": "object",
            "required": [
                "status"
            ],
            "properties": {
                "dinas": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "jenis": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "kelompok_obyek": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "kode_tarif": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "pelayanan": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "rekening_denda": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "rekening_pokok": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "satuan": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "satuan_overtime": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "status": {
                    "type": "string",
                    "enum": [
                        "draft",
                        "active",
                        "inactive"
                    ]
                },
                "tarif": {
                    "type": "string"
                },
                "tarif_overtime": {
                    "type": "string"
                },
                "uraian_1": {
                    "type": "string"
                },
                "uraian_2": {
                    "type": "string"
                },
                "uraian_3": {
                    "type": "string"
                }
            }
        },
        "retribusi.RetribusiCreateResponse": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/retribusi.Retribusi"
                },
                "message": {
                    "type": "string"
                }
            }
        },
        "retribusi.RetribusiDeleteResponse": {
            "type": "object",
            "properties": {
                "id": {
                    "type": "string"
                },
                "message": {
                    "type": "string"
                }
            }
        },
        "retribusi.RetribusiGetByIDResponse": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/retribusi.Retribusi"
                },
                "message": {
                    "type": "string"
                }
            }
        },
        "retribusi.RetribusiGetResponse": {
            "type": "object",
            "properties": {
                "data": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/retribusi.Retribusi"
                    }
                },
                "message": {
                    "type": "string"
                },
                "meta": {
                    "$ref": "#/definitions/models.MetaResponse"
                },
                "summary": {
                    "$ref": "#/definitions/models.AggregateData"
                }
            }
        },
        "retribusi.RetribusiUpdateRequest": {
            "type": "object",
            "required": [
                "status"
            ],
            "properties": {
                "dinas": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "jenis": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "kelompok_obyek": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "kode_tarif": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "pelayanan": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "rekening_denda": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "rekening_pokok": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "satuan": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "satuan_overtime": {
                    "type": "string",
                    "maxLength": 255,
                    "minLength": 1
                },
                "status": {
                    "type": "string",
                    "enum": [
                        "draft",
                        "active",
                        "inactive"
                    ]
                },
                "tarif": {
                    "type": "string"
                },
                "tarif_overtime": {
                    "type": "string"
                },
                "uraian_1": {
                    "type": "string"
                },
                "uraian_2": {
                    "type": "string"
                },
                "uraian_3": {
                    "type": "string"
                }
            }
        },
        "retribusi.RetribusiUpdateResponse": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/retribusi.Retribusi"
                },
                "message": {
                    "type": "string"
                }
            }
        },
        "rujukan.DataPeserta": {
            "type": "object",
            "properties": {
                "cob": {
                    "type": "object",
                    "properties": {
                        "nmAsuransi": {},
                        "noAsuransi": {},
                        "tglTAT": {},
                        "tglTMT": {}
                    }
                },
                "hakKelas": {
                    "type": "object",
                    "properties": {
                        "keterangan": {
                            "type": "string"
                        },
                        "kode": {
                            "type": "string"
                        }
                    }
                },
                "informasi": {
                    "type": "object",
                    "properties": {
                        "dinsos": {},
                        "noSKTM": {},
                        "prolanisPRB": {}
                    }
                },
                "jenisPeserta": {
                    "type": "object",
                    "properties": {
                        "keterangan": {
                            "type": "string"
                        },
                        "kode": {
                            "type": "string"
                        }
                    }
                },
                "mr": {
                    "type": "object",
                    "properties": {
                        "noMR": {
                            "type": "string"
                        },
                        "noTelepon": {}
                    }
                },
                "nama": {
                    "type": "string"
                },
                "nik": {
                    "type": "string"
                },
                "noKartu": {
                    "type": "string"
                },
                "pisa": {
                    "type": "string"
                },
                "provUmum": {
                    "type": "object",
                    "properties": {
                        "kdProvider": {
                            "type": "string"
                        },
                        "nmProvider": {
                            "type": "string"
                        }
                    }
                },
                "sex": {
                    "type": "string"
                },
                "statusPeserta": {
                    "type": "object",
                    "properties": {
                        "keterangan": {
                            "type": "string"
                        },
                        "kode": {
                            "type": "string"
                        }
                    }
                },
                "tglCetakKartu": {
                    "type": "string"
                },
                "tglLahir": {
                    "type": "string"
                },
                "tglTAT": {
                    "type": "string"
                },
                "tglTMT": {
                    "type": "string"
                },
                "umur": {
                    "type": "object",
                    "properties": {
                        "umurSaatPelayanan": {
                            "type": "string"
                        },
                        "umurSekarang": {
                            "type": "string"
                        }
                    }
                }
            }
        },
        "rujukan.DiagnosaData": {
            "type": "object",
            "properties": {
                "kode": {
                    "type": "string"
                },
                "nama": {
                    "type": "string"
                }
            }
        },
        "rujukan.PelayananData": {
            "type": "object",
            "properties": {
                "kode": {
                    "type": "string"
                },
                "nama": {
                    "type": "string"
                }
            }
        },
        "rujukan.PoliRujukanData": {
            "type": "object",
            "properties": {
                "kode": {
                    "type": "string"
                },
                "nama": {
                    "type": "string"
                }
            }
        },
        "rujukan.ProvPerujukData": {
            "type": "object",
            "properties": {
                "kode": {
                    "type": "string"
                },
                "nama": {
                    "type": "string"
                }
            }
        },
        "rujukan.RujukanData": {
            "type": "object",
            "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"
                }
            }
        },
        "rujukan.RujukanRequest": {
            "type": "object",
            "required": [
                "noRujukan"
            ],
            "properties": {
                "noKartu": {
                    "type": "string"
                },
                "noRujukan": {
                    "type": "string"
                },
                "request_id": {
                    "type": "string"
                },
                "timestamp": {
                    "type": "string"
                }
            }
        },
        "rujukan.RujukanResponse": {
            "type": "object",
            "properties": {
                "data": {
                    "$ref": "#/definitions/rujukan.RujukanData"
                },
                "list": {
                    "type": "array",
                    "items": {
                        "$ref": "#/definitions/rujukan.RujukanData"
                    }
                },
                "message": {
                    "type": "string"
                },
                "metaData": {},
                "request_id": {
                    "type": "string"
                },
                "status": {
                    "type": "string"
                },
                "timestamp": {
                    "type": "string"
                }
            }
        }
    }
}`

// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
	Version:          "1.0.0",
	Host:             "localhost:8080",
	BasePath:         "/api/v1",
	Schemes:          []string{"http", "https"},
	Title:            "API Service",
	Description:      "A comprehensive Go API service with Swagger documentation",
	InfoInstanceName: "swagger",
	SwaggerTemplate:  docTemplate,
	LeftDelim:        "{{",
	RightDelim:       "}}",
}

func init() {
	swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
}
