basePath: /api/v1 definitions: api-service_internal_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 api-service_internal_models.ErrorResponse: properties: code: type: integer error: type: string message: type: string timestamp: type: string type: object api-service_internal_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 api-service_internal_models.NullableInt32: properties: int32: type: integer valid: type: boolean type: object api-service_internal_models.NullableString: properties: string: type: string valid: type: boolean type: object api-service_internal_models.NullableTime: properties: time: type: string valid: type: boolean type: object api-service_internal_models_auth.LoginRequest: properties: password: type: string username: type: string required: - password - username type: object api-service_internal_models_auth.TokenResponse: properties: access_token: type: string expires_in: description: Durasi dalam detik type: integer refresh_token: type: string token_type: description: Biasanya "Bearer" type: string type: object api-service_internal_models_auth.User: properties: email: type: string id: type: string role: type: string username: type: string type: object api-service_internal_models_component.ComponentCreateRequest: properties: active: type: boolean description: maxLength: 255 type: string directory: maxLength: 255 minLength: 1 type: string fk_rol_pages_id: minimum: 1 type: integer name: maxLength: 100 minLength: 1 type: string sort: type: integer required: - directory - fk_rol_pages_id - name type: object api-service_internal_models_component.ComponentCreateResponse: properties: data: $ref: '#/definitions/api-service_internal_models_component.Rol_component' message: type: string type: object api-service_internal_models_component.ComponentDeleteResponse: properties: id: type: string message: type: string type: object api-service_internal_models_component.ComponentUpdateRequest: properties: active: type: boolean description: maxLength: 255 type: string directory: maxLength: 255 minLength: 1 type: string fk_rol_pages_id: minimum: 1 type: integer name: maxLength: 100 minLength: 1 type: string sort: minimum: 1 type: integer type: object api-service_internal_models_component.ComponentUpdateResponse: properties: data: $ref: '#/definitions/api-service_internal_models_component.Rol_component' message: type: string type: object api-service_internal_models_component.ComponentsGetResponse: properties: code: type: integer data: items: $ref: '#/definitions/api-service_internal_models_component.Rol_component' type: array message: type: string meta: $ref: '#/definitions/api-service_internal_models.MetaResponse' type: object api-service_internal_models_component.Rol_component: properties: active: type: boolean description: $ref: '#/definitions/sql.NullString' directory: type: string fk_rol_pages_id: type: integer id: type: integer name: type: string sort: type: integer type: object api-service_internal_models_pages.ComponentCreateRequest: properties: active: type: boolean description: maxLength: 255 type: string directory: maxLength: 255 minLength: 1 type: string name: maxLength: 100 minLength: 1 type: string sort: type: integer required: - directory - name type: object api-service_internal_models_pages.ComponentUpdateRequest: properties: active: type: boolean description: maxLength: 255 type: string directory: maxLength: 255 minLength: 1 type: string fk_rol_pages_id: minimum: 1 type: integer id: type: integer name: maxLength: 100 minLength: 1 type: string sort: minimum: 1 type: integer required: - id type: object api-service_internal_models_pages.PagesCreateRequest: properties: active: type: boolean components: items: $ref: '#/definitions/api-service_internal_models_pages.ComponentCreateRequest' type: array icon: maxLength: 100 minLength: 1 type: string id: description: Status string `json:"status" validate:"required,oneof=draft active inactive"` type: integer level: type: integer name: maxLength: 20 minLength: 1 type: string parent: minimum: 1 type: integer permissions: items: $ref: '#/definitions/api-service_internal_models_pages.PermissionCreateRequest' type: array sort: type: integer url: maxLength: 100 minLength: 1 type: string required: - name type: object api-service_internal_models_pages.PagesCreateResponse: properties: data: $ref: '#/definitions/api-service_internal_models_pages.Rol_pages' message: type: string type: object api-service_internal_models_pages.PagesDeleteResponse: properties: id: type: string message: type: string type: object api-service_internal_models_pages.PagesGetResponse: properties: code: type: integer data: items: $ref: '#/definitions/api-service_internal_models_pages.Rol_pages' type: array message: type: string meta: $ref: '#/definitions/api-service_internal_models.MetaResponse' summary: $ref: '#/definitions/api-service_internal_models.AggregateData' type: object api-service_internal_models_pages.PagesUpdateRequest: properties: active: type: boolean components: items: $ref: '#/definitions/api-service_internal_models_pages.ComponentUpdateRequest' type: array icon: maxLength: 100 minLength: 1 type: string id: description: used when updating via JSON array (bulk) type: integer level: minimum: 1 type: integer name: description: Status string `json:"status" validate:"required,oneof=draft active inactive"` maxLength: 20 minLength: 1 type: string parent: minimum: 1 type: integer permissions: items: $ref: '#/definitions/api-service_internal_models_pages.PermissionUpdateRequest' type: array sort: minimum: 1 type: integer url: maxLength: 100 minLength: 1 type: string type: object api-service_internal_models_pages.PagesUpdateResponse: properties: data: $ref: '#/definitions/api-service_internal_models_pages.Rol_pages' message: type: string type: object api-service_internal_models_pages.PermissionCreateRequest: properties: active: type: boolean create: type: boolean delete: type: boolean disable: type: boolean group_keycloak: items: type: string type: array read: type: boolean role_keycloak: description: FkRolPagesID *int64 `json:"fk_rol_pages_id" validate:"omitempty,"` items: type: string type: array update: type: boolean type: object api-service_internal_models_pages.PermissionUpdateRequest: properties: active: type: boolean create: type: boolean delete: type: boolean disable: type: boolean fk_rol_pages_id: type: integer group_keycloak: items: type: string type: array id: type: integer read: type: boolean role_keycloak: items: type: string type: array update: type: boolean required: - id type: object api-service_internal_models_pages.Rol_component: properties: active: type: boolean description: $ref: '#/definitions/sql.NullString' directory: type: string fk_rol_pages_id: type: integer id: type: integer name: type: string sort: type: integer type: object api-service_internal_models_pages.Rol_pages: properties: active: type: boolean icon: $ref: '#/definitions/sql.NullString' id: type: integer level: type: integer list_component: items: $ref: '#/definitions/api-service_internal_models_pages.Rol_component' type: array list_permission: items: $ref: '#/definitions/api-service_internal_models_pages.Rol_permission' type: array name: type: string parent: $ref: '#/definitions/api-service_internal_models.NullableInt32' sort: type: integer url: $ref: '#/definitions/sql.NullString' type: object api-service_internal_models_pages.Rol_permission: properties: active: $ref: '#/definitions/sql.NullBool' create: $ref: '#/definitions/sql.NullBool' delete: $ref: '#/definitions/sql.NullBool' disable: allOf: - $ref: '#/definitions/sql.NullBool' description: 'Note: "disable" is a Go keyword, so "Disable" is used for the field name.' fk_rol_pages_id: $ref: '#/definitions/api-service_internal_models.NullableInt32' group_keycloak: items: type: string type: array id: type: integer read: $ref: '#/definitions/sql.NullBool' role_keycloak: description: Use NullString for optional text fields items: type: string type: array update: $ref: '#/definitions/sql.NullBool' type: object api-service_internal_models_pasien.Pasien: properties: agama: $ref: '#/definitions/sql.NullInt32' alamat: $ref: '#/definitions/sql.NullString' createdAt: $ref: '#/definitions/sql.NullTime' id: type: integer idkecamatan: type: integer idkelurahan: type: integer idkota: type: integer idprovinsi: type: integer jeniskelamin: $ref: '#/definitions/sql.NullString' kdkecamatan: $ref: '#/definitions/sql.NullInt32' kdprovinsi: $ref: '#/definitions/sql.NullInt32' kelurahan: $ref: '#/definitions/sql.NullInt64' kota: $ref: '#/definitions/sql.NullInt32' nama: $ref: '#/definitions/sql.NullString' namakecamatan: $ref: '#/definitions/sql.NullString' namakelurahan: $ref: '#/definitions/sql.NullString' namakota: $ref: '#/definitions/sql.NullString' namaprovinsi: $ref: '#/definitions/sql.NullString' noKartu: $ref: '#/definitions/sql.NullString' noktpBaru: $ref: '#/definitions/sql.NullString' nomr: $ref: '#/definitions/sql.NullString' status: $ref: '#/definitions/sql.NullString' tempat: $ref: '#/definitions/sql.NullString' tgllahir: $ref: '#/definitions/sql.NullTime' title: $ref: '#/definitions/sql.NullString' updatedAt: $ref: '#/definitions/sql.NullTime' type: object api-service_internal_models_pasien.PasienAgeStatsResponse: properties: data: additionalProperties: true type: object message: type: string type: object api-service_internal_models_pasien.PasienCreateRequest: properties: agama: type: integer alamat: type: string id: type: integer jeniskelamin: enum: - L - P type: string kdkecamatan: type: integer kdprovinsi: type: integer kelurahan: type: integer kota: type: integer nama: maxLength: 100 minLength: 1 type: string noKartu: type: string noktpBaru: type: string nomr: type: string status: enum: - draft - active - inactive type: string tempat: type: string tgllahir: type: string title: maxLength: 100 minLength: 1 type: string required: - nama - status - title type: object api-service_internal_models_pasien.PasienCreateResponse: properties: data: $ref: '#/definitions/api-service_internal_models_pasien.Pasien' message: type: string type: object api-service_internal_models_pasien.PasienDeleteResponse: properties: id: type: string message: type: string type: object api-service_internal_models_pasien.PasienGetByIDResponse: properties: data: $ref: '#/definitions/api-service_internal_models_pasien.Pasien' message: type: string type: object api-service_internal_models_pasien.PasienGetByNomrResponse: properties: data: items: $ref: '#/definitions/api-service_internal_models_pasien.Pasien' type: array message: type: string meta: $ref: '#/definitions/api-service_internal_models.MetaResponse' summary: $ref: '#/definitions/api-service_internal_models.AggregateData' type: object api-service_internal_models_pasien.PasienGetResponse: properties: data: items: $ref: '#/definitions/api-service_internal_models_pasien.Pasien' type: array message: type: string meta: $ref: '#/definitions/api-service_internal_models.MetaResponse' summary: $ref: '#/definitions/api-service_internal_models.AggregateData' type: object api-service_internal_models_pasien.PasienUpdateRequest: properties: agama: type: integer alamat: type: string jeniskelamin: enum: - L - P type: string kdkecamatan: type: integer kdprovinsi: type: integer kelurahan: type: integer kota: type: integer nama: maxLength: 100 minLength: 1 type: string noKartu: type: string noktpBaru: type: string nomr: type: string status: enum: - draft - active - inactive type: string tempat: type: string tgllahir: type: string title: maxLength: 255 minLength: 1 type: string required: - nama - status type: object api-service_internal_models_pasien.PasienUpdateResponse: properties: data: $ref: '#/definitions/api-service_internal_models_pasien.Pasien' message: type: string type: object api-service_internal_models_patient.Patient: properties: active: $ref: '#/definitions/sql.NullBool' address: $ref: '#/definitions/sql.NullString' attachments: items: $ref: '#/definitions/api-service_internal_models_patient.PatientAttachment' type: array birth_date: $ref: '#/definitions/sql.NullTime' ds_sd_kabupaten_kota: $ref: '#/definitions/sql.NullString' ds_sd_kecamatan: $ref: '#/definitions/sql.NullString' ds_sd_kelurahan: $ref: '#/definitions/sql.NullString' ds_sd_provinsi: $ref: '#/definitions/sql.NullString' fk_sd_kabupaten_kota_id: $ref: '#/definitions/api-service_internal_models.NullableInt32' fk_sd_kecamatan_id: $ref: '#/definitions/api-service_internal_models.NullableInt32' fk_sd_kelurahan_id: $ref: '#/definitions/api-service_internal_models.NullableInt32' fk_sd_provinsi_id: $ref: '#/definitions/api-service_internal_models.NullableInt32' gender: $ref: '#/definitions/sql.NullString' id: type: integer medical_record_number: $ref: '#/definitions/sql.NullString' name: $ref: '#/definitions/sql.NullString' payment_types: items: $ref: '#/definitions/api-service_internal_models_patient.PatientPaymentType' type: array phone_number: $ref: '#/definitions/sql.NullString' type: object api-service_internal_models_patient.PatientAttachment: properties: active: $ref: '#/definitions/sql.NullBool' directory: $ref: '#/definitions/sql.NullString' file_name: $ref: '#/definitions/sql.NullString' fk_ms_patient_id: $ref: '#/definitions/api-service_internal_models.NullableInt32' id: type: integer name: $ref: '#/definitions/sql.NullString' type: object api-service_internal_models_patient.PatientCreateResponse: properties: data: $ref: '#/definitions/api-service_internal_models_patient.Patient' message: type: string type: object api-service_internal_models_patient.PatientGetResponse: properties: data: items: $ref: '#/definitions/api-service_internal_models_patient.Patient' type: array message: type: string meta: $ref: '#/definitions/api-service_internal_models.MetaResponse' summary: $ref: '#/definitions/api-service_internal_models.AggregateData' type: object api-service_internal_models_patient.PatientPaymentType: properties: active: $ref: '#/definitions/sql.NullBool' fk_ms_patient_id: $ref: '#/definitions/api-service_internal_models.NullableInt32' fk_ref_payment_type: $ref: '#/definitions/api-service_internal_models.NullableInt32' id: type: integer name: $ref: '#/definitions/sql.NullString' number: $ref: '#/definitions/sql.NullString' type: object api-service_internal_models_patient.PatientPostRequest: properties: medical_record_number: description: ID int64 `json:"id" validate:"required,min=1"` minLength: 1 type: string required: - medical_record_number type: object api-service_internal_models_permission.PermissionCreateRequest: properties: active: type: boolean create: type: boolean delete: type: boolean disable: type: boolean fk_rol_pages_id: type: integer group_keycloak: items: type: string type: array read: type: boolean role_keycloak: items: type: string type: array update: type: boolean type: object api-service_internal_models_permission.PermissionCreateResponse: properties: data: $ref: '#/definitions/api-service_internal_models_permission.Rol_permission' message: type: string type: object api-service_internal_models_permission.PermissionDeleteResponse: properties: id: type: string message: type: string type: object api-service_internal_models_permission.PermissionUpdateRequest: properties: active: type: boolean create: type: boolean delete: type: boolean disable: type: boolean fk_rol_pages_id: type: integer group_keycloak: items: type: string type: array read: type: boolean role_keycloak: items: type: string type: array update: type: boolean type: object api-service_internal_models_permission.PermissionUpdateResponse: properties: data: $ref: '#/definitions/api-service_internal_models_permission.Rol_permission' message: type: string type: object api-service_internal_models_permission.PermissionsGetResponse: properties: code: type: integer data: items: $ref: '#/definitions/api-service_internal_models_permission.Rol_permission' type: array message: type: string meta: $ref: '#/definitions/api-service_internal_models.MetaResponse' type: object api-service_internal_models_permission.Rol_permission: properties: active: $ref: '#/definitions/sql.NullBool' create: $ref: '#/definitions/sql.NullBool' delete: $ref: '#/definitions/sql.NullBool' disable: allOf: - $ref: '#/definitions/sql.NullBool' description: '"disable" is a Go keyword, so "Disable" is used for the field name.' fk_rol_pages_id: $ref: '#/definitions/api-service_internal_models.NullableInt32' group_keycloak: items: type: string type: array id: type: integer read: $ref: '#/definitions/sql.NullBool' role_keycloak: description: Use NullString for optional text fields items: type: string type: array update: $ref: '#/definitions/sql.NullBool' type: object api-service_internal_models_retribusi.Retribusi: properties: date_created: $ref: '#/definitions/api-service_internal_models.NullableTime' date_updated: $ref: '#/definitions/api-service_internal_models.NullableTime' dinas: $ref: '#/definitions/api-service_internal_models.NullableString' id: type: string jenis: $ref: '#/definitions/api-service_internal_models.NullableString' kelompok_obyek: $ref: '#/definitions/api-service_internal_models.NullableString' kode_tarif: $ref: '#/definitions/api-service_internal_models.NullableString' pelayanan: $ref: '#/definitions/api-service_internal_models.NullableString' rekening_denda: $ref: '#/definitions/api-service_internal_models.NullableString' rekening_pokok: $ref: '#/definitions/api-service_internal_models.NullableString' satuan: $ref: '#/definitions/api-service_internal_models.NullableString' satuan_overtime: $ref: '#/definitions/api-service_internal_models.NullableString' sort: $ref: '#/definitions/api-service_internal_models.NullableInt32' status: type: string tarif: $ref: '#/definitions/api-service_internal_models.NullableString' tarif_overtime: $ref: '#/definitions/api-service_internal_models.NullableString' uraian_1: $ref: '#/definitions/api-service_internal_models.NullableString' uraian_2: $ref: '#/definitions/api-service_internal_models.NullableString' uraian_3: $ref: '#/definitions/api-service_internal_models.NullableString' user_created: $ref: '#/definitions/api-service_internal_models.NullableString' user_updated: $ref: '#/definitions/api-service_internal_models.NullableString' type: object api-service_internal_models_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 api-service_internal_models_retribusi.RetribusiCreateResponse: properties: data: $ref: '#/definitions/api-service_internal_models_retribusi.Retribusi' message: type: string type: object api-service_internal_models_retribusi.RetribusiDeleteResponse: properties: id: type: string message: type: string type: object api-service_internal_models_retribusi.RetribusiGetByIDResponse: properties: data: $ref: '#/definitions/api-service_internal_models_retribusi.Retribusi' message: type: string type: object api-service_internal_models_retribusi.RetribusiGetResponse: properties: data: items: $ref: '#/definitions/api-service_internal_models_retribusi.Retribusi' type: array message: type: string meta: $ref: '#/definitions/api-service_internal_models.MetaResponse' summary: $ref: '#/definitions/api-service_internal_models.AggregateData' type: object api-service_internal_models_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 api-service_internal_models_retribusi.RetribusiUpdateResponse: properties: data: $ref: '#/definitions/api-service_internal_models_retribusi.Retribusi' message: type: string type: object sql.NullBool: properties: bool: type: boolean valid: description: Valid is true if Bool is not NULL type: boolean type: object sql.NullInt32: properties: int32: format: int32 type: integer valid: description: Valid is true if Int32 is not NULL type: boolean type: object sql.NullInt64: properties: int64: format: int64 type: integer valid: description: Valid is true if Int64 is not NULL type: boolean type: object sql.NullString: properties: string: type: string valid: description: Valid is true if String is not NULL type: boolean type: object sql.NullTime: properties: time: type: string valid: description: Valid is true if Time is not NULL type: boolean type: object host: localhost:8084 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: /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/api-service_internal_models_auth.LoginRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api-service_internal_models_auth.TokenResponse' "400": description: Bad request schema: additionalProperties: type: string type: object "401": description: Unauthorized schema: additionalProperties: type: string type: object summary: Login user and get JWT token tags: - Authentication /api/v1/auth/me: get: description: Get information about the currently authenticated user produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api-service_internal_models_auth.User' "401": description: Unauthorized schema: additionalProperties: type: string type: object security: - Bearer: [] summary: Get current user info tags: - Authentication /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/api-service_internal_models_auth.TokenResponse' "400": description: Bad request schema: additionalProperties: type: string type: object "401": description: Unauthorized schema: additionalProperties: type: string type: object summary: Refresh JWT token tags: - Authentication /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/pasien/: get: consumes: - application/json description: Get list of pasien with pagination and filters parameters: - default: 10 description: Limit (max 100) in: query name: limit type: integer - default: 0 description: Offset in: query name: offset type: integer - description: Filter by status in: query name: status type: string - description: Search in multiple fields in: query name: search type: string produces: - application/json responses: "200": description: Success response schema: $ref: '#/definitions/api-service_internal_models_pasien.PasienGetResponse' "400": description: Bad request schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Get Pasien List tags: - Pasien post: consumes: - application/json description: Create a new pasien parameters: - description: Pasien creation request in: body name: request required: true schema: $ref: '#/definitions/api-service_internal_models_pasien.PasienCreateRequest' produces: - application/json responses: "201": description: Pasien created successfully schema: $ref: '#/definitions/api-service_internal_models_pasien.PasienCreateResponse' "400": description: Bad request or validation error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Create Pasien tags: - Pasien /api/v1/pasien/:id: get: consumes: - application/json description: Get pasien by ID parameters: - description: Pasien ID in: path name: id required: true type: string produces: - application/json responses: "200": description: Success response schema: $ref: '#/definitions/api-service_internal_models_pasien.PasienGetByIDResponse' "400": description: Invalid ID format schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "404": description: Pasien not found schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Get Pasien by ID tags: - Pasien /api/v1/pasien/:nomr: delete: consumes: - application/json description: Delete a pasien parameters: - description: Pasien ID in: path name: id required: true type: string produces: - application/json responses: "200": description: Pasien deleted successfully schema: $ref: '#/definitions/api-service_internal_models_pasien.PasienDeleteResponse' "400": description: Invalid ID format schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "404": description: Pasien not found schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Delete Pasien tags: - Pasien put: consumes: - application/json description: Update an existing pasien parameters: - description: Pasien ID in: path name: id required: true type: string - description: Pasien update request in: body name: request required: true schema: $ref: '#/definitions/api-service_internal_models_pasien.PasienUpdateRequest' produces: - application/json responses: "200": description: Pasien updated successfully schema: $ref: '#/definitions/api-service_internal_models_pasien.PasienUpdateResponse' "400": description: Bad request or validation error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "404": description: Pasien not found schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Update Pasien tags: - Pasien /api/v1/pasien/by-age: get: consumes: - application/json description: Get pasien statistics by age group parameters: - description: Age group (child, teen, adult, senior) in: query name: age_group type: string produces: - application/json responses: "200": description: Statistics data schema: $ref: '#/definitions/api-service_internal_models_pasien.PasienAgeStatsResponse' "400": description: Bad request schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Get Pasien by Age Group tags: - Pasien /api/v1/pasien/by-location: get: consumes: - application/json description: Get pasien by location (provinsi, kota, kecamatan, kelurahan) parameters: - description: Filter by kelurahan ID in: query name: kelurahan type: integer - description: Filter by kdkecamatan ID in: query name: kdkecamatan type: integer - description: Filter by kota ID in: query name: kota type: integer - description: Filter by kdprovinsi ID in: query name: kdprovinsi type: integer - default: 10 description: Limit (max 100) 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/api-service_internal_models_pasien.PasienGetResponse' "400": description: Bad request schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Get Pasien by Location tags: - Pasien /api/v1/pasien/dynamic: get: consumes: - application/json description: Get pasien with dynamic filtering parameters: - description: Fields to select (e.g., fields=*.*) in: query name: fields type: string - description: Dynamic filters (e.g., filter[name][_eq]=value) in: query name: filter[column][operator] type: string - description: Sort fields (e.g., sort=date_created,-name) 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/api-service_internal_models_pasien.PasienGetResponse' "400": description: Bad request schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Get Pasien Dynamic tags: - Pasien /api/v1/pasien/nomr/:nomr: get: consumes: - application/json description: Get pasien by Nomr produces: - application/json responses: "200": description: Success response schema: $ref: '#/definitions/api-service_internal_models_pasien.PasienGetByNomrResponse' "400": description: Bad request schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Get Pasien by Nomr tags: - Pasien /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/api-service_internal_models_retribusi.RetribusiDeleteResponse' "400": description: Invalid ID format schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "404": description: Retribusi not found schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_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/api-service_internal_models_retribusi.RetribusiGetByIDResponse' "400": description: Invalid ID format schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "404": description: Retribusi not found schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_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/api-service_internal_models_retribusi.RetribusiUpdateRequest' produces: - application/json responses: "200": description: Retribusi updated successfully schema: $ref: '#/definitions/api-service_internal_models_retribusi.RetribusiUpdateResponse' "400": description: Bad request or validation error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "404": description: Retribusi not found schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_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/api-service_internal_models_retribusi.RetribusiGetResponse' "400": description: Bad request schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_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/api-service_internal_models_retribusi.RetribusiCreateRequest' produces: - application/json responses: "201": description: Retribusi created successfully schema: $ref: '#/definitions/api-service_internal_models_retribusi.RetribusiCreateResponse' "400": description: Bad request or validation error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_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/api-service_internal_models_retribusi.RetribusiGetResponse' "400": description: Bad request schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_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/api-service_internal_models.AggregateData' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Get retribusi statistics tags: - Retribusi /api/v1/retribusis/welcome: get: consumes: - application/json description: Returns a welcome message and logs the request produces: - application/json responses: "200": description: Welcome message schema: additionalProperties: type: string type: object summary: Get welcome message tags: - Retribusi /api/v1/token/generate: post: consumes: - application/json description: Generate a JWT token for testing purposes parameters: - description: Token generation data in: body name: token required: true schema: additionalProperties: true type: object produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api-service_internal_models_auth.TokenResponse' "400": description: Bad request schema: additionalProperties: type: string type: object summary: Generate JWT token tags: - Token /api/v1/token/generate-direct: post: consumes: - application/json description: Generate a JWT token directly with provided data parameters: - description: Token generation data in: body name: token required: true schema: additionalProperties: true type: object produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/api-service_internal_models_auth.TokenResponse' "400": description: Bad request schema: additionalProperties: type: string type: object summary: Generate JWT token directly tags: - Token /component: get: consumes: - application/json description: Get list of components with pagination and filters parameters: - default: 10 description: Limit (max 100) in: query name: limit type: integer - default: 0 description: Offset in: query name: offset type: integer - description: Filter by parent page ID in: query name: page_id type: integer - description: Filter by status in: query name: active type: string produces: - application/json responses: "200": description: Success response schema: $ref: '#/definitions/api-service_internal_models_component.ComponentsGetResponse' "400": description: Bad request schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Get Components List tags: - Components post: consumes: - application/json description: Create a new component parameters: - description: Component creation request in: body name: request required: true schema: $ref: '#/definitions/api-service_internal_models_component.ComponentCreateRequest' produces: - application/json responses: "201": description: Component created successfully schema: $ref: '#/definitions/api-service_internal_models_component.ComponentCreateResponse' "400": description: Bad request or validation error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Create Component tags: - Components /component/{id}: delete: consumes: - application/json description: Delete a component parameters: - description: Component ID in: path name: id required: true type: string produces: - application/json responses: "200": description: Component deleted successfully schema: $ref: '#/definitions/api-service_internal_models_component.ComponentDeleteResponse' "400": description: Invalid ID format schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "404": description: Component not found schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Delete Component tags: - Components put: consumes: - application/json description: Update an existing component parameters: - description: Component ID in: path name: id required: true type: string - description: Component update request in: body name: request required: true schema: $ref: '#/definitions/api-service_internal_models_component.ComponentUpdateRequest' produces: - application/json responses: "200": description: Component updated successfully schema: $ref: '#/definitions/api-service_internal_models_component.ComponentUpdateResponse' "400": description: Bad request or validation error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "404": description: Component not found schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Update Component tags: - Components /pages: get: consumes: - application/json description: Get list of pages with pagination and filters parameters: - default: 10 description: Limit (max 100) in: query name: limit type: integer - default: 0 description: Offset in: query name: offset type: integer - description: Filter by status in: query name: status type: string - description: Search in multiple fields in: query name: search type: string produces: - application/json responses: "200": description: Success response schema: $ref: '#/definitions/api-service_internal_models_pages.PagesGetResponse' "400": description: Bad request schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Get Pages List tags: - Pages post: consumes: - application/json description: Create a new page parameters: - description: Rol_pages creation request in: body name: request required: true schema: $ref: '#/definitions/api-service_internal_models_pages.PagesCreateRequest' produces: - application/json responses: "201": description: Rol_pages created successfully schema: $ref: '#/definitions/api-service_internal_models_pages.PagesCreateResponse' "400": description: Bad request or validation error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Create Page tags: - Pages /pages/{id}: delete: consumes: - application/json description: Delete a page parameters: - description: Rol_pages ID in: path name: id required: true type: string produces: - application/json responses: "200": description: Rol_pages deleted successfully schema: $ref: '#/definitions/api-service_internal_models_pages.PagesDeleteResponse' "400": description: Invalid ID format schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "404": description: Rol_pages not found schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Delete Page tags: - Pages put: consumes: - application/json description: Update an existing page parameters: - description: Rol_pages ID in: path name: id required: true type: string - description: Rol_pages update request in: body name: request required: true schema: $ref: '#/definitions/api-service_internal_models_pages.PagesUpdateRequest' produces: - application/json responses: "200": description: Rol_pages updated successfully schema: $ref: '#/definitions/api-service_internal_models_pages.PagesUpdateResponse' "400": description: Bad request or validation error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "404": description: Rol_pages not found schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Update Page tags: - Pages /pages/bulk: put: consumes: - application/json description: Update multiple pages in a single request. Each object must include "id". Use /pages/bulk [put]. parameters: - description: Array of rol_pages update requests in: body name: request required: true schema: items: $ref: '#/definitions/api-service_internal_models_pages.PagesUpdateRequest' type: array produces: - application/json responses: "200": description: Updated pages schema: items: $ref: '#/definitions/api-service_internal_models_pages.PagesUpdateResponse' type: array "400": description: Bad request or validation error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Bulk update pages tags: - Pages /patient: get: consumes: - application/json description: Get list of patients with pagination and filters, including their attachments and payment types. parameters: - default: 10 description: Limit (max 100) in: query name: limit type: integer - default: 0 description: Offset in: query name: offset type: integer - description: Filter by active status (true/false) in: query name: active type: string - description: Search in medical_record_number, name, or phone_number in: query name: search type: string - default: false description: Include aggregation summary in: query name: include_summary type: boolean produces: - application/json responses: "200": description: Success response schema: $ref: '#/definitions/api-service_internal_models_patient.PatientGetResponse' "400": description: Bad request schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Get Patients List tags: - Patient /patient/detail: post: consumes: - application/json description: Retrieves a single patient record by its ID, including attachments and payment types. parameters: - description: Patient post request in: body name: request required: true schema: $ref: '#/definitions/api-service_internal_models_patient.PatientPostRequest' produces: - application/json responses: "200": description: Patient details retrieved successfully schema: $ref: '#/definitions/api-service_internal_models_patient.PatientCreateResponse' "400": description: Bad request or validation error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "404": description: Patient not found schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Get Patient by ID tags: - Patient /permission: get: consumes: - application/json description: Get list of permissions with pagination and filters parameters: - default: 10 description: Limit (max 100) in: query name: limit type: integer - default: 0 description: Offset in: query name: offset type: integer - description: Filter by parent page ID in: query name: page_id type: integer - description: Filter by status in: query name: active type: string produces: - application/json responses: "200": description: Success response schema: $ref: '#/definitions/api-service_internal_models_permission.PermissionsGetResponse' "400": description: Bad request schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Get Permissions List tags: - Permissions post: consumes: - application/json description: Create a new permission parameters: - description: Permission creation request in: body name: request required: true schema: $ref: '#/definitions/api-service_internal_models_permission.PermissionCreateRequest' produces: - application/json responses: "201": description: Permission created successfully schema: $ref: '#/definitions/api-service_internal_models_permission.PermissionCreateResponse' "400": description: Bad request or validation error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Create Permission tags: - Permissions /permission/{id}: delete: consumes: - application/json description: Delete a permission parameters: - description: Permission ID in: path name: id required: true type: string produces: - application/json responses: "200": description: Permission deleted successfully schema: $ref: '#/definitions/api-service_internal_models_permission.PermissionDeleteResponse' "400": description: Invalid ID format schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "404": description: Permission not found schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Delete Permission tags: - Permissions put: consumes: - application/json description: Update an existing permission parameters: - description: Permission ID in: path name: id required: true type: string - description: Permission update request in: body name: request required: true schema: $ref: '#/definitions/api-service_internal_models_permission.PermissionUpdateRequest' produces: - application/json responses: "200": description: Permission updated successfully schema: $ref: '#/definitions/api-service_internal_models_permission.PermissionUpdateResponse' "400": description: Bad request or validation error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "404": description: Permission not found schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' "500": description: Internal server error schema: $ref: '#/definitions/api-service_internal_models.ErrorResponse' summary: Update Permission tags: - Permissions schemes: - http - https swagger: "2.0"