Postman Collection
Postman Collection
Section titled “Postman Collection”Overview
Section titled “Overview”Merq menyertakan tooling untuk menghasilkan Postman Collection secara otomatis dari Swagger/OpenAPI spec yang di-generate oleh swaggo/swag. Collection dihasilkan oleh binary terpisah (cmd/postman-injector) dan disimpan di merq-backend/docs/postman/.
File Lokasi
Section titled “File Lokasi”| File | Path di Repo |
|---|---|
| Postman Collection | merq-backend/docs/postman/merq-api-collection.json |
| Postman Environment | (dihasilkan saat run, tidak di-commit) |
| Swagger JSON | merq-backend/docs/swagger.json |
| Swagger YAML | merq-backend/docs/swagger.yaml |
Catatan: File
merq-local-environment.jsondihasilkan kedocs/postman/merq-local-environment.jsonsaat menjalankanpostman-injector, tapi tidak di-commit ke repo. Harus di-generate secara lokal.
Import ke Postman
Section titled “Import ke Postman”Import Collection
Section titled “Import Collection”- Buka Postman
- Klik Import (pojok kiri atas)
- Pilih tab File
- Upload
merq-backend/docs/postman/merq-api-collection.json - Klik Import
Import Environment
Section titled “Import Environment”- Generate environment file dulu (lihat bagian Regenerasi di bawah)
- Di Postman, buka tab Environments (sidebar kiri)
- Klik Import
- Upload
merq-backend/docs/postman/merq-local-environment.json - Pilih environment dari dropdown kanan atas
Environment Variables
Section titled “Environment Variables”Setelah import, environment berisi variabel berikut:
| Variable | Deskripsi | Contoh Nilai |
|---|---|---|
base_url | Base URL API | http://localhost:8080/api |
access_token | JWT access token (diisi manual setelah login) | eyJhbGciOiJIUzI1NiIs... |
refresh_token | JWT refresh token (diisi manual setelah login) | eyJhbGciOiJIUzI1NiIs... |
workspace_id | ID workspace yang aktif | 1 |
Konfigurasi base_url sesuai environment:
# Localbase_url = http://localhost:8080/api
# Stagingbase_url = https://api-staging.merq.app/api
# Productionbase_url = https://api.merq.app/apiAlur Pertama Kali
Section titled “Alur Pertama Kali”- Import collection dan environment
- Set environment aktif di Postman
- Buka folder
Auth→ kirim request Login - Salin
access_tokendari response dan paste ke variabelaccess_tokendi environment - Request selanjutnya sudah otomatis menggunakan token di header
Authorization: Bearer <token>
Contoh request body login:
{ "email": "admin@example.com", "password": "password"}Regenerasi Collection
Section titled “Regenerasi Collection”Collection di-generate dari Swagger spec. Workflow-nya dua langkah:
Langkah 1: Generate/Update Swagger Spec
Section titled “Langkah 1: Generate/Update Swagger Spec”cd merq-backend
# Install swag CLI jika belum adago install github.com/swaggo/swag/cmd/swag@latest
# Generate docs/swagger.json dan docs/swagger.yamlswag init -g cmd/server/main.go -o docsLangkah 2: Generate Postman Collection dari Swagger
Section titled “Langkah 2: Generate Postman Collection dari Swagger”cd merq-backend
# Generate collection ke docs/postman/merq-api-collection.json# dan environment ke docs/postman/merq-local-environment.jsongo run cmd/postman-injector/main.go
# Atau dengan path kustomgo run cmd/postman-injector/main.go \ -swagger docs/swagger.json \ -output docs/postman/merq-api-collection.json \ -env-output docs/postman/merq-local-environment.jsonKapan Perlu Regenerasi
Section titled “Kapan Perlu Regenerasi”- Setelah menambah endpoint baru
- Setelah mengubah request/response DTO
- Setelah mengubah route parameter
- Sebelum merilis versi API baru
Format Response API
Section titled “Format Response API”Semua response menggunakan utils.HandleResponse dengan struktur konsisten:
Sukses (200/201)
Section titled “Sukses (200/201)”{ "code": 200, "status": "SUCCESS", "message": "MODULE_LIST", "data": { ... }}Error Validasi (400)
Section titled “Error Validasi (400)”{ "code": 400, "status": "BAD_REQUEST", "message": "Validation failed", "errors": [...]}Unauthorized (401)
Section titled “Unauthorized (401)”{ "code": 401, "status": "UNAUTHORIZED", "message": "Invalid or expired token"}Forbidden (403)
Section titled “Forbidden (403)”{ "code": 403, "status": "FORBIDDEN", "message": "Insufficient permissions"}Not Found (404)
Section titled “Not Found (404)”{ "code": 404, "status": "NOT_FOUND", "message": "MODULE_NOT_FOUND"}Internal Error (500)
Section titled “Internal Error (500)”{ "code": 500, "status": "INTERNAL_SERVER_ERROR", "message": "An unexpected error occurred"}