RESTForge

POST /create

Spesifikasi endpoint create untuk membuat record baru

Endpoint /create digunakan untuk menyisipkan satu record baru ke dalam tabel database.

Referensi Cepat (Quick Reference)

PropertiNilai
MethodPOST
URL/api/{project}/{endpoint}/create
Content-Typeapplication/json
Status Sukses201 Created
DatabasePostgreSQL, MySQL, Oracle
ValidasifieldValidation dari payload (opsional)
CacheInvalidasi otomatis setelah create berhasil
Event LifecycleonBeforeInsert → INSERT → onAfterInsert

Ikhtisar (Overview)

Request body berisi pasangan field-value yang akan di-insert. Primary key di-generate otomatis sebagai UUID jika tidak disertakan atau bernilai kosong. Endpoint ini mendukung validasi deklaratif melalui konfigurasi fieldValidation di payload, sehingga setiap field dapat divalidasi tanpa menulis kode tambahan.

Hanya field yang terdaftar di fieldName payload yang akan diproses. Field lain di luar daftar tersebut diabaikan secara silent.

Format Request (Request Format)

Parameter (Parameters)

Request body berisi JSON object dengan pasangan field-value. Tidak ada parameter wajib selain field yang dikonfigurasi di fieldValidation dengan constraint required: true.

ParameterTipeWajibKeterangan
{primaryKey}stringTidakJika tidak dikirim atau kosong, UUID v4 di-generate otomatis
{fieldName[n]}anyTergantung validasiField sesuai konfigurasi fieldName di payload

Contoh Request (Request Examples)

Create tanpa primary key (auto UUID):

POST /api/mini-inventory/supplier/create
{
    "supplier_code": "SUP-001",
    "supplier_name": "PT Maju Jaya",
    "email": "contact@majujaya.com",
    "phone": "021-5551234",
    "is_active": true
}

Create dengan primary key eksplisit:

POST /api/mini-inventory/supplier/create
{
    "supplier_id": "550e8400-e29b-41d4-a716-446655440000",
    "supplier_code": "SUP-002",
    "supplier_name": "CV Berkah Sentosa",
    "is_active": true
}

Body Options

Endpoint /create mendukung format request body alternatif {data, options} untuk mengirimkan opsi tambahan yang dapat dibaca oleh component handler dan processor. Detail lengkap tersedia di halaman Body Options.

POST /api/mini-inventory/supplier/create
{
    "data": {
        "supplier_code": "SUP-001",
        "supplier_name": "PT Maju Jaya",
        "is_active": true
    },
    "options": {
        "send_feedback_email": true
    }
}

Format Response (Response Format)

Response Sukses (Success Response)

HTTP 201 Created

{
    "success": true,
    "message": "supplier data successfully added",
    "data": {
        "supplier_id": "550e8400-e29b-41d4-a716-446655440000",
        "supplier_code": "SUP-001",
        "supplier_name": "PT Maju Jaya",
        "email": "contact@majujaya.com",
        "phone": "021-5551234",
        "is_active": true,
        "created_at": "2026-04-16T10:30:00.000Z",
        "created_by": "Input from API"
    },
    "timestamp": "2026-04-16T10:30:00.000Z"
}

Response Error (Error Responses)

400 — Payload kosong:

{
    "success": false,
    "error": "Invalid payload",
    "message": "Payload cannot be empty",
    "timestamp": "2026-04-16T10:30:00.000Z"
}

400 — Validasi gagal:

{
    "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"]
    },
    "timestamp": "2026-04-16T10:30:00.000Z"
}

400 — Foreign key constraint:

{
    "success": false,
    "error": "Foreign key constraint",
    "message": "Referenced data not found",
    "timestamp": "2026-04-16T10:30:00.000Z"
}

409 — Duplicate key:

{
    "success": false,
    "error": "Duplicate entry",
    "message": "Supplier code already exists",
    "timestamp": "2026-04-16T10:30:00.000Z"
}

Field Otomatis (Auto-Populated Fields)

FieldNilaiKeterangan
Primary keyUUID v4Jika tidak dikirim atau bernilai kosong/"-"
created_atTimestamp saat iniSelalu di-set oleh sistem
created_by"Input from API"Dapat di-override melalui request body

Perilaku Cache (Cache Behavior)

Setelah operasi create berhasil, seluruh cache terkait endpoint ini di-invalidasi secara otomatis. Hal ini memastikan endpoint /read, /datatables, dan /lookup mengembalikan data terbaru pada request berikutnya.

Event Lifecycle

Jika component engine dikonfigurasi di payload, endpoint /create menjalankan hook berikut:

onBeforeInsert → INSERT ke database → onAfterInsert

Hook onBeforeInsert dapat memodifikasi data sebelum di-insert. Hook onAfterInsert dapat menjalankan side effect setelah data berhasil disimpan (misalnya mengirim notifikasi atau publish event).

Langkah Selanjutnya (Next Steps)

On this page