Files
antrean-anjungan/docs/swagger.yaml

1195 lines
29 KiB
YAML

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_auth.LoginRequest:
properties:
password:
type: string
username:
type: string
required:
- password
- username
type: object
api-service_internal_models_auth.TokenResponse:
properties:
access_token:
type: string
expires_in:
type: integer
token_type:
type: string
type: object
api-service_internal_models_auth.User:
properties:
email:
type: string
id:
type: string
role:
type: string
username:
type: string
type: object
api-service_internal_models_retribusi.Retribusi:
properties:
date_created:
$ref: '#/definitions/sql.NullTime'
date_updated:
$ref: '#/definitions/sql.NullTime'
dinas:
$ref: '#/definitions/sql.NullString'
id:
type: string
jenis:
$ref: '#/definitions/sql.NullString'
kelompok_obyek:
$ref: '#/definitions/sql.NullString'
kode_tarif:
$ref: '#/definitions/sql.NullString'
pelayanan:
$ref: '#/definitions/sql.NullString'
rekening_denda:
$ref: '#/definitions/sql.NullString'
rekening_pokok:
$ref: '#/definitions/sql.NullString'
satuan:
$ref: '#/definitions/sql.NullString'
satuan_overtime:
$ref: '#/definitions/sql.NullString'
sort:
$ref: '#/definitions/api-service_internal_models.NullableInt32'
status:
type: string
tarif:
$ref: '#/definitions/sql.NullString'
tarif_overtime:
$ref: '#/definitions/sql.NullString'
uraian_1:
$ref: '#/definitions/sql.NullString'
uraian_2:
$ref: '#/definitions/sql.NullString'
uraian_3:
$ref: '#/definitions/sql.NullString'
user_created:
$ref: '#/definitions/sql.NullString'
user_updated:
$ref: '#/definitions/sql.NullString'
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
gin.H:
additionalProperties: {}
type: object
models.DiagnosaResponse:
properties:
data:
additionalProperties: true
type: object
message:
type: string
type: object
models.Flag:
properties:
cob:
type: string
required:
- cob
type: object
models.Jaminan:
properties:
lakaLantas:
type: string
noLP:
type: string
penjamin:
$ref: '#/definitions/models.Penjamin'
required:
- lakaLantas
type: object
models.KlsRawatPost:
properties:
klsRawatHak:
type: string
klsRawatNaik:
type: string
pembiayaan:
type: string
penanggungJawab:
type: string
required:
- klsRawatHak
type: object
models.KlsRawatPut:
properties:
klsRawatHak:
type: string
klsRawatNaik:
type: string
pembiayaan:
type: string
penanggungJawab:
type: string
type: object
models.LokasiLaka:
properties:
kdKabupaten:
type: string
kdKecamatan:
type: string
kdPropinsi:
type: string
type: object
models.Penjamin:
properties:
keterangan:
type: string
suplesi:
$ref: '#/definitions/models.Suplesi'
tglKejadian:
type: string
type: object
models.Poli:
properties:
eksekutif:
type: string
tujuan:
type: string
required:
- eksekutif
type: object
models.Rujukan:
properties:
asalRujukan:
type: string
noRujukan:
type: string
ppkRujukan:
type: string
tglRujukan:
type: string
required:
- asalRujukan
- noRujukan
- ppkRujukan
- tglRujukan
type: object
models.SepPostRequest:
properties:
t_sep:
$ref: '#/definitions/models.TSepPost'
required:
- t_sep
type: object
models.SepPutRequest:
properties:
t_sep:
$ref: '#/definitions/models.TSepPut'
required:
- t_sep
type: object
models.SepResponse:
properties:
data:
additionalProperties: true
type: object
message:
type: string
type: object
models.Skdp:
properties:
kodeDPJP:
type: string
noSurat:
type: string
required:
- kodeDPJP
- noSurat
type: object
models.Suplesi:
properties:
lokasiLaka:
$ref: '#/definitions/models.LokasiLaka'
noSepSuplesi:
type: string
suplesi:
type: string
type: object
models.TSepPost:
properties:
assesmentPel:
type: string
catatan:
type: string
cob:
$ref: '#/definitions/models.Flag'
diagAwal:
type: string
dpjpLayan:
type: string
flagProcedure:
type: string
jaminan:
$ref: '#/definitions/models.Jaminan'
jnsPelayanan:
type: string
katarak:
$ref: '#/definitions/models.Flag'
kdPenunjang:
type: string
klsRawat:
$ref: '#/definitions/models.KlsRawatPost'
noKartu:
type: string
noMR:
type: string
noTelp:
type: string
poli:
$ref: '#/definitions/models.Poli'
ppkPelayanan:
type: string
rujukan:
$ref: '#/definitions/models.Rujukan'
skdp:
$ref: '#/definitions/models.Skdp'
tglSep:
description: yyyy-MM-dd
type: string
tujuanKunj:
type: string
user:
type: string
required:
- cob
- diagAwal
- jaminan
- jnsPelayanan
- katarak
- klsRawat
- noKartu
- noMR
- poli
- ppkPelayanan
- rujukan
- skdp
- tglSep
- user
type: object
models.TSepPut:
properties:
catatan:
type: string
cob:
$ref: '#/definitions/models.Flag'
diagAwal:
type: string
dpjpLayan:
type: string
jaminan:
$ref: '#/definitions/models.Jaminan'
katarak:
$ref: '#/definitions/models.Flag'
klsRawat:
$ref: '#/definitions/models.KlsRawatPut'
noMR:
type: string
noSep:
type: string
noTelp:
type: string
poli:
$ref: '#/definitions/models.Poli'
user:
type: string
required:
- noSep
- user
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:8080
info:
contact:
email: support@swagger.io
name: API Support
url: http://www.swagger.io/support
description: A comprehensive Go API service with Swagger documentation
license:
name: Apache 2.0
url: http://www.apache.org/licenses/LICENSE-2.0.html
termsOfService: http://swagger.io/terms/
title: API Service
version: 1.0.0
paths:
/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/bpjs/Peserta/nik/{nik}/tglSEP/{tglSEP}:
get:
consumes:
- application/json
description: Search participant data based on Population NIK and service date
parameters:
- description: NIK KTP
in: path
name: nik
required: true
type: string
- description: 'Service date/SEP date (format: yyyy-MM-dd)'
in: path
name: tglSEP
required: true
type: string
produces:
- application/json
responses:
"200":
description: Participant data
schema:
additionalProperties: true
type: object
"400":
description: Bad request
schema:
additionalProperties: true
type: object
"404":
description: Participant not found
schema:
additionalProperties: true
type: object
"500":
description: Internal server error
schema:
additionalProperties: true
type: object
summary: Get participant data by NIK
tags:
- bpjs
/api/v1/bpjs/reference/referensi/diagnosa:
get:
consumes:
- application/json
description: Get all diagnosa reference data
produces:
- application/json
responses:
"200":
description: Success response
schema:
$ref: '#/definitions/models.DiagnosaResponse'
"400":
description: Bad request
schema:
additionalProperties: true
type: object
"404":
description: Data not found
schema:
additionalProperties: true
type: object
"500":
description: Internal server error
schema:
additionalProperties: true
type: object
summary: Get all diagnosa reference data
tags:
- bpjs/reference
/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/token/generate:
post:
consumes:
- application/json
description: Generate a JWT token for a user
parameters:
- description: User credentials
in: body
name: token
required: true
schema:
$ref: '#/definitions/api-service_internal_models_auth.LoginRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api-service_internal_models_auth.TokenResponse'
"400":
description: Bad request
schema:
additionalProperties:
type: string
type: object
"401":
description: Unauthorized
schema:
additionalProperties:
type: string
type: object
summary: Generate JWT token
tags:
- Token
/api/v1/token/generate-direct:
post:
consumes:
- application/json
description: Generate a JWT token directly without password verification (for
testing)
parameters:
- description: User info
in: body
name: user
required: true
schema:
additionalProperties:
type: string
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/api-service_internal_models_auth.TokenResponse'
"400":
description: Bad request
schema:
additionalProperties:
type: string
type: object
summary: Generate token directly
tags:
- Token
/sep:
post:
consumes:
- application/json
description: Create a new Surat Eligibilitas Peserta
parameters:
- description: SEP creation request
in: body
name: request
required: true
schema:
$ref: '#/definitions/models.SepPostRequest'
produces:
- application/json
responses:
"200":
description: SEP created successfully
schema:
$ref: '#/definitions/models.SepResponse'
"400":
description: Invalid request
schema:
$ref: '#/definitions/gin.H'
"500":
description: Internal server error
schema:
$ref: '#/definitions/gin.H'
summary: Create a new SEP
tags:
- bpjs
put:
consumes:
- application/json
description: Update an existing Surat Eligibilitas Peserta
parameters:
- description: SEP update request
in: body
name: request
required: true
schema:
$ref: '#/definitions/models.SepPutRequest'
produces:
- application/json
responses:
"200":
description: SEP updated successfully
schema:
$ref: '#/definitions/models.SepResponse'
"400":
description: Invalid request
schema:
$ref: '#/definitions/gin.H'
"500":
description: Internal server error
schema:
$ref: '#/definitions/gin.H'
summary: Update an existing SEP
tags:
- bpjs
/sep/{noSep}:
delete:
consumes:
- application/json
description: Delete a Surat Eligibilitas Peserta by noSep
parameters:
- description: No SEP
in: path
name: noSep
required: true
type: string
- description: User
in: query
name: user
required: true
type: string
produces:
- application/json
responses:
"200":
description: SEP deleted successfully
schema:
$ref: '#/definitions/models.SepResponse'
"400":
description: Invalid request
schema:
$ref: '#/definitions/gin.H'
"500":
description: Internal server error
schema:
$ref: '#/definitions/gin.H'
summary: Delete an existing SEP
tags:
- bpjs
get:
consumes:
- application/json
description: Retrieve a Surat Eligibilitas Peserta by noSep
parameters:
- description: No SEP
in: path
name: noSep
required: true
type: string
produces:
- application/json
responses:
"200":
description: Data SEP retrieved successfully
schema:
$ref: '#/definitions/models.SepResponse'
"400":
description: Invalid request
schema:
$ref: '#/definitions/gin.H'
"500":
description: Internal server error
schema:
$ref: '#/definitions/gin.H'
summary: Get an existing SEP
tags:
- bpjs
schemes:
- http
- https
swagger: "2.0"