RESTForge

Kode Error

Referensi HTTP status code dan format error response RESTForge

RESTForge menggunakan HTTP status code standar dan format error response yang konsisten di seluruh endpoint. Halaman ini mendokumentasikan setiap kode status, kapan digunakan, dan format response yang dikembalikan.

Response Envelope

Format Sukses (Success Format)

Seluruh endpoint (kecuali /datatables) menggunakan envelope berikut untuk operasi yang berhasil:

{
    "success": true,
    "message": "supplier data successfully added",
    "data": { },
    "timestamp": "2026-04-16T10:30:00.000Z"
}
FieldTipeKeterangan
successbooleanSelalu true untuk operasi yang berhasil
messagestringPesan deskriptif hasil operasi
dataobject/arrayHasil data (format bervariasi per endpoint)
timestampstringWaktu eksekusi dalam format ISO 8601

Format Error (Error Format)

{
    "success": false,
    "error": "Record not found",
    "message": "supplier not found",
    "timestamp": "2026-04-16T10:30:00.000Z"
}
FieldTipeKeterangan
successbooleanSelalu false untuk operasi yang gagal
errorstringKategori error (contoh: "Invalid payload", "Record not found")
messagestringPesan error detail yang dapat dibaca
detailsstringDetail error teknis. Hanya muncul jika NODE_ENV=development
timestampstringWaktu eksekusi dalam format ISO 8601

Format Error Validasi (Validation Error Format)

Endpoint /create dan /update yang memiliki fieldValidation menghasilkan format error khusus:

{
    "success": false,
    "error": "Validation failed",
    "message": "Invalid data",
    "errors": {
        "supplier_code": ["Field supplier_code is required"],
        "email": ["Field email must be a valid email address"],
        "credit_limit": ["Field credit_limit must be at least 0"]
    },
    "timestamp": "2026-04-16T10:30:00.000Z"
}

Field errors berisi object di mana key adalah nama field dan value adalah array pesan error per field.

Referensi Kode Status HTTP (HTTP Status Code Reference)

200 — OK

Operasi berhasil selain pembuatan data baru.

EndpointKondisi
/readQuery berhasil (termasuk jika data kosong)
/firstQuery berhasil (termasuk jika count: 0)
/updateUPDATE berhasil
/deleteDELETE berhasil
/adjustAdjustment berhasil
/datatablesQuery berhasil
/lookupQuery berhasil
/aggregateAgregasi berhasil
/change-statusPerubahan status berhasil
/read-compositeQuery berhasil
/update-compositeUPDATE berhasil

Endpoint /read dan /first mengembalikan 200 meskipun data kosong. Data kosong bukan error, melainkan hasil query yang valid.

201 — Created

Record baru berhasil dibuat. Hanya digunakan oleh endpoint yang membuat data baru.

EndpointKondisi
/createINSERT berhasil
/create-compositeINSERT header + detail berhasil

400 — Bad Request

Request tidak dapat diproses karena kesalahan dari sisi client. Error ini terjadi sebelum operasi database utama dijalankan (kecuali FK constraint pada create/update).

KategoriContoh MessageEndpoint
Payload kosongPayload cannot be emptySemua
Field wajib hilangPrimary key (supplier_id) is required for updateupdate, delete, adjust
Parameter WHERE hilangInvalid request format: where parameter is requireddelete
Format WHERE salahInvalid where formatread, first, delete
Validasi field gagalInvalid data (+ object errors)create, update
Field select tidak validInvalid field(s): unknown_columnread, first, lookup
Parameter tidak validPage must be greater than 0read
FK constraint (create/update)Referenced data not foundcreate, update
Header HTTP hilangX-Request-Mode header must be set to dynamiclookup (GET)
Adjustment tidak validField "x" is not configured for adjustmentadjust
Aggregate tidak validInvalid aggregate function "median"aggregate

404 — Not Found

Record yang dituju tidak ditemukan di database. Hanya terjadi pada operasi yang membutuhkan record existing.

EndpointKondisi
/updateRecord tidak ditemukan berdasarkan primary key
/deleteRecord tidak ditemukan berdasarkan WHERE
/adjustRecord tidak ditemukan sebelum adjustment
/update-compositeHeader record tidak ditemukan

Endpoint /read dan /first dengan data kosong mengembalikan 200 (bukan 404). Data kosong adalah hasil query yang valid, bukan error.

409 — Conflict

Operasi gagal karena konflik dengan state data saat ini di database.

KategoriKondisiEndpoint
Duplicate entryUnique constraint violationcreate, update, create-composite
FK constraint (delete)Record masih direferensikan oleh tabel laindelete
Constraint violationGuard clause gagal (nilai di bawah minimum)adjust
Resource busyDistributed lock tidak dapat diperolehupdate, delete, change-status

Perbedaan FK constraint antara endpoint:

  • Create/Update: FK violation di-map ke 400 karena data referensi tidak ditemukan (kesalahan input dari client)
  • Delete: FK violation di-map ke 409 karena record tidak bisa dihapus selama masih digunakan (konflik state database)

422 — Unprocessable Entity

Transisi status tidak diizinkan berdasarkan konfigurasi workflow.

EndpointKondisi
/change-statusTransisi dari status A ke status B tidak terdaftar di workflow.transitions
{
    "success": false,
    "error": "Transition not allowed",
    "message": "Cannot change status from 'draft' to 'closed'",
    "timestamp": "2026-04-16T10:30:00.000Z"
}

429 — Too Many Requests

Rate limit terlampaui. Dikembalikan jika rate limiting middleware aktif.

500 — Internal Server Error

Error yang terjadi di sisi server dan bukan disebabkan oleh kesalahan client. Ini adalah catch-all terakhir di setiap endpoint.

KategoriContoh Penyebab
Database errorConnection timeout, query syntax error, database down
Lock failureFailed to acquire lock for update operation
Verification failureCould not verify data existence before delete
Error tak terdugaRuntime error, out of memory

Field details hanya muncul jika NODE_ENV=development, berisi error.message asli untuk keperluan debugging.

Kategori Error (Error Categories)

Kategori ErrorHTTP CodeScope Endpoint
Invalid payload400Semua
Missing required field400update, delete, adjust, change-status
Validation failed400create, update
Invalid where format400read, first, delete
Invalid parameter400read, aggregate, lookup
Foreign key constraint400 / 409400 pada create/update, 409 pada delete
Duplicate entry409create, update, create-composite
Constraint violation409adjust
Record not found404update, delete, adjust
Transition not allowed422change-status
Database/server error500Semua

Mapping Error Code PostgreSQL

RESTForge memetakan kode error PostgreSQL ke HTTP status code berdasarkan konteks endpoint:

PG Error CodePada Create/UpdatePada DeleteKategori
23505409409Unique constraint violation
23503400409Foreign key constraint

Perbedaan mapping 23503 disebabkan oleh konteks yang berbeda:

  • Create/Update: data referensi tidak ada sehingga merupakan kesalahan input dari client (400)
  • Delete: data masih direferensikan oleh tabel lain sehingga merupakan konflik state database (409)

Langkah Selanjutnya (Next Steps)

On this page