first commit
This commit is contained in:
+1169
File diff suppressed because it is too large
Load Diff
+1150
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,771 @@
|
||||
basePath: /api/v1
|
||||
definitions:
|
||||
models.AggregateData:
|
||||
properties:
|
||||
by_dinas:
|
||||
additionalProperties:
|
||||
type: integer
|
||||
type: object
|
||||
by_jenis:
|
||||
additionalProperties:
|
||||
type: integer
|
||||
type: object
|
||||
by_status:
|
||||
additionalProperties:
|
||||
type: integer
|
||||
type: object
|
||||
created_today:
|
||||
type: integer
|
||||
last_updated:
|
||||
type: string
|
||||
total_active:
|
||||
type: integer
|
||||
total_draft:
|
||||
type: integer
|
||||
total_inactive:
|
||||
type: integer
|
||||
updated_today:
|
||||
type: integer
|
||||
type: object
|
||||
models.ErrorResponse:
|
||||
properties:
|
||||
code:
|
||||
type: integer
|
||||
error:
|
||||
type: string
|
||||
message:
|
||||
type: string
|
||||
timestamp:
|
||||
type: string
|
||||
type: object
|
||||
models.LoginRequest:
|
||||
properties:
|
||||
password:
|
||||
type: string
|
||||
username:
|
||||
type: string
|
||||
required:
|
||||
- password
|
||||
- username
|
||||
type: object
|
||||
models.MetaResponse:
|
||||
properties:
|
||||
current_page:
|
||||
type: integer
|
||||
has_next:
|
||||
type: boolean
|
||||
has_prev:
|
||||
type: boolean
|
||||
limit:
|
||||
type: integer
|
||||
offset:
|
||||
type: integer
|
||||
total:
|
||||
type: integer
|
||||
total_pages:
|
||||
type: integer
|
||||
type: object
|
||||
models.NullableInt32:
|
||||
properties:
|
||||
int32:
|
||||
type: integer
|
||||
valid:
|
||||
type: boolean
|
||||
type: object
|
||||
models.NullableString:
|
||||
properties:
|
||||
string:
|
||||
type: string
|
||||
valid:
|
||||
type: boolean
|
||||
type: object
|
||||
models.NullableTime:
|
||||
properties:
|
||||
time:
|
||||
type: string
|
||||
valid:
|
||||
type: boolean
|
||||
type: object
|
||||
models.TokenResponse:
|
||||
properties:
|
||||
access_token:
|
||||
type: string
|
||||
expires_in:
|
||||
type: integer
|
||||
token_type:
|
||||
type: string
|
||||
type: object
|
||||
models.User:
|
||||
properties:
|
||||
email:
|
||||
type: string
|
||||
id:
|
||||
type: string
|
||||
role:
|
||||
type: string
|
||||
username:
|
||||
type: string
|
||||
type: object
|
||||
retribusi.Retribusi:
|
||||
properties:
|
||||
date_created:
|
||||
$ref: '#/definitions/models.NullableTime'
|
||||
date_updated:
|
||||
$ref: '#/definitions/models.NullableTime'
|
||||
dinas:
|
||||
$ref: '#/definitions/models.NullableString'
|
||||
id:
|
||||
type: string
|
||||
jenis:
|
||||
$ref: '#/definitions/models.NullableString'
|
||||
kelompok_obyek:
|
||||
$ref: '#/definitions/models.NullableString'
|
||||
kode_tarif:
|
||||
$ref: '#/definitions/models.NullableString'
|
||||
pelayanan:
|
||||
$ref: '#/definitions/models.NullableString'
|
||||
rekening_denda:
|
||||
$ref: '#/definitions/models.NullableString'
|
||||
rekening_pokok:
|
||||
$ref: '#/definitions/models.NullableString'
|
||||
satuan:
|
||||
$ref: '#/definitions/models.NullableString'
|
||||
satuan_overtime:
|
||||
$ref: '#/definitions/models.NullableString'
|
||||
sort:
|
||||
$ref: '#/definitions/models.NullableInt32'
|
||||
status:
|
||||
type: string
|
||||
tarif:
|
||||
$ref: '#/definitions/models.NullableString'
|
||||
tarif_overtime:
|
||||
$ref: '#/definitions/models.NullableString'
|
||||
uraian_1:
|
||||
$ref: '#/definitions/models.NullableString'
|
||||
uraian_2:
|
||||
$ref: '#/definitions/models.NullableString'
|
||||
uraian_3:
|
||||
$ref: '#/definitions/models.NullableString'
|
||||
user_created:
|
||||
$ref: '#/definitions/models.NullableString'
|
||||
user_updated:
|
||||
$ref: '#/definitions/models.NullableString'
|
||||
type: object
|
||||
retribusi.RetribusiCreateRequest:
|
||||
properties:
|
||||
dinas:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
jenis:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
kelompok_obyek:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
kode_tarif:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
pelayanan:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
rekening_denda:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
rekening_pokok:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
satuan:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
satuan_overtime:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
status:
|
||||
enum:
|
||||
- draft
|
||||
- active
|
||||
- inactive
|
||||
type: string
|
||||
tarif:
|
||||
type: string
|
||||
tarif_overtime:
|
||||
type: string
|
||||
uraian_1:
|
||||
type: string
|
||||
uraian_2:
|
||||
type: string
|
||||
uraian_3:
|
||||
type: string
|
||||
required:
|
||||
- status
|
||||
type: object
|
||||
retribusi.RetribusiCreateResponse:
|
||||
properties:
|
||||
data:
|
||||
$ref: '#/definitions/retribusi.Retribusi'
|
||||
message:
|
||||
type: string
|
||||
type: object
|
||||
retribusi.RetribusiDeleteResponse:
|
||||
properties:
|
||||
id:
|
||||
type: string
|
||||
message:
|
||||
type: string
|
||||
type: object
|
||||
retribusi.RetribusiGetByIDResponse:
|
||||
properties:
|
||||
data:
|
||||
$ref: '#/definitions/retribusi.Retribusi'
|
||||
message:
|
||||
type: string
|
||||
type: object
|
||||
retribusi.RetribusiGetResponse:
|
||||
properties:
|
||||
data:
|
||||
items:
|
||||
$ref: '#/definitions/retribusi.Retribusi'
|
||||
type: array
|
||||
message:
|
||||
type: string
|
||||
meta:
|
||||
$ref: '#/definitions/models.MetaResponse'
|
||||
summary:
|
||||
$ref: '#/definitions/models.AggregateData'
|
||||
type: object
|
||||
retribusi.RetribusiUpdateRequest:
|
||||
properties:
|
||||
dinas:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
jenis:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
kelompok_obyek:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
kode_tarif:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
pelayanan:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
rekening_denda:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
rekening_pokok:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
satuan:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
satuan_overtime:
|
||||
maxLength: 255
|
||||
minLength: 1
|
||||
type: string
|
||||
status:
|
||||
enum:
|
||||
- draft
|
||||
- active
|
||||
- inactive
|
||||
type: string
|
||||
tarif:
|
||||
type: string
|
||||
tarif_overtime:
|
||||
type: string
|
||||
uraian_1:
|
||||
type: string
|
||||
uraian_2:
|
||||
type: string
|
||||
uraian_3:
|
||||
type: string
|
||||
required:
|
||||
- status
|
||||
type: object
|
||||
retribusi.RetribusiUpdateResponse:
|
||||
properties:
|
||||
data:
|
||||
$ref: '#/definitions/retribusi.Retribusi'
|
||||
message:
|
||||
type: string
|
||||
type: object
|
||||
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/models.LoginRequest'
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
schema:
|
||||
$ref: '#/definitions/models.TokenResponse'
|
||||
"400":
|
||||
description: Bad request
|
||||
schema:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
"401":
|
||||
description: Unauthorized
|
||||
schema:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
summary: Login user and get JWT token
|
||||
tags:
|
||||
- Authentication
|
||||
/api/v1/auth/me:
|
||||
get:
|
||||
description: Get information about the currently authenticated user
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
schema:
|
||||
$ref: '#/definitions/models.User'
|
||||
"401":
|
||||
description: Unauthorized
|
||||
schema:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
security:
|
||||
- Bearer: []
|
||||
summary: Get current user info
|
||||
tags:
|
||||
- Authentication
|
||||
/api/v1/auth/refresh:
|
||||
post:
|
||||
consumes:
|
||||
- application/json
|
||||
description: Refresh the JWT token using a valid refresh token
|
||||
parameters:
|
||||
- description: Refresh token
|
||||
in: body
|
||||
name: refresh
|
||||
required: true
|
||||
schema:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
schema:
|
||||
$ref: '#/definitions/models.TokenResponse'
|
||||
"400":
|
||||
description: Bad request
|
||||
schema:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
"401":
|
||||
description: Unauthorized
|
||||
schema:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
summary: Refresh JWT token
|
||||
tags:
|
||||
- Authentication
|
||||
/api/v1/auth/register:
|
||||
post:
|
||||
consumes:
|
||||
- application/json
|
||||
description: Register a new user account
|
||||
parameters:
|
||||
- description: Registration data
|
||||
in: body
|
||||
name: register
|
||||
required: true
|
||||
schema:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"201":
|
||||
description: Created
|
||||
schema:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
"400":
|
||||
description: Bad request
|
||||
schema:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
summary: Register new user
|
||||
tags:
|
||||
- Authentication
|
||||
/api/v1/retribusi/{id}:
|
||||
delete:
|
||||
consumes:
|
||||
- application/json
|
||||
description: Soft deletes a retribusi by setting status to 'deleted'
|
||||
parameters:
|
||||
- description: Retribusi ID (UUID)
|
||||
in: path
|
||||
name: id
|
||||
required: true
|
||||
type: string
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: Retribusi deleted successfully
|
||||
schema:
|
||||
$ref: '#/definitions/retribusi.RetribusiDeleteResponse'
|
||||
"400":
|
||||
description: Invalid ID format
|
||||
schema:
|
||||
$ref: '#/definitions/models.ErrorResponse'
|
||||
"404":
|
||||
description: Retribusi not found
|
||||
schema:
|
||||
$ref: '#/definitions/models.ErrorResponse'
|
||||
"500":
|
||||
description: Internal server error
|
||||
schema:
|
||||
$ref: '#/definitions/models.ErrorResponse'
|
||||
summary: Delete retribusi
|
||||
tags:
|
||||
- Retribusi
|
||||
get:
|
||||
consumes:
|
||||
- application/json
|
||||
description: Returns a single retribusi by ID
|
||||
parameters:
|
||||
- description: Retribusi ID (UUID)
|
||||
in: path
|
||||
name: id
|
||||
required: true
|
||||
type: string
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: Success response
|
||||
schema:
|
||||
$ref: '#/definitions/retribusi.RetribusiGetByIDResponse'
|
||||
"400":
|
||||
description: Invalid ID format
|
||||
schema:
|
||||
$ref: '#/definitions/models.ErrorResponse'
|
||||
"404":
|
||||
description: Retribusi not found
|
||||
schema:
|
||||
$ref: '#/definitions/models.ErrorResponse'
|
||||
"500":
|
||||
description: Internal server error
|
||||
schema:
|
||||
$ref: '#/definitions/models.ErrorResponse'
|
||||
summary: Get Retribusi by ID
|
||||
tags:
|
||||
- Retribusi
|
||||
put:
|
||||
consumes:
|
||||
- application/json
|
||||
description: Updates an existing retribusi record
|
||||
parameters:
|
||||
- description: Retribusi ID (UUID)
|
||||
in: path
|
||||
name: id
|
||||
required: true
|
||||
type: string
|
||||
- description: Retribusi update request
|
||||
in: body
|
||||
name: request
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/retribusi.RetribusiUpdateRequest'
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: Retribusi updated successfully
|
||||
schema:
|
||||
$ref: '#/definitions/retribusi.RetribusiUpdateResponse'
|
||||
"400":
|
||||
description: Bad request or validation error
|
||||
schema:
|
||||
$ref: '#/definitions/models.ErrorResponse'
|
||||
"404":
|
||||
description: Retribusi not found
|
||||
schema:
|
||||
$ref: '#/definitions/models.ErrorResponse'
|
||||
"500":
|
||||
description: Internal server error
|
||||
schema:
|
||||
$ref: '#/definitions/models.ErrorResponse'
|
||||
summary: Update retribusi
|
||||
tags:
|
||||
- Retribusi
|
||||
/api/v1/retribusis:
|
||||
get:
|
||||
consumes:
|
||||
- application/json
|
||||
description: Returns a paginated list of retribusis with optional summary statistics
|
||||
parameters:
|
||||
- default: 10
|
||||
description: Limit (max 100)
|
||||
in: query
|
||||
name: limit
|
||||
type: integer
|
||||
- default: 0
|
||||
description: Offset
|
||||
in: query
|
||||
name: offset
|
||||
type: integer
|
||||
- default: false
|
||||
description: Include aggregation summary
|
||||
in: query
|
||||
name: include_summary
|
||||
type: boolean
|
||||
- description: Filter by status
|
||||
in: query
|
||||
name: status
|
||||
type: string
|
||||
- description: Filter by jenis
|
||||
in: query
|
||||
name: jenis
|
||||
type: string
|
||||
- description: Filter by dinas
|
||||
in: query
|
||||
name: dinas
|
||||
type: string
|
||||
- description: Search in multiple fields
|
||||
in: query
|
||||
name: search
|
||||
type: string
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: Success response
|
||||
schema:
|
||||
$ref: '#/definitions/retribusi.RetribusiGetResponse'
|
||||
"400":
|
||||
description: Bad request
|
||||
schema:
|
||||
$ref: '#/definitions/models.ErrorResponse'
|
||||
"500":
|
||||
description: Internal server error
|
||||
schema:
|
||||
$ref: '#/definitions/models.ErrorResponse'
|
||||
summary: Get retribusi with pagination and optional aggregation
|
||||
tags:
|
||||
- Retribusi
|
||||
post:
|
||||
consumes:
|
||||
- application/json
|
||||
description: Creates a new retribusi record
|
||||
parameters:
|
||||
- description: Retribusi creation request
|
||||
in: body
|
||||
name: request
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/retribusi.RetribusiCreateRequest'
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"201":
|
||||
description: Retribusi created successfully
|
||||
schema:
|
||||
$ref: '#/definitions/retribusi.RetribusiCreateResponse'
|
||||
"400":
|
||||
description: Bad request or validation error
|
||||
schema:
|
||||
$ref: '#/definitions/models.ErrorResponse'
|
||||
"500":
|
||||
description: Internal server error
|
||||
schema:
|
||||
$ref: '#/definitions/models.ErrorResponse'
|
||||
summary: Create retribusi
|
||||
tags:
|
||||
- Retribusi
|
||||
/api/v1/retribusis/dynamic:
|
||||
get:
|
||||
consumes:
|
||||
- application/json
|
||||
description: Returns retribusis with advanced dynamic filtering like Directus
|
||||
parameters:
|
||||
- description: Fields to select (e.g., fields=*.*)
|
||||
in: query
|
||||
name: fields
|
||||
type: string
|
||||
- description: Dynamic filters (e.g., filter[Jenis][_eq]=value)
|
||||
in: query
|
||||
name: filter[column][operator]
|
||||
type: string
|
||||
- description: Sort fields (e.g., sort=date_created,-Jenis)
|
||||
in: query
|
||||
name: sort
|
||||
type: string
|
||||
- default: 10
|
||||
description: Limit
|
||||
in: query
|
||||
name: limit
|
||||
type: integer
|
||||
- default: 0
|
||||
description: Offset
|
||||
in: query
|
||||
name: offset
|
||||
type: integer
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: Success response
|
||||
schema:
|
||||
$ref: '#/definitions/retribusi.RetribusiGetResponse'
|
||||
"400":
|
||||
description: Bad request
|
||||
schema:
|
||||
$ref: '#/definitions/models.ErrorResponse'
|
||||
"500":
|
||||
description: Internal server error
|
||||
schema:
|
||||
$ref: '#/definitions/models.ErrorResponse'
|
||||
summary: Get retribusi with dynamic filtering
|
||||
tags:
|
||||
- Retribusi
|
||||
/api/v1/retribusis/stats:
|
||||
get:
|
||||
consumes:
|
||||
- application/json
|
||||
description: Returns comprehensive statistics about retribusi data
|
||||
parameters:
|
||||
- description: Filter statistics by status
|
||||
in: query
|
||||
name: status
|
||||
type: string
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: Statistics data
|
||||
schema:
|
||||
$ref: '#/definitions/models.AggregateData'
|
||||
"500":
|
||||
description: Internal server error
|
||||
schema:
|
||||
$ref: '#/definitions/models.ErrorResponse'
|
||||
summary: Get retribusi statistics
|
||||
tags:
|
||||
- Retribusi
|
||||
/api/v1/token/generate:
|
||||
post:
|
||||
consumes:
|
||||
- application/json
|
||||
description: Generate a JWT token for a user
|
||||
parameters:
|
||||
- description: User credentials
|
||||
in: body
|
||||
name: token
|
||||
required: true
|
||||
schema:
|
||||
$ref: '#/definitions/models.LoginRequest'
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
schema:
|
||||
$ref: '#/definitions/models.TokenResponse'
|
||||
"400":
|
||||
description: Bad request
|
||||
schema:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
"401":
|
||||
description: Unauthorized
|
||||
schema:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
summary: Generate JWT token
|
||||
tags:
|
||||
- Token
|
||||
/api/v1/token/generate-direct:
|
||||
post:
|
||||
consumes:
|
||||
- application/json
|
||||
description: Generate a JWT token directly without password verification (for
|
||||
testing)
|
||||
parameters:
|
||||
- description: User info
|
||||
in: body
|
||||
name: user
|
||||
required: true
|
||||
schema:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
produces:
|
||||
- application/json
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
schema:
|
||||
$ref: '#/definitions/models.TokenResponse'
|
||||
"400":
|
||||
description: Bad request
|
||||
schema:
|
||||
additionalProperties:
|
||||
type: string
|
||||
type: object
|
||||
summary: Generate token directly
|
||||
tags:
|
||||
- Token
|
||||
schemes:
|
||||
- http
|
||||
- https
|
||||
swagger: "2.0"
|
||||
Reference in New Issue
Block a user