{
  "info": {
    "name": "devapi API Audit",
    "description": "Postman collection hasil audit source code CodeIgniter 4. Semua request diambil dari controller dan model yang benar-benar ada pada source yang diaudit.\n\nCatatan penting:\n- Routing API tidak didefinisikan eksplisit di Routes.php; endpoint berasal dari legacy auto routing.\n- Header auth yang dipakai API adalah token, bukan Bearer token.\n- Collection ini hanya memuat endpoint yang terbukti mengembalikan response API atau JSON dari App/Controllers/Api.php.\n- Jika deskripsi request berisi perlu verifikasi manual, ada gap implementasi atau perilaku yang perlu diuji manual sebelum dipakai di production.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "Auth",
      "item": [
        {
          "name": "Login",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::auth\nSource model/query: app/Models/ApiModel.php::get_partner + app/Models/AppToken.php::do_add\nCanonical path: /api/auth\nAuth: Public\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: user, password\nNote: Controller reads raw JSON body.\nNote: Postman test script stores returned token into environment variable token.",
            "url": "{{base_url}}/api/auth",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"user\": \"{{auth_user}}\",\n  \"password\": \"{{auth_password}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::auth\nSource model/query: app/Models/ApiModel.php::get_partner + app/Models/AppToken.php::do_add\nCanonical path: /api/auth\nAuth: Public\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: user, password\nNote: Controller reads raw JSON body.\nNote: Postman test script stores returned token into environment variable token.",
                "url": "{{base_url}}/api/auth",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"user\": \"{{auth_user}}\",\n  \"password\": \"{{auth_password}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success\",\n  \"data\": {\n    \"user\": \"demo_user\",\n    \"token\": \"$2y$10$exampletokenhash\"\n  }\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::auth\nSource model/query: app/Models/ApiModel.php::get_partner + app/Models/AppToken.php::do_add\nCanonical path: /api/auth\nAuth: Public\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: user, password\nNote: Controller reads raw JSON body.\nNote: Postman test script stores returned token into environment variable token.",
                "url": "{{base_url}}/api/auth",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"user\": \"{{auth_user}}\",\n  \"password\": \"{{auth_password}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"user\": \"demo_user\",\n  \"message\": \"Authentication failed\"\n}"
            }
          ],
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "if (pm.response.code === 200) {",
                  "  const data = pm.response.json();",
                  "  if (data && data.data && data.data.token) {",
                  "    pm.environment.set(\"token\", data.data.token);",
                  "  }",
                  "}"
                ]
              }
            }
          ]
        },
        {
          "name": "Login 2",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::auth2\nSource model/query: app/Models/ApiModel.php::get_partner + app/Models/AppToken.php::do_add\nCanonical path: /api/auth2\nAuth: Public\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: user, password\nNote: Implementation is the same as /api/auth.\nNote: Postman test script stores returned token into environment variable token.",
            "url": "{{base_url}}/api/auth2",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"user\": \"{{auth_user}}\",\n  \"password\": \"{{auth_password}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::auth2\nSource model/query: app/Models/ApiModel.php::get_partner + app/Models/AppToken.php::do_add\nCanonical path: /api/auth2\nAuth: Public\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: user, password\nNote: Implementation is the same as /api/auth.\nNote: Postman test script stores returned token into environment variable token.",
                "url": "{{base_url}}/api/auth2",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"user\": \"{{auth_user}}\",\n  \"password\": \"{{auth_password}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success\",\n  \"data\": {\n    \"user\": \"demo_user\",\n    \"token\": \"$2y$10$exampletokenhash\"\n  }\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::auth2\nSource model/query: app/Models/ApiModel.php::get_partner + app/Models/AppToken.php::do_add\nCanonical path: /api/auth2\nAuth: Public\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: user, password\nNote: Implementation is the same as /api/auth.\nNote: Postman test script stores returned token into environment variable token.",
                "url": "{{base_url}}/api/auth2",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"user\": \"{{auth_user}}\",\n  \"password\": \"{{auth_password}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"user\": \"demo_user\",\n  \"message\": \"Authentication failed\"\n}"
            }
          ],
          "event": [
            {
              "listen": "test",
              "script": {
                "type": "text/javascript",
                "exec": [
                  "if (pm.response.code === 200) {",
                  "  const data = pm.response.json();",
                  "  if (data && data.data && data.data.token) {",
                  "    pm.environment.set(\"token\", data.data.token);",
                  "  }",
                  "}"
                ]
              }
            }
          ]
        }
      ]
    },
    {
      "name": "Master",
      "item": [
        {
          "name": "Petugas By ID",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::petugas\nSource model/query: app/Models/Core_model.php::_get_petugas\nCanonical path: /api/petugas/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = emp_code. Omitting the segment still calls the same method and returns all petugas because the model condition becomes null.\nNote: Success example is inferred_from_code from the SELECT list.",
            "url": "{{base_url}}/api/petugas/{{petugas_id}}"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::petugas\nSource model/query: app/Models/Core_model.php::_get_petugas\nCanonical path: /api/petugas/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = emp_code. Omitting the segment still calls the same method and returns all petugas because the model condition becomes null.\nNote: Success example is inferred_from_code from the SELECT list.",
                "url": "{{base_url}}/api/petugas/{{petugas_id}}"
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"kode_petugas\": \"1031\",\n      \"nama_petugas\": \"Petugas Demo\",\n      \"alamat\": \"Alamat Petugas\",\n      \"norek\": \"0011223344\",\n      \"nohp\": \"081234567890\",\n      \"kode_kas\": \"99\",\n      \"unit_kerja\": \"13041\"\n    }\n  ]\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::petugas\nSource model/query: app/Models/Core_model.php::_get_petugas\nCanonical path: /api/petugas/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = emp_code. Omitting the segment still calls the same method and returns all petugas because the model condition becomes null.\nNote: Success example is inferred_from_code from the SELECT list.",
                "url": "{{base_url}}/api/petugas/{{petugas_id}}"
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::petugas\nSource model/query: app/Models/Core_model.php::_get_petugas\nCanonical path: /api/petugas/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = emp_code. Omitting the segment still calls the same method and returns all petugas because the model condition becomes null.\nNote: Success example is inferred_from_code from the SELECT list.",
                "url": "{{base_url}}/api/petugas/{{petugas_id}}"
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        },
        {
          "name": "Jenis Agunan",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::jenisagunan\nSource model/query: app/Models/Core_model.php::_get_jenisagunan\nCanonical path: /api/jenisagunan\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Response shape is inferred_from_code from tbljnsagunan.",
            "url": "{{base_url}}/api/jenisagunan"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::jenisagunan\nSource model/query: app/Models/Core_model.php::_get_jenisagunan\nCanonical path: /api/jenisagunan\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Response shape is inferred_from_code from tbljnsagunan.",
                "url": "{{base_url}}/api/jenisagunan"
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"jns_idno\": 1,\n      \"jns_name\": \"BPKB\"\n    }\n  ]\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::jenisagunan\nSource model/query: app/Models/Core_model.php::_get_jenisagunan\nCanonical path: /api/jenisagunan\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Response shape is inferred_from_code from tbljnsagunan.",
                "url": "{{base_url}}/api/jenisagunan"
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::jenisagunan\nSource model/query: app/Models/Core_model.php::_get_jenisagunan\nCanonical path: /api/jenisagunan\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Response shape is inferred_from_code from tbljnsagunan.",
                "url": "{{base_url}}/api/jenisagunan"
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        },
        {
          "name": "Product Pembiayaan",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::product\nSource model/query: app/Models/Core_model.php::_get_product\nCanonical path: /api/product\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Controller hardcodes prd_jens = K, so this endpoint only returns pembiayaan products.",
            "url": "{{base_url}}/api/product"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::product\nSource model/query: app/Models/Core_model.php::_get_product\nCanonical path: /api/product\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Controller hardcodes prd_jens = K, so this endpoint only returns pembiayaan products.",
                "url": "{{base_url}}/api/product"
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"prd_code\": \"K01\",\n      \"prd_name\": \"Pembiayaan Reguler\"\n    }\n  ]\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::product\nSource model/query: app/Models/Core_model.php::_get_product\nCanonical path: /api/product\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Controller hardcodes prd_jens = K, so this endpoint only returns pembiayaan products.",
                "url": "{{base_url}}/api/product"
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::product\nSource model/query: app/Models/Core_model.php::_get_product\nCanonical path: /api/product\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Controller hardcodes prd_jens = K, so this endpoint only returns pembiayaan products.",
                "url": "{{base_url}}/api/product"
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        },
        {
          "name": "Jenis Angsuran",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::jenisangsuran\nSource model/query: app/Models/Core_model.php::_get_jenisangsuran\nCanonical path: /api/jenisangsuran\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Response shape is inferred_from_code from tbljnsangsuran.",
            "url": "{{base_url}}/api/jenisangsuran"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::jenisangsuran\nSource model/query: app/Models/Core_model.php::_get_jenisangsuran\nCanonical path: /api/jenisangsuran\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Response shape is inferred_from_code from tbljnsangsuran.",
                "url": "{{base_url}}/api/jenisangsuran"
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"idno\": 1,\n      \"nama\": \"Bulanan\"\n    }\n  ]\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::jenisangsuran\nSource model/query: app/Models/Core_model.php::_get_jenisangsuran\nCanonical path: /api/jenisangsuran\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Response shape is inferred_from_code from tbljnsangsuran.",
                "url": "{{base_url}}/api/jenisangsuran"
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::jenisangsuran\nSource model/query: app/Models/Core_model.php::_get_jenisangsuran\nCanonical path: /api/jenisangsuran\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Response shape is inferred_from_code from tbljnsangsuran.",
                "url": "{{base_url}}/api/jenisangsuran"
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        },
        {
          "name": "Jenis Bunga",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::jenisbunga\nSource model/query: app/Models/Core_model.php::_get_jenisbunga\nCanonical path: /api/jenisbunga\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Response shape is inferred_from_code from tbljnsmargin.",
            "url": "{{base_url}}/api/jenisbunga"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::jenisbunga\nSource model/query: app/Models/Core_model.php::_get_jenisbunga\nCanonical path: /api/jenisbunga\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Response shape is inferred_from_code from tbljnsmargin.",
                "url": "{{base_url}}/api/jenisbunga"
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"idno\": 1,\n      \"nama\": \"Flat\"\n    }\n  ]\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::jenisbunga\nSource model/query: app/Models/Core_model.php::_get_jenisbunga\nCanonical path: /api/jenisbunga\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Response shape is inferred_from_code from tbljnsmargin.",
                "url": "{{base_url}}/api/jenisbunga"
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::jenisbunga\nSource model/query: app/Models/Core_model.php::_get_jenisbunga\nCanonical path: /api/jenisbunga\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Response shape is inferred_from_code from tbljnsmargin.",
                "url": "{{base_url}}/api/jenisbunga"
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Anggota",
      "item": [
        {
          "name": "List Anggota (Root /api)",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::index\nSource model/query: app/Models/Core_model.php::findAll\nCanonical path: /api\nAuth: Public\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Canonical collection path is /api. Legacy auto routing also exposes /api/index.\nNote: Controller returns raw tblanggota rows; example only shows fields that can be evidenced from source.",
            "url": "{{base_url}}/api"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::index\nSource model/query: app/Models/Core_model.php::findAll\nCanonical path: /api\nAuth: Public\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nNote: Canonical collection path is /api. Legacy auto routing also exposes /api/index.\nNote: Controller returns raw tblanggota rows; example only shows fields that can be evidenced from source.",
                "url": "{{base_url}}/api"
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"anggota\": [\n    {\n      \"agt_numb\": \"1304199090900111\",\n      \"agt_name\": \"Nama Anggota\",\n      \"agt_adrs\": \"Alamat Anggota\"\n    }\n  ]\n}"
            }
          ]
        },
        {
          "name": "Detail Anggota",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::anggota\nSource model/query: app/Models/Core_model.php::_get_anggota\nCanonical path: /api/anggota/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = agt_numb\nNote: Success example is inferred_from_code from the SELECT list.",
            "url": "{{base_url}}/api/anggota/{{anggota_id}}"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::anggota\nSource model/query: app/Models/Core_model.php::_get_anggota\nCanonical path: /api/anggota/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = agt_numb\nNote: Success example is inferred_from_code from the SELECT list.",
                "url": "{{base_url}}/api/anggota/{{anggota_id}}"
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"noanggota\": \"1304199090900111\",\n      \"nama\": \"Nama Anggota\",\n      \"alamat\": \"Alamat Anggota\",\n      \"jeniskelamin\": \"L\",\n      \"tempatlahir\": \"Jakarta\",\n      \"tgllahir\": \"1990-09-09\",\n      \"telepon\": \"081234567890\",\n      \"noktp\": \"317xxxxxxxxx\",\n      \"jenisanggotaan\": \"Anggota Biasa\",\n      \"email\": \"anggota@example.com\",\n      \"kantor\": \"13041\",\n      \"status\": \"Aktif\"\n    }\n  ]\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::anggota\nSource model/query: app/Models/Core_model.php::_get_anggota\nCanonical path: /api/anggota/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = agt_numb\nNote: Success example is inferred_from_code from the SELECT list.",
                "url": "{{base_url}}/api/anggota/{{anggota_id}}"
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::anggota\nSource model/query: app/Models/Core_model.php::_get_anggota\nCanonical path: /api/anggota/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = agt_numb\nNote: Success example is inferred_from_code from the SELECT list.",
                "url": "{{base_url}}/api/anggota/{{anggota_id}}"
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        },
        {
          "name": "Pendaftaran Anggota",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::pendaftarananggota\nSource model/query: app/Models/Save_model.php::_saveanggota + app/Models/Core_model.php::_get_cabang\nCanonical path: /api/pendaftarananggota\nAuth: Public\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tanggal, tgl_lahir, kantor_id, no_ktp, jenis_kelamin, jenis_Kenanggotaan, nama, tempat_lahir, alamat, no_telepon, email\nNote: Controller does not check token.\nNote: Controller treats the local data array as success instead of checking insert result; persistence should be manually verified if needed.",
            "url": "{{base_url}}/api/pendaftarananggota",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"tanggal\": \"{{sample_date}}\",\n  \"tgl_lahir\": \"1990-09-09\",\n  \"kantor_id\": \"{{kantor_id}}\",\n  \"no_ktp\": \"317xxxxxxxxx\",\n  \"jenis_kelamin\": \"1\",\n  \"jenis_Kenanggotaan\": \"1\",\n  \"nama\": \"Calon Anggota Postman\",\n  \"tempat_lahir\": \"Jakarta\",\n  \"alamat\": \"Alamat Calon Anggota\",\n  \"no_telepon\": \"081234567890\",\n  \"email\": \"calon@example.com\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::pendaftarananggota\nSource model/query: app/Models/Save_model.php::_saveanggota + app/Models/Core_model.php::_get_cabang\nCanonical path: /api/pendaftarananggota\nAuth: Public\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tanggal, tgl_lahir, kantor_id, no_ktp, jenis_kelamin, jenis_Kenanggotaan, nama, tempat_lahir, alamat, no_telepon, email\nNote: Controller does not check token.\nNote: Controller treats the local data array as success instead of checking insert result; persistence should be manually verified if needed.",
                "url": "{{base_url}}/api/pendaftarananggota",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tanggal\": \"{{sample_date}}\",\n  \"tgl_lahir\": \"1990-09-09\",\n  \"kantor_id\": \"{{kantor_id}}\",\n  \"no_ktp\": \"317xxxxxxxxx\",\n  \"jenis_kelamin\": \"1\",\n  \"jenis_Kenanggotaan\": \"1\",\n  \"nama\": \"Calon Anggota Postman\",\n  \"tempat_lahir\": \"Jakarta\",\n  \"alamat\": \"Alamat Calon Anggota\",\n  \"no_telepon\": \"081234567890\",\n  \"email\": \"calon@example.com\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"Berhasil\",\n  \"message\": \"No Calon Anggota 1304126090911111.0\"\n}"
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::pendaftarananggota\nSource model/query: app/Models/Save_model.php::_saveanggota + app/Models/Core_model.php::_get_cabang\nCanonical path: /api/pendaftarananggota\nAuth: Public\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tanggal, tgl_lahir, kantor_id, no_ktp, jenis_kelamin, jenis_Kenanggotaan, nama, tempat_lahir, alamat, no_telepon, email\nNote: Controller does not check token.\nNote: Controller treats the local data array as success instead of checking insert result; persistence should be manually verified if needed.",
                "url": "{{base_url}}/api/pendaftarananggota",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tanggal\": \"{{sample_date}}\",\n  \"tgl_lahir\": \"1990-09-09\",\n  \"kantor_id\": \"{{kantor_id}}\",\n  \"no_ktp\": \"317xxxxxxxxx\",\n  \"jenis_kelamin\": \"1\",\n  \"jenis_Kenanggotaan\": \"1\",\n  \"nama\": \"Calon Anggota Postman\",\n  \"tempat_lahir\": \"Jakarta\",\n  \"alamat\": \"Alamat Calon Anggota\",\n  \"no_telepon\": \"081234567890\",\n  \"email\": \"calon@example.com\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Simpanan",
      "item": [
        {
          "name": "List Simpanan By Anggota",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::simpanan\nSource model/query: app/Models/Core_model.php::_get_tabungan\nCanonical path: /api/simpanan/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = agt_numb\nNote: Success example is inferred_from_code from the grouped balance query.",
            "url": "{{base_url}}/api/simpanan/{{anggota_id}}"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::simpanan\nSource model/query: app/Models/Core_model.php::_get_tabungan\nCanonical path: /api/simpanan/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = agt_numb\nNote: Success example is inferred_from_code from the grouped balance query.",
                "url": "{{base_url}}/api/simpanan/{{anggota_id}}"
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"norekening\": \"212.13041.000004\",\n      \"no_anggota\": \"1304199090900111\",\n      \"nama\": \"Nama Anggota\",\n      \"id_product\": \"S01\",\n      \"nama_product\": \"Simpanan Wajib\",\n      \"minimum_saldo\": 10000,\n      \"minum_setor\": 5000,\n      \"nil_saldo\": 250000,\n      \"status\": \"Aktif\"\n    }\n  ]\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::simpanan\nSource model/query: app/Models/Core_model.php::_get_tabungan\nCanonical path: /api/simpanan/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = agt_numb\nNote: Success example is inferred_from_code from the grouped balance query.",
                "url": "{{base_url}}/api/simpanan/{{anggota_id}}"
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::simpanan\nSource model/query: app/Models/Core_model.php::_get_tabungan\nCanonical path: /api/simpanan/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = agt_numb\nNote: Success example is inferred_from_code from the grouped balance query.",
                "url": "{{base_url}}/api/simpanan/{{anggota_id}}"
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        },
        {
          "name": "Cek Simpanan By Rekening",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::ceksimpanan\nSource model/query: app/Models/Core_model.php::_get_tabunganrek\nCanonical path: /api/ceksimpanan/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = tbg_code\nNote: The saldo field is literally named nil_sald in the query result.",
            "url": "{{base_url}}/api/ceksimpanan/{{simpanan_norek}}"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::ceksimpanan\nSource model/query: app/Models/Core_model.php::_get_tabunganrek\nCanonical path: /api/ceksimpanan/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = tbg_code\nNote: The saldo field is literally named nil_sald in the query result.",
                "url": "{{base_url}}/api/ceksimpanan/{{simpanan_norek}}"
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"norekening\": \"212.13041.000004\",\n      \"no_anggota\": \"1304199090900111\",\n      \"nama\": \"Nama Anggota\",\n      \"id_product\": \"S01\",\n      \"nama_product\": \"Simpanan Wajib\",\n      \"minimum_saldo\": 10000,\n      \"minum_setor\": 5000,\n      \"nil_sald\": 250000,\n      \"status\": \"Aktif\"\n    }\n  ]\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::ceksimpanan\nSource model/query: app/Models/Core_model.php::_get_tabunganrek\nCanonical path: /api/ceksimpanan/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = tbg_code\nNote: The saldo field is literally named nil_sald in the query result.",
                "url": "{{base_url}}/api/ceksimpanan/{{simpanan_norek}}"
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::ceksimpanan\nSource model/query: app/Models/Core_model.php::_get_tabunganrek\nCanonical path: /api/ceksimpanan/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = tbg_code\nNote: The saldo field is literally named nil_sald in the query result.",
                "url": "{{base_url}}/api/ceksimpanan/{{simpanan_norek}}"
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        },
        {
          "name": "Mutasi Simpanan",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::mutasisimpanan\nSource model/query: app/Models/Core_model.php::_get_mutasisimpanan\nCanonical path: /api/mutasisimpanan/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = tbg_code\nNote: Success example is inferred_from_code from the SELECT list.",
            "url": "{{base_url}}/api/mutasisimpanan/{{simpanan_norek}}"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::mutasisimpanan\nSource model/query: app/Models/Core_model.php::_get_mutasisimpanan\nCanonical path: /api/mutasisimpanan/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = tbg_code\nNote: Success example is inferred_from_code from the SELECT list.",
                "url": "{{base_url}}/api/mutasisimpanan/{{simpanan_norek}}"
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"notransaksi\": \"13041.11.20260400001\",\n      \"norekening\": \"212.13041.000004\",\n      \"jumlah\": 50000,\n      \"saldo\": 300000,\n      \"jenis_transaksi\": \"Kredit\",\n      \"nama\": \"Nama Anggota\",\n      \"tanggal\": \"2026-04-09 10:00:00\",\n      \"keterangan\": \"Setoran-Tunai\"\n    }\n  ]\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::mutasisimpanan\nSource model/query: app/Models/Core_model.php::_get_mutasisimpanan\nCanonical path: /api/mutasisimpanan/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = tbg_code\nNote: Success example is inferred_from_code from the SELECT list.",
                "url": "{{base_url}}/api/mutasisimpanan/{{simpanan_norek}}"
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::mutasisimpanan\nSource model/query: app/Models/Core_model.php::_get_mutasisimpanan\nCanonical path: /api/mutasisimpanan/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = tbg_code\nNote: Success example is inferred_from_code from the SELECT list.",
                "url": "{{base_url}}/api/mutasisimpanan/{{simpanan_norek}}"
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        },
        {
          "name": "Setor Simpanan",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::setorsimpanan\nSource model/query: app/Models/Save_model.php::_savesetortabungan + app/Models/Core_model.php::_get_simpanantrans\nCanonical path: /api/setorsimpanan\nAuth: Public by current code\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, collector_id, keterangan, norek, jumlah\nNote: perlu verifikasi manual: token check in private helper _setortariksimpanan is commented out, so this transaction endpoint is public in current source.\nNote: Controller reads raw JSON body.",
            "url": "{{base_url}}/api/setorsimpanan",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"collector_id\": \"{{collector_id}}\",\n  \"keterangan\": \"Setoran tunai via Postman\",\n  \"norek\": \"{{simpanan_norek}}\",\n  \"jumlah\": \"50000\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::setorsimpanan\nSource model/query: app/Models/Save_model.php::_savesetortabungan + app/Models/Core_model.php::_get_simpanantrans\nCanonical path: /api/setorsimpanan\nAuth: Public by current code\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, collector_id, keterangan, norek, jumlah\nNote: perlu verifikasi manual: token check in private helper _setortariksimpanan is commented out, so this transaction endpoint is public in current source.\nNote: Controller reads raw JSON body.",
                "url": "{{base_url}}/api/setorsimpanan",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"collector_id\": \"{{collector_id}}\",\n  \"keterangan\": \"Setoran tunai via Postman\",\n  \"norek\": \"{{simpanan_norek}}\",\n  \"jumlah\": \"50000\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"Berhasil\",\n  \"data\": [\n    {\n      \"nobukti\": \"13041.11.20260400001\",\n      \"norekening\": \"212.13041.000004\",\n      \"nama\": \"Nama Anggota\",\n      \"prd_code\": \"S01\",\n      \"nama_product\": \"Simpanan Wajib\",\n      \"minimum_saldo\": 10000,\n      \"minum_setor\": 5000,\n      \"saldo_awal\": 250000,\n      \"jumlah\": 50000,\n      \"saldo\": 300000,\n      \"waktu\": \"2026-04-09 10:00:00\"\n    }\n  ]\n}"
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::setorsimpanan\nSource model/query: app/Models/Save_model.php::_savesetortabungan + app/Models/Core_model.php::_get_simpanantrans\nCanonical path: /api/setorsimpanan\nAuth: Public by current code\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, collector_id, keterangan, norek, jumlah\nNote: perlu verifikasi manual: token check in private helper _setortariksimpanan is commented out, so this transaction endpoint is public in current source.\nNote: Controller reads raw JSON body.",
                "url": "{{base_url}}/api/setorsimpanan",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"collector_id\": \"{{collector_id}}\",\n  \"keterangan\": \"Setoran tunai via Postman\",\n  \"norek\": \"{{simpanan_norek}}\",\n  \"jumlah\": \"50000\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"Petugas tidak terdaftar\"\n}"
            }
          ]
        },
        {
          "name": "Tarik Simpanan",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::tariksimpanan\nSource model/query: app/Models/Save_model.php::_savesetortabungan + app/Models/Core_model.php::_get_simpanantrans\nCanonical path: /api/tariksimpanan\nAuth: Public by current code\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, collector_id, keterangan, norek, jumlah\nNote: perlu verifikasi manual: token check in private helper _setortariksimpanan is commented out, so this transaction endpoint is public in current source.\nNote: Collection uses POST because the controller reads raw JSON.",
            "url": "{{base_url}}/api/tariksimpanan",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"collector_id\": \"{{collector_id}}\",\n  \"keterangan\": \"Tarik tunai via Postman\",\n  \"norek\": \"{{simpanan_norek}}\",\n  \"jumlah\": \"50000\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::tariksimpanan\nSource model/query: app/Models/Save_model.php::_savesetortabungan + app/Models/Core_model.php::_get_simpanantrans\nCanonical path: /api/tariksimpanan\nAuth: Public by current code\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, collector_id, keterangan, norek, jumlah\nNote: perlu verifikasi manual: token check in private helper _setortariksimpanan is commented out, so this transaction endpoint is public in current source.\nNote: Collection uses POST because the controller reads raw JSON.",
                "url": "{{base_url}}/api/tariksimpanan",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"collector_id\": \"{{collector_id}}\",\n  \"keterangan\": \"Tarik tunai via Postman\",\n  \"norek\": \"{{simpanan_norek}}\",\n  \"jumlah\": \"50000\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"Berhasil\",\n  \"data\": [\n    {\n      \"nobukti\": \"13041.11.20260400002\",\n      \"norekening\": \"212.13041.000004\",\n      \"nama\": \"Nama Anggota\",\n      \"prd_code\": \"S01\",\n      \"nama_product\": \"Simpanan Wajib\",\n      \"minimum_saldo\": 10000,\n      \"minum_setor\": 5000,\n      \"saldo_awal\": 300000,\n      \"jumlah\": 50000,\n      \"saldo\": 250000,\n      \"waktu\": \"2026-04-09 10:10:00\"\n    }\n  ]\n}"
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::tariksimpanan\nSource model/query: app/Models/Save_model.php::_savesetortabungan + app/Models/Core_model.php::_get_simpanantrans\nCanonical path: /api/tariksimpanan\nAuth: Public by current code\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, collector_id, keterangan, norek, jumlah\nNote: perlu verifikasi manual: token check in private helper _setortariksimpanan is commented out, so this transaction endpoint is public in current source.\nNote: Collection uses POST because the controller reads raw JSON.",
                "url": "{{base_url}}/api/tariksimpanan",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"collector_id\": \"{{collector_id}}\",\n  \"keterangan\": \"Tarik tunai via Postman\",\n  \"norek\": \"{{simpanan_norek}}\",\n  \"jumlah\": \"50000\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"Petugas tidak terdaftar\"\n}"
            }
          ]
        },
        {
          "name": "Transfer Antar Tabungan",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::transfer\nSource model/query: app/Models/Save_model.php::_savesetortabungan + app/Models/Core_model.php::_cek_norektabungan + app/Models/Core_model.php::_get_simpanantrans\nCanonical path: /api/transfer\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, collector_id, norek, rektujuan, jumlah, keterangan\nNote: Returned response is built from _get_simpanantrans(v_trx_code), so it only shows the source-account transaction.",
            "url": "{{base_url}}/api/transfer",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"collector_id\": \"{{collector_id}}\",\n  \"norek\": \"{{simpanan_norek}}\",\n  \"rektujuan\": \"{{rektujuan}}\",\n  \"jumlah\": \"50000\",\n  \"keterangan\": \"Transfer antar tabungan via Postman\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::transfer\nSource model/query: app/Models/Save_model.php::_savesetortabungan + app/Models/Core_model.php::_cek_norektabungan + app/Models/Core_model.php::_get_simpanantrans\nCanonical path: /api/transfer\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, collector_id, norek, rektujuan, jumlah, keterangan\nNote: Returned response is built from _get_simpanantrans(v_trx_code), so it only shows the source-account transaction.",
                "url": "{{base_url}}/api/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"collector_id\": \"{{collector_id}}\",\n  \"norek\": \"{{simpanan_norek}}\",\n  \"rektujuan\": \"{{rektujuan}}\",\n  \"jumlah\": \"50000\",\n  \"keterangan\": \"Transfer antar tabungan via Postman\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"Berhasil\",\n  \"data\": [\n    {\n      \"nobukti\": \"13041.11.20260400003\",\n      \"norekening\": \"212.13041.000004\",\n      \"nama\": \"Nama Anggota\",\n      \"prd_code\": \"S01\",\n      \"nama_product\": \"Simpanan Wajib\",\n      \"minimum_saldo\": 10000,\n      \"minum_setor\": 5000,\n      \"saldo_awal\": 300000,\n      \"jumlah\": 50000,\n      \"saldo\": 250000,\n      \"waktu\": \"2026-04-09 10:15:00\"\n    }\n  ]\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::transfer\nSource model/query: app/Models/Save_model.php::_savesetortabungan + app/Models/Core_model.php::_cek_norektabungan + app/Models/Core_model.php::_get_simpanantrans\nCanonical path: /api/transfer\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, collector_id, norek, rektujuan, jumlah, keterangan\nNote: Returned response is built from _get_simpanantrans(v_trx_code), so it only shows the source-account transaction.",
                "url": "{{base_url}}/api/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"collector_id\": \"{{collector_id}}\",\n  \"norek\": \"{{simpanan_norek}}\",\n  \"rektujuan\": \"{{rektujuan}}\",\n  \"jumlah\": \"50000\",\n  \"keterangan\": \"Transfer antar tabungan via Postman\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"Rekening tujuan tidak ditemukan\"\n}"
            },
            {
              "name": "401 Invalid Token",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::transfer\nSource model/query: app/Models/Save_model.php::_savesetortabungan + app/Models/Core_model.php::_cek_norektabungan + app/Models/Core_model.php::_get_simpanantrans\nCanonical path: /api/transfer\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, collector_id, norek, rektujuan, jumlah, keterangan\nNote: Returned response is built from _get_simpanantrans(v_trx_code), so it only shows the source-account transaction.",
                "url": "{{base_url}}/api/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"collector_id\": \"{{collector_id}}\",\n  \"norek\": \"{{simpanan_norek}}\",\n  \"rektujuan\": \"{{rektujuan}}\",\n  \"jumlah\": \"50000\",\n  \"keterangan\": \"Transfer antar tabungan via Postman\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "401 Invalid Token",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::transfer\nSource model/query: app/Models/Save_model.php::_savesetortabungan + app/Models/Core_model.php::_cek_norektabungan + app/Models/Core_model.php::_get_simpanantrans\nCanonical path: /api/transfer\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, collector_id, norek, rektujuan, jumlah, keterangan\nNote: Returned response is built from _get_simpanantrans(v_trx_code), so it only shows the source-account transaction.",
                "url": "{{base_url}}/api/transfer",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"collector_id\": \"{{collector_id}}\",\n  \"norek\": \"{{simpanan_norek}}\",\n  \"rektujuan\": \"{{rektujuan}}\",\n  \"jumlah\": \"50000\",\n  \"keterangan\": \"Transfer antar tabungan via Postman\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Pembiayaan",
      "item": [
        {
          "name": "Get Pinjaman By Anggota (Legacy getPinjaman)",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::getPinjaman\nSource model/query: app/Models/ApiModel.php::get_product_anggota + app/Models/ApiModel.php::get_tagihan_anggota\nCanonical path: /api/getPinjaman/{agt_num}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: agt_num = nomor anggota\nNote: If no data is found, the controller still returns HTTP 200 with status failed and an empty data array.",
            "url": "{{base_url}}/api/getPinjaman/{{pinjaman_anggota_id}}"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::getPinjaman\nSource model/query: app/Models/ApiModel.php::get_product_anggota + app/Models/ApiModel.php::get_tagihan_anggota\nCanonical path: /api/getPinjaman/{agt_num}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: agt_num = nomor anggota\nNote: If no data is found, the controller still returns HTTP 200 with status failed and an empty data array.",
                "url": "{{base_url}}/api/getPinjaman/{{pinjaman_anggota_id}}"
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"id_produk\": \"K01\",\n      \"nama_produk\": \"Pembiayaan Reguler\",\n      \"norek\": \"111.01.0000005\",\n      \"tgl_jatuh_tempo\": \"2026-12-09\",\n      \"detail_tagihan\": [\n        {\n          \"angsuranke\": 1,\n          \"tgl_tagihan\": \"2026-05-09\",\n          \"nama\": \"Nama Anggota\",\n          \"tagihan\": 150000,\n          \"denda\": 0,\n          \"bunga\": 50000,\n          \"status\": \"BELUM LUNAS\"\n        }\n      ]\n    }\n  ]\n}"
            },
            {
              "name": "200 No Data",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::getPinjaman\nSource model/query: app/Models/ApiModel.php::get_product_anggota + app/Models/ApiModel.php::get_tagihan_anggota\nCanonical path: /api/getPinjaman/{agt_num}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: agt_num = nomor anggota\nNote: If no data is found, the controller still returns HTTP 200 with status failed and an empty data array.",
                "url": "{{base_url}}/api/getPinjaman/{{pinjaman_anggota_id}}"
              },
              "status": "200 No Data",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"failed\",\n  \"data\": [],\n  \"message\": \"No data found\"\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::getPinjaman\nSource model/query: app/Models/ApiModel.php::get_product_anggota + app/Models/ApiModel.php::get_tagihan_anggota\nCanonical path: /api/getPinjaman/{agt_num}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: agt_num = nomor anggota\nNote: If no data is found, the controller still returns HTTP 200 with status failed and an empty data array.",
                "url": "{{base_url}}/api/getPinjaman/{{pinjaman_anggota_id}}"
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            }
          ]
        },
        {
          "name": "List Pinjaman By Anggota",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::pinjaman\nSource model/query: app/Models/Core_model.php::_get_pinjaman + app/Models/Core_model.php::_get_pinjamandtl\nCanonical path: /api/pinjaman/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = nomor anggota\nNote: Success example is inferred_from_code from the SELECT list and nested detail query.",
            "url": "{{base_url}}/api/pinjaman/{{pinjaman_anggota_id}}"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::pinjaman\nSource model/query: app/Models/Core_model.php::_get_pinjaman + app/Models/Core_model.php::_get_pinjamandtl\nCanonical path: /api/pinjaman/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = nomor anggota\nNote: Success example is inferred_from_code from the SELECT list and nested detail query.",
                "url": "{{base_url}}/api/pinjaman/{{pinjaman_anggota_id}}"
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"nama\": \"Nama Anggota\",\n      \"id_produk\": \"K01\",\n      \"nama_produk\": \"Pembiayaan Reguler\",\n      \"norek\": \"111.01.0000005\",\n      \"tgl_jatuh_tempo\": \"2026-12-09\",\n      \"jmlh_pinjaman\": 5000000,\n      \"sisa_pinjaman\": 3500000,\n      \"tgl_realisasi\": \"2026-01-09\",\n      \"jmlh_angsuran\": 450000,\n      \"detail_tagihan\": [\n        {\n          \"angsuranke\": 1,\n          \"jatuhtempo\": \"2026-05-09\",\n          \"pokok\": 400000,\n          \"bunga\": 50000,\n          \"denda\": 0,\n          \"jumlah\": 450000,\n          \"status\": \"Belum Lunas\"\n        }\n      ]\n    }\n  ]\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::pinjaman\nSource model/query: app/Models/Core_model.php::_get_pinjaman + app/Models/Core_model.php::_get_pinjamandtl\nCanonical path: /api/pinjaman/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = nomor anggota\nNote: Success example is inferred_from_code from the SELECT list and nested detail query.",
                "url": "{{base_url}}/api/pinjaman/{{pinjaman_anggota_id}}"
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::pinjaman\nSource model/query: app/Models/Core_model.php::_get_pinjaman + app/Models/Core_model.php::_get_pinjamandtl\nCanonical path: /api/pinjaman/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = nomor anggota\nNote: Success example is inferred_from_code from the SELECT list and nested detail query.",
                "url": "{{base_url}}/api/pinjaman/{{pinjaman_anggota_id}}"
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        },
        {
          "name": "Cek Pinjaman By Rekening",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::cekpinjaman\nSource model/query: app/Models/Core_model.php::_get_pinjamanrek + app/Models/Core_model.php::_get_pinjamandtl\nCanonical path: /api/cekpinjaman/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = knt_code\nNote: The controller concatenates the norek value into the status field when data is found. This unusual status value is original source behavior, not a collection typo.",
            "url": "{{base_url}}/api/cekpinjaman/{{pinjaman_norek}}"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::cekpinjaman\nSource model/query: app/Models/Core_model.php::_get_pinjamanrek + app/Models/Core_model.php::_get_pinjamandtl\nCanonical path: /api/cekpinjaman/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = knt_code\nNote: The controller concatenates the norek value into the status field when data is found. This unusual status value is original source behavior, not a collection typo.",
                "url": "{{base_url}}/api/cekpinjaman/{{pinjaman_norek}}"
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success111.01.0000005\",\n  \"data\": [\n    {\n      \"no_anggota\": \"1304199090900111\",\n      \"nama\": \"Nama Anggota\",\n      \"alamat\": \"Alamat Anggota\",\n      \"id_produk\": \"K01\",\n      \"nama_produk\": \"Pembiayaan Reguler\",\n      \"norek\": \"111.01.0000005\",\n      \"tgl_pencairan\": \"2026-01-09\",\n      \"tgl_jatuh_tempo\": \"2026-12-09\",\n      \"jumlah_pinjaman\": 5000000,\n      \"suku_bunga\": 12,\n      \"sisa_pinjaman\": 3500000,\n      \"denda\": 0,\n      \"jumlah_hari_tunggakan\": 0,\n      \"kolektibilitas\": \"KOL-1\",\n      \"detail_tagihan\": [\n        {\n          \"angsuranke\": 1,\n          \"jatuhtempo\": \"2026-05-09\",\n          \"pokok\": 400000,\n          \"bunga\": 50000,\n          \"denda\": 0,\n          \"jumlah\": 450000,\n          \"status\": \"Belum Lunas\"\n        }\n      ]\n    }\n  ]\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::cekpinjaman\nSource model/query: app/Models/Core_model.php::_get_pinjamanrek + app/Models/Core_model.php::_get_pinjamandtl\nCanonical path: /api/cekpinjaman/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = knt_code\nNote: The controller concatenates the norek value into the status field when data is found. This unusual status value is original source behavior, not a collection typo.",
                "url": "{{base_url}}/api/cekpinjaman/{{pinjaman_norek}}"
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::cekpinjaman\nSource model/query: app/Models/Core_model.php::_get_pinjamanrek + app/Models/Core_model.php::_get_pinjamandtl\nCanonical path: /api/cekpinjaman/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = knt_code\nNote: The controller concatenates the norek value into the status field when data is found. This unusual status value is original source behavior, not a collection typo.",
                "url": "{{base_url}}/api/cekpinjaman/{{pinjaman_norek}}"
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        },
        {
          "name": "Bayar Angsuran Pembiayaan",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::angsuranpembiayaan\nSource model/query: app/Models/Save_model.php::_savepembiayaan + _Updatekartu + _updatekontrak + _savejurnal + _savesetortabungan\nCanonical path: /api/angsuranpembiayaan\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: collector_id, norek, tgl, keterangan, pokok, bunga, total_angsuran, angsuran_ke\nNote: If total_angsuran exceeds the current pokok+bunga tagihan, the difference is posted to the linked savings account.",
            "url": "{{base_url}}/api/angsuranpembiayaan",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"collector_id\": \"{{collector_id}}\",\n  \"norek\": \"{{pinjaman_norek}}\",\n  \"tgl\": \"{{sample_date}}\",\n  \"keterangan\": \"Pembayaran angsuran via Postman\",\n  \"pokok\": \"400000\",\n  \"bunga\": \"50000\",\n  \"total_angsuran\": \"450000\",\n  \"angsuran_ke\": \"{{angsuran_ke}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::angsuranpembiayaan\nSource model/query: app/Models/Save_model.php::_savepembiayaan + _Updatekartu + _updatekontrak + _savejurnal + _savesetortabungan\nCanonical path: /api/angsuranpembiayaan\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: collector_id, norek, tgl, keterangan, pokok, bunga, total_angsuran, angsuran_ke\nNote: If total_angsuran exceeds the current pokok+bunga tagihan, the difference is posted to the linked savings account.",
                "url": "{{base_url}}/api/angsuranpembiayaan",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"collector_id\": \"{{collector_id}}\",\n  \"norek\": \"{{pinjaman_norek}}\",\n  \"tgl\": \"{{sample_date}}\",\n  \"keterangan\": \"Pembayaran angsuran via Postman\",\n  \"pokok\": \"400000\",\n  \"bunga\": \"50000\",\n  \"total_angsuran\": \"450000\",\n  \"angsuran_ke\": \"{{angsuran_ke}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"Berhasil\",\n  \"data\": {\n    \"nobukti\": \"13041.07.20260400001\",\n    \"saldo_awal\": 3500000,\n    \"saldo_akhir\": 3050000\n  }\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::angsuranpembiayaan\nSource model/query: app/Models/Save_model.php::_savepembiayaan + _Updatekartu + _updatekontrak + _savejurnal + _savesetortabungan\nCanonical path: /api/angsuranpembiayaan\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: collector_id, norek, tgl, keterangan, pokok, bunga, total_angsuran, angsuran_ke\nNote: If total_angsuran exceeds the current pokok+bunga tagihan, the difference is posted to the linked savings account.",
                "url": "{{base_url}}/api/angsuranpembiayaan",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"collector_id\": \"{{collector_id}}\",\n  \"norek\": \"{{pinjaman_norek}}\",\n  \"tgl\": \"{{sample_date}}\",\n  \"keterangan\": \"Pembayaran angsuran via Postman\",\n  \"pokok\": \"400000\",\n  \"bunga\": \"50000\",\n  \"total_angsuran\": \"450000\",\n  \"angsuran_ke\": \"{{angsuran_ke}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"Angsuran ke 1 status sudah lunas\"\n}"
            },
            {
              "name": "401 Invalid Token",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::angsuranpembiayaan\nSource model/query: app/Models/Save_model.php::_savepembiayaan + _Updatekartu + _updatekontrak + _savejurnal + _savesetortabungan\nCanonical path: /api/angsuranpembiayaan\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: collector_id, norek, tgl, keterangan, pokok, bunga, total_angsuran, angsuran_ke\nNote: If total_angsuran exceeds the current pokok+bunga tagihan, the difference is posted to the linked savings account.",
                "url": "{{base_url}}/api/angsuranpembiayaan",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"collector_id\": \"{{collector_id}}\",\n  \"norek\": \"{{pinjaman_norek}}\",\n  \"tgl\": \"{{sample_date}}\",\n  \"keterangan\": \"Pembayaran angsuran via Postman\",\n  \"pokok\": \"400000\",\n  \"bunga\": \"50000\",\n  \"total_angsuran\": \"450000\",\n  \"angsuran_ke\": \"{{angsuran_ke}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "401 Invalid Token",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::angsuranpembiayaan\nSource model/query: app/Models/Save_model.php::_savepembiayaan + _Updatekartu + _updatekontrak + _savejurnal + _savesetortabungan\nCanonical path: /api/angsuranpembiayaan\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: collector_id, norek, tgl, keterangan, pokok, bunga, total_angsuran, angsuran_ke\nNote: If total_angsuran exceeds the current pokok+bunga tagihan, the difference is posted to the linked savings account.",
                "url": "{{base_url}}/api/angsuranpembiayaan",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"collector_id\": \"{{collector_id}}\",\n  \"norek\": \"{{pinjaman_norek}}\",\n  \"tgl\": \"{{sample_date}}\",\n  \"keterangan\": \"Pembayaran angsuran via Postman\",\n  \"pokok\": \"400000\",\n  \"bunga\": \"50000\",\n  \"total_angsuran\": \"450000\",\n  \"angsuran_ke\": \"{{angsuran_ke}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        },
        {
          "name": "Tagihan By Rekening",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::gettagihan\nSource model/query: app/Models/Core_model.php::_get_pembiayaan\nCanonical path: /api/gettagihan/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = trx_code\nNote: Success example is inferred_from_code from view v_tagihanjatuhtempo.",
            "url": "{{base_url}}/api/gettagihan/{{pinjaman_norek}}"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::gettagihan\nSource model/query: app/Models/Core_model.php::_get_pembiayaan\nCanonical path: /api/gettagihan/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = trx_code\nNote: Success example is inferred_from_code from view v_tagihanjatuhtempo.",
                "url": "{{base_url}}/api/gettagihan/{{pinjaman_norek}}"
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"Berhasil\",\n  \"data\": [\n    {\n      \"no_anggota\": \"1304199090900111\",\n      \"norek\": \"111.01.0000005\",\n      \"nama\": \"Nama Anggota\",\n      \"tagihan_ke\": 1,\n      \"tanggal_jatuh_tempo\": \"2026-05-09\",\n      \"tagihan_pokok\": 400000,\n      \"tagihan_bunga\": 50000,\n      \"denda\": 0,\n      \"tunggakan_pokok\": 0,\n      \"tunggakan_bunga\": 0,\n      \"tunggakan_denda\": 0,\n      \"total_tagihan\": 450000,\n      \"total_tagihan_pokok\": 400000,\n      \"total_tagihan_bunga\": 50000,\n      \"total_tagihan_denda\": 0,\n      \"status\": \"KOL-1\"\n    }\n  ]\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::gettagihan\nSource model/query: app/Models/Core_model.php::_get_pembiayaan\nCanonical path: /api/gettagihan/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = trx_code\nNote: Success example is inferred_from_code from view v_tagihanjatuhtempo.",
                "url": "{{base_url}}/api/gettagihan/{{pinjaman_norek}}"
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::gettagihan\nSource model/query: app/Models/Core_model.php::_get_pembiayaan\nCanonical path: /api/gettagihan/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = trx_code\nNote: Success example is inferred_from_code from view v_tagihanjatuhtempo.",
                "url": "{{base_url}}/api/gettagihan/{{pinjaman_norek}}"
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        },
        {
          "name": "Tagihan By Rekening dan Angsuran",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::gettagihanangsuran\nSource model/query: app/Models/Core_model.php::_get_pembiayaan_angsuran\nCanonical path: /api/gettagihanangsuran/{norekening}/{angsranke}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: norekening = nomor rekening pembiayaan, angsranke = nomor angsuran. The second segment is optional in source code; if omitted, the model returns all angsuran for the contract.\nNote: Success example is inferred_from_code from the SELECT list.",
            "url": "{{base_url}}/api/gettagihanangsuran/{{pinjaman_norek}}/{{angsuran_ke}}"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::gettagihanangsuran\nSource model/query: app/Models/Core_model.php::_get_pembiayaan_angsuran\nCanonical path: /api/gettagihanangsuran/{norekening}/{angsranke}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: norekening = nomor rekening pembiayaan, angsranke = nomor angsuran. The second segment is optional in source code; if omitted, the model returns all angsuran for the contract.\nNote: Success example is inferred_from_code from the SELECT list.",
                "url": "{{base_url}}/api/gettagihanangsuran/{{pinjaman_norek}}/{{angsuran_ke}}"
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"Berhasil\",\n  \"data\": [\n    {\n      \"no_anggota\": \"1304199090900111\",\n      \"norek\": \"111.01.0000005\",\n      \"nama\": \"Nama Anggota\",\n      \"tagihan_ke\": 1,\n      \"tanggal_jatuh_tempo\": \"2026-05-09\",\n      \"tagihan_pokok\": 400000,\n      \"tagihan_bunga\": 50000,\n      \"denda\": 0,\n      \"tunggakan_pokok\": 0,\n      \"tunggakan_bunga\": 0,\n      \"tunggakan_denda\": 0,\n      \"total_tagihan\": 450000,\n      \"total_tagihan_pokok\": 400000,\n      \"total_tagihan_bunga\": 50000,\n      \"total_tagihan_denda\": 0,\n      \"status\": \"KOL-1\"\n    }\n  ]\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::gettagihanangsuran\nSource model/query: app/Models/Core_model.php::_get_pembiayaan_angsuran\nCanonical path: /api/gettagihanangsuran/{norekening}/{angsranke}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: norekening = nomor rekening pembiayaan, angsranke = nomor angsuran. The second segment is optional in source code; if omitted, the model returns all angsuran for the contract.\nNote: Success example is inferred_from_code from the SELECT list.",
                "url": "{{base_url}}/api/gettagihanangsuran/{{pinjaman_norek}}/{{angsuran_ke}}"
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::gettagihanangsuran\nSource model/query: app/Models/Core_model.php::_get_pembiayaan_angsuran\nCanonical path: /api/gettagihanangsuran/{norekening}/{angsranke}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: norekening = nomor rekening pembiayaan, angsranke = nomor angsuran. The second segment is optional in source code; if omitted, the model returns all angsuran for the contract.\nNote: Success example is inferred_from_code from the SELECT list.",
                "url": "{{base_url}}/api/gettagihanangsuran/{{pinjaman_norek}}/{{angsuran_ke}}"
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        },
        {
          "name": "Tagihan Single",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::gettagihansingle\nSource model/query: app/Models/Core_model.php::_get_pembiayaan_single\nCanonical path: /api/gettagihansingle/{norekening}/{angsranke}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: norekening = nomor rekening pembiayaan, angsranke = nomor angsuran\nNote: perlu verifikasi manual: controller calls Core_model::_get_pembiayaan_single(), but that method is not present in app/Models/Core_model.php in the audited source.\nNote: This request is still included so the implementation gap stays visible in the collection.",
            "url": "{{base_url}}/api/gettagihansingle/{{pinjaman_norek}}/{{angsuran_ke}}"
          },
          "response": [
            {
              "name": "401 Invalid Token",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::gettagihansingle\nSource model/query: app/Models/Core_model.php::_get_pembiayaan_single\nCanonical path: /api/gettagihansingle/{norekening}/{angsranke}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: norekening = nomor rekening pembiayaan, angsranke = nomor angsuran\nNote: perlu verifikasi manual: controller calls Core_model::_get_pembiayaan_single(), but that method is not present in app/Models/Core_model.php in the audited source.\nNote: This request is still included so the implementation gap stays visible in the collection.",
                "url": "{{base_url}}/api/gettagihansingle/{{pinjaman_norek}}/{{angsuran_ke}}"
              },
              "status": "401 Invalid Token",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            }
          ]
        },
        {
          "name": "Buka Rekening Pinjaman",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::rekeningpinjaman\nSource model/query: app/Models/Save_model.php::_savekontrak + _savedebitur + _savekartupiutang + _saveagunan + app/Models/Auto_model.php::get_nokontrak + app/Models/Core_model.php::_get_cabang\nCanonical path: /api/rekeningpinjaman\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tanggal_trans, nomoranggota, namaanggota, kantor_id, product_id, grace_periode, tanggal_awalangsuran, nopengajuan, jangka_waktu, bunga, jenis_angsuran, Jumlah_pinjaman, potongan_adminstrasi, Matrerai, Potongan_lain, Jumlah_angsuran, angsuran_pokok, angsuran_bunga, nilai_agunan, rektabungan, nama_keluarga1, alamat_keluarga1, nokontak1, hubungan_keluarga1, nama_keluarga2, alamat_keluarga2, nokontak2, hubungan_keluarga2, jenis_bunga, jenisagunan, nodokumenaguanan, atas_nama_agunan, beralaku_sdtanggal, alamat_agunan, lokasi_agunan, Jenis_agunan\nNote: The controller uses mixed-case field names exactly as written in source code; the collection preserves that original naming.",
            "url": "{{base_url}}/api/rekeningpinjaman",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"tanggal_trans\": \"{{sample_date}}\",\n  \"nomoranggota\": \"{{anggota_id}}\",\n  \"namaanggota\": \"Nama Anggota\",\n  \"kantor_id\": \"{{kantor_id}}\",\n  \"product_id\": \"{{product_id}}\",\n  \"grace_periode\": \"0\",\n  \"tanggal_awalangsuran\": \"{{sample_date}}\",\n  \"nopengajuan\": \"{{nopengajuan}}\",\n  \"jangka_waktu\": \"12\",\n  \"bunga\": \"12\",\n  \"jenis_angsuran\": \"1\",\n  \"Jumlah_pinjaman\": \"5000000\",\n  \"potongan_adminstrasi\": \"50000\",\n  \"Matrerai\": \"10000\",\n  \"Potongan_lain\": \"0\",\n  \"Jumlah_angsuran\": \"450000\",\n  \"angsuran_pokok\": \"400000\",\n  \"angsuran_bunga\": \"50000\",\n  \"nilai_agunan\": \"7000000\",\n  \"rektabungan\": \"{{reksimpanan}}\",\n  \"nama_keluarga1\": \"Kontak Keluarga 1\",\n  \"alamat_keluarga1\": \"Alamat Keluarga 1\",\n  \"nokontak1\": \"081200000001\",\n  \"hubungan_keluarga1\": \"Istri\",\n  \"nama_keluarga2\": \"Kontak Keluarga 2\",\n  \"alamat_keluarga2\": \"Alamat Keluarga 2\",\n  \"nokontak2\": \"081200000002\",\n  \"hubungan_keluarga2\": \"Saudara\",\n  \"jenis_bunga\": \"1\",\n  \"jenisagunan\": \"1\",\n  \"nodokumenaguanan\": \"BPKB-12345\",\n  \"atas_nama_agunan\": \"Nama Pemilik Agunan\",\n  \"beralaku_sdtanggal\": \"2030-12-31\",\n  \"alamat_agunan\": \"Alamat Agunan\",\n  \"lokasi_agunan\": \"LOK-01\",\n  \"Jenis_agunan\": \"BPKB\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::rekeningpinjaman\nSource model/query: app/Models/Save_model.php::_savekontrak + _savedebitur + _savekartupiutang + _saveagunan + app/Models/Auto_model.php::get_nokontrak + app/Models/Core_model.php::_get_cabang\nCanonical path: /api/rekeningpinjaman\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tanggal_trans, nomoranggota, namaanggota, kantor_id, product_id, grace_periode, tanggal_awalangsuran, nopengajuan, jangka_waktu, bunga, jenis_angsuran, Jumlah_pinjaman, potongan_adminstrasi, Matrerai, Potongan_lain, Jumlah_angsuran, angsuran_pokok, angsuran_bunga, nilai_agunan, rektabungan, nama_keluarga1, alamat_keluarga1, nokontak1, hubungan_keluarga1, nama_keluarga2, alamat_keluarga2, nokontak2, hubungan_keluarga2, jenis_bunga, jenisagunan, nodokumenaguanan, atas_nama_agunan, beralaku_sdtanggal, alamat_agunan, lokasi_agunan, Jenis_agunan\nNote: The controller uses mixed-case field names exactly as written in source code; the collection preserves that original naming.",
                "url": "{{base_url}}/api/rekeningpinjaman",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tanggal_trans\": \"{{sample_date}}\",\n  \"nomoranggota\": \"{{anggota_id}}\",\n  \"namaanggota\": \"Nama Anggota\",\n  \"kantor_id\": \"{{kantor_id}}\",\n  \"product_id\": \"{{product_id}}\",\n  \"grace_periode\": \"0\",\n  \"tanggal_awalangsuran\": \"{{sample_date}}\",\n  \"nopengajuan\": \"{{nopengajuan}}\",\n  \"jangka_waktu\": \"12\",\n  \"bunga\": \"12\",\n  \"jenis_angsuran\": \"1\",\n  \"Jumlah_pinjaman\": \"5000000\",\n  \"potongan_adminstrasi\": \"50000\",\n  \"Matrerai\": \"10000\",\n  \"Potongan_lain\": \"0\",\n  \"Jumlah_angsuran\": \"450000\",\n  \"angsuran_pokok\": \"400000\",\n  \"angsuran_bunga\": \"50000\",\n  \"nilai_agunan\": \"7000000\",\n  \"rektabungan\": \"{{reksimpanan}}\",\n  \"nama_keluarga1\": \"Kontak Keluarga 1\",\n  \"alamat_keluarga1\": \"Alamat Keluarga 1\",\n  \"nokontak1\": \"081200000001\",\n  \"hubungan_keluarga1\": \"Istri\",\n  \"nama_keluarga2\": \"Kontak Keluarga 2\",\n  \"alamat_keluarga2\": \"Alamat Keluarga 2\",\n  \"nokontak2\": \"081200000002\",\n  \"hubungan_keluarga2\": \"Saudara\",\n  \"jenis_bunga\": \"1\",\n  \"jenisagunan\": \"1\",\n  \"nodokumenaguanan\": \"BPKB-12345\",\n  \"atas_nama_agunan\": \"Nama Pemilik Agunan\",\n  \"beralaku_sdtanggal\": \"2030-12-31\",\n  \"alamat_agunan\": \"Alamat Agunan\",\n  \"lokasi_agunan\": \"LOK-01\",\n  \"Jenis_agunan\": \"BPKB\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"Berhasil\",\n  \"No. Rekening\": \"K01.13.0000001\"\n}"
            },
            {
              "name": "401 Invalid Token",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::rekeningpinjaman\nSource model/query: app/Models/Save_model.php::_savekontrak + _savedebitur + _savekartupiutang + _saveagunan + app/Models/Auto_model.php::get_nokontrak + app/Models/Core_model.php::_get_cabang\nCanonical path: /api/rekeningpinjaman\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tanggal_trans, nomoranggota, namaanggota, kantor_id, product_id, grace_periode, tanggal_awalangsuran, nopengajuan, jangka_waktu, bunga, jenis_angsuran, Jumlah_pinjaman, potongan_adminstrasi, Matrerai, Potongan_lain, Jumlah_angsuran, angsuran_pokok, angsuran_bunga, nilai_agunan, rektabungan, nama_keluarga1, alamat_keluarga1, nokontak1, hubungan_keluarga1, nama_keluarga2, alamat_keluarga2, nokontak2, hubungan_keluarga2, jenis_bunga, jenisagunan, nodokumenaguanan, atas_nama_agunan, beralaku_sdtanggal, alamat_agunan, lokasi_agunan, Jenis_agunan\nNote: The controller uses mixed-case field names exactly as written in source code; the collection preserves that original naming.",
                "url": "{{base_url}}/api/rekeningpinjaman",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tanggal_trans\": \"{{sample_date}}\",\n  \"nomoranggota\": \"{{anggota_id}}\",\n  \"namaanggota\": \"Nama Anggota\",\n  \"kantor_id\": \"{{kantor_id}}\",\n  \"product_id\": \"{{product_id}}\",\n  \"grace_periode\": \"0\",\n  \"tanggal_awalangsuran\": \"{{sample_date}}\",\n  \"nopengajuan\": \"{{nopengajuan}}\",\n  \"jangka_waktu\": \"12\",\n  \"bunga\": \"12\",\n  \"jenis_angsuran\": \"1\",\n  \"Jumlah_pinjaman\": \"5000000\",\n  \"potongan_adminstrasi\": \"50000\",\n  \"Matrerai\": \"10000\",\n  \"Potongan_lain\": \"0\",\n  \"Jumlah_angsuran\": \"450000\",\n  \"angsuran_pokok\": \"400000\",\n  \"angsuran_bunga\": \"50000\",\n  \"nilai_agunan\": \"7000000\",\n  \"rektabungan\": \"{{reksimpanan}}\",\n  \"nama_keluarga1\": \"Kontak Keluarga 1\",\n  \"alamat_keluarga1\": \"Alamat Keluarga 1\",\n  \"nokontak1\": \"081200000001\",\n  \"hubungan_keluarga1\": \"Istri\",\n  \"nama_keluarga2\": \"Kontak Keluarga 2\",\n  \"alamat_keluarga2\": \"Alamat Keluarga 2\",\n  \"nokontak2\": \"081200000002\",\n  \"hubungan_keluarga2\": \"Saudara\",\n  \"jenis_bunga\": \"1\",\n  \"jenisagunan\": \"1\",\n  \"nodokumenaguanan\": \"BPKB-12345\",\n  \"atas_nama_agunan\": \"Nama Pemilik Agunan\",\n  \"beralaku_sdtanggal\": \"2030-12-31\",\n  \"alamat_agunan\": \"Alamat Agunan\",\n  \"lokasi_agunan\": \"LOK-01\",\n  \"Jenis_agunan\": \"BPKB\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "401 Invalid Token",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::rekeningpinjaman\nSource model/query: app/Models/Save_model.php::_savekontrak + _savedebitur + _savekartupiutang + _saveagunan + app/Models/Auto_model.php::get_nokontrak + app/Models/Core_model.php::_get_cabang\nCanonical path: /api/rekeningpinjaman\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tanggal_trans, nomoranggota, namaanggota, kantor_id, product_id, grace_periode, tanggal_awalangsuran, nopengajuan, jangka_waktu, bunga, jenis_angsuran, Jumlah_pinjaman, potongan_adminstrasi, Matrerai, Potongan_lain, Jumlah_angsuran, angsuran_pokok, angsuran_bunga, nilai_agunan, rektabungan, nama_keluarga1, alamat_keluarga1, nokontak1, hubungan_keluarga1, nama_keluarga2, alamat_keluarga2, nokontak2, hubungan_keluarga2, jenis_bunga, jenisagunan, nodokumenaguanan, atas_nama_agunan, beralaku_sdtanggal, alamat_agunan, lokasi_agunan, Jenis_agunan\nNote: The controller uses mixed-case field names exactly as written in source code; the collection preserves that original naming.",
                "url": "{{base_url}}/api/rekeningpinjaman",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tanggal_trans\": \"{{sample_date}}\",\n  \"nomoranggota\": \"{{anggota_id}}\",\n  \"namaanggota\": \"Nama Anggota\",\n  \"kantor_id\": \"{{kantor_id}}\",\n  \"product_id\": \"{{product_id}}\",\n  \"grace_periode\": \"0\",\n  \"tanggal_awalangsuran\": \"{{sample_date}}\",\n  \"nopengajuan\": \"{{nopengajuan}}\",\n  \"jangka_waktu\": \"12\",\n  \"bunga\": \"12\",\n  \"jenis_angsuran\": \"1\",\n  \"Jumlah_pinjaman\": \"5000000\",\n  \"potongan_adminstrasi\": \"50000\",\n  \"Matrerai\": \"10000\",\n  \"Potongan_lain\": \"0\",\n  \"Jumlah_angsuran\": \"450000\",\n  \"angsuran_pokok\": \"400000\",\n  \"angsuran_bunga\": \"50000\",\n  \"nilai_agunan\": \"7000000\",\n  \"rektabungan\": \"{{reksimpanan}}\",\n  \"nama_keluarga1\": \"Kontak Keluarga 1\",\n  \"alamat_keluarga1\": \"Alamat Keluarga 1\",\n  \"nokontak1\": \"081200000001\",\n  \"hubungan_keluarga1\": \"Istri\",\n  \"nama_keluarga2\": \"Kontak Keluarga 2\",\n  \"alamat_keluarga2\": \"Alamat Keluarga 2\",\n  \"nokontak2\": \"081200000002\",\n  \"hubungan_keluarga2\": \"Saudara\",\n  \"jenis_bunga\": \"1\",\n  \"jenisagunan\": \"1\",\n  \"nodokumenaguanan\": \"BPKB-12345\",\n  \"atas_nama_agunan\": \"Nama Pemilik Agunan\",\n  \"beralaku_sdtanggal\": \"2030-12-31\",\n  \"alamat_agunan\": \"Alamat Agunan\",\n  \"lokasi_agunan\": \"LOK-01\",\n  \"Jenis_agunan\": \"BPKB\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"Kantor id tidak ada\"\n}"
            }
          ]
        },
        {
          "name": "Bayar Angsuran Multi",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::angsuranmulti\nSource model/query: app/Models/Save_model.php::_savepembiayaan + _Updatekartu + _updatekontrak + _savejurnal + _savesetortabungan + app/Models/Core_model.php::_get_saldopinjaman + _get_datatabunganab\nCanonical path: /api/angsuranmulti\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: collector_mobile_id, norek_pinjaman, tgl_trans, jam_trans, norek_tabungan, transaksi[] { angsuran_ke, pokok, bunga, total, keterangan }\nNote: Controller reads the detail list from JSON property transaksi.",
            "url": "{{base_url}}/api/angsuranmulti",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"collector_mobile_id\": \"{{collector_mobile_id}}\",\n  \"norek_pinjaman\": \"{{pinjaman_norek}}\",\n  \"tgl_trans\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"norek_tabungan\": \"{{reksimpanan}}\",\n  \"transaksi\": [\n    {\n      \"angsuran_ke\": \"1\",\n      \"pokok\": \"400000\",\n      \"bunga\": \"50000\",\n      \"total\": \"450000\",\n      \"keterangan\": \"Angsuran ke-1\"\n    },\n    {\n      \"angsuran_ke\": \"2\",\n      \"pokok\": \"400000\",\n      \"bunga\": \"45000\",\n      \"total\": \"445000\",\n      \"keterangan\": \"Angsuran ke-2\"\n    }\n  ]\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::angsuranmulti\nSource model/query: app/Models/Save_model.php::_savepembiayaan + _Updatekartu + _updatekontrak + _savejurnal + _savesetortabungan + app/Models/Core_model.php::_get_saldopinjaman + _get_datatabunganab\nCanonical path: /api/angsuranmulti\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: collector_mobile_id, norek_pinjaman, tgl_trans, jam_trans, norek_tabungan, transaksi[] { angsuran_ke, pokok, bunga, total, keterangan }\nNote: Controller reads the detail list from JSON property transaksi.",
                "url": "{{base_url}}/api/angsuranmulti",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"collector_mobile_id\": \"{{collector_mobile_id}}\",\n  \"norek_pinjaman\": \"{{pinjaman_norek}}\",\n  \"tgl_trans\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"norek_tabungan\": \"{{reksimpanan}}\",\n  \"transaksi\": [\n    {\n      \"angsuran_ke\": \"1\",\n      \"pokok\": \"400000\",\n      \"bunga\": \"50000\",\n      \"total\": \"450000\",\n      \"keterangan\": \"Angsuran ke-1\"\n    },\n    {\n      \"angsuran_ke\": \"2\",\n      \"pokok\": \"400000\",\n      \"bunga\": \"45000\",\n      \"total\": \"445000\",\n      \"keterangan\": \"Angsuran ke-2\"\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"Status\": \"success\",\n  \"message\": \"Transaksi Berhasil\",\n  \"data\": {\n    \"nobukti\": \"13041.11.20260400004\"\n  }\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::angsuranmulti\nSource model/query: app/Models/Save_model.php::_savepembiayaan + _Updatekartu + _updatekontrak + _savejurnal + _savesetortabungan + app/Models/Core_model.php::_get_saldopinjaman + _get_datatabunganab\nCanonical path: /api/angsuranmulti\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: collector_mobile_id, norek_pinjaman, tgl_trans, jam_trans, norek_tabungan, transaksi[] { angsuran_ke, pokok, bunga, total, keterangan }\nNote: Controller reads the detail list from JSON property transaksi.",
                "url": "{{base_url}}/api/angsuranmulti",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"collector_mobile_id\": \"{{collector_mobile_id}}\",\n  \"norek_pinjaman\": \"{{pinjaman_norek}}\",\n  \"tgl_trans\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"norek_tabungan\": \"{{reksimpanan}}\",\n  \"transaksi\": [\n    {\n      \"angsuran_ke\": \"1\",\n      \"pokok\": \"400000\",\n      \"bunga\": \"50000\",\n      \"total\": \"450000\",\n      \"keterangan\": \"Angsuran ke-1\"\n    },\n    {\n      \"angsuran_ke\": \"2\",\n      \"pokok\": \"400000\",\n      \"bunga\": \"45000\",\n      \"total\": \"445000\",\n      \"keterangan\": \"Angsuran ke-2\"\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"Angsuran ke 1 status sudah lunas\"\n}"
            },
            {
              "name": "401 Invalid Token",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::angsuranmulti\nSource model/query: app/Models/Save_model.php::_savepembiayaan + _Updatekartu + _updatekontrak + _savejurnal + _savesetortabungan + app/Models/Core_model.php::_get_saldopinjaman + _get_datatabunganab\nCanonical path: /api/angsuranmulti\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: collector_mobile_id, norek_pinjaman, tgl_trans, jam_trans, norek_tabungan, transaksi[] { angsuran_ke, pokok, bunga, total, keterangan }\nNote: Controller reads the detail list from JSON property transaksi.",
                "url": "{{base_url}}/api/angsuranmulti",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"collector_mobile_id\": \"{{collector_mobile_id}}\",\n  \"norek_pinjaman\": \"{{pinjaman_norek}}\",\n  \"tgl_trans\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"norek_tabungan\": \"{{reksimpanan}}\",\n  \"transaksi\": [\n    {\n      \"angsuran_ke\": \"1\",\n      \"pokok\": \"400000\",\n      \"bunga\": \"50000\",\n      \"total\": \"450000\",\n      \"keterangan\": \"Angsuran ke-1\"\n    },\n    {\n      \"angsuran_ke\": \"2\",\n      \"pokok\": \"400000\",\n      \"bunga\": \"45000\",\n      \"total\": \"445000\",\n      \"keterangan\": \"Angsuran ke-2\"\n    }\n  ]\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "401 Invalid Token",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            }
          ]
        },
        {
          "name": "Bayar Angsuran Pembiayaan Mobile",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::angsuranpembiayaan_mobile\nSource model/query: app/Models/Save_model.php::_savepembiayaan + _Updatekartu + _updatekontrak + _savejurnal + _savesetortabungan + app/Models/Core_model.php::_get_dtkartuhutang + _get_datatabunganab\nCanonical path: /api/angsuranpembiayaan_mobile\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: norek, tgl, keterangan, pokok, bunga, total_angsuran, angsuran_ke, reksimpanan\nNote: Controller hardcodes petugas = 1031, so the request body does not need collector_id.",
            "url": "{{base_url}}/api/angsuranpembiayaan_mobile",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"norek\": \"{{pinjaman_norek}}\",\n  \"tgl\": \"{{sample_date}}\",\n  \"keterangan\": \"Pembayaran angsuran mobile\",\n  \"pokok\": \"400000\",\n  \"bunga\": \"50000\",\n  \"total_angsuran\": \"450000\",\n  \"angsuran_ke\": \"{{angsuran_ke}}\",\n  \"reksimpanan\": \"{{reksimpanan}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::angsuranpembiayaan_mobile\nSource model/query: app/Models/Save_model.php::_savepembiayaan + _Updatekartu + _updatekontrak + _savejurnal + _savesetortabungan + app/Models/Core_model.php::_get_dtkartuhutang + _get_datatabunganab\nCanonical path: /api/angsuranpembiayaan_mobile\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: norek, tgl, keterangan, pokok, bunga, total_angsuran, angsuran_ke, reksimpanan\nNote: Controller hardcodes petugas = 1031, so the request body does not need collector_id.",
                "url": "{{base_url}}/api/angsuranpembiayaan_mobile",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"norek\": \"{{pinjaman_norek}}\",\n  \"tgl\": \"{{sample_date}}\",\n  \"keterangan\": \"Pembayaran angsuran mobile\",\n  \"pokok\": \"400000\",\n  \"bunga\": \"50000\",\n  \"total_angsuran\": \"450000\",\n  \"angsuran_ke\": \"{{angsuran_ke}}\",\n  \"reksimpanan\": \"{{reksimpanan}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"Berhasil\",\n  \"data\": {\n    \"nobukti\": \"13041.11.20260400005\",\n    \"saldo_awal\": 3500000,\n    \"saldo_akhir\": 3050000\n  }\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::angsuranpembiayaan_mobile\nSource model/query: app/Models/Save_model.php::_savepembiayaan + _Updatekartu + _updatekontrak + _savejurnal + _savesetortabungan + app/Models/Core_model.php::_get_dtkartuhutang + _get_datatabunganab\nCanonical path: /api/angsuranpembiayaan_mobile\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: norek, tgl, keterangan, pokok, bunga, total_angsuran, angsuran_ke, reksimpanan\nNote: Controller hardcodes petugas = 1031, so the request body does not need collector_id.",
                "url": "{{base_url}}/api/angsuranpembiayaan_mobile",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"norek\": \"{{pinjaman_norek}}\",\n  \"tgl\": \"{{sample_date}}\",\n  \"keterangan\": \"Pembayaran angsuran mobile\",\n  \"pokok\": \"400000\",\n  \"bunga\": \"50000\",\n  \"total_angsuran\": \"450000\",\n  \"angsuran_ke\": \"{{angsuran_ke}}\",\n  \"reksimpanan\": \"{{reksimpanan}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"Angsuran ke 1 status sudah lunas\"\n}"
            },
            {
              "name": "401 Invalid Token",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::angsuranpembiayaan_mobile\nSource model/query: app/Models/Save_model.php::_savepembiayaan + _Updatekartu + _updatekontrak + _savejurnal + _savesetortabungan + app/Models/Core_model.php::_get_dtkartuhutang + _get_datatabunganab\nCanonical path: /api/angsuranpembiayaan_mobile\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: norek, tgl, keterangan, pokok, bunga, total_angsuran, angsuran_ke, reksimpanan\nNote: Controller hardcodes petugas = 1031, so the request body does not need collector_id.",
                "url": "{{base_url}}/api/angsuranpembiayaan_mobile",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"norek\": \"{{pinjaman_norek}}\",\n  \"tgl\": \"{{sample_date}}\",\n  \"keterangan\": \"Pembayaran angsuran mobile\",\n  \"pokok\": \"400000\",\n  \"bunga\": \"50000\",\n  \"total_angsuran\": \"450000\",\n  \"angsuran_ke\": \"{{angsuran_ke}}\",\n  \"reksimpanan\": \"{{reksimpanan}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "401 Invalid Token",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::angsuranpembiayaan_mobile\nSource model/query: app/Models/Save_model.php::_savepembiayaan + _Updatekartu + _updatekontrak + _savejurnal + _savesetortabungan + app/Models/Core_model.php::_get_dtkartuhutang + _get_datatabunganab\nCanonical path: /api/angsuranpembiayaan_mobile\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: norek, tgl, keterangan, pokok, bunga, total_angsuran, angsuran_ke, reksimpanan\nNote: Controller hardcodes petugas = 1031, so the request body does not need collector_id.",
                "url": "{{base_url}}/api/angsuranpembiayaan_mobile",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"norek\": \"{{pinjaman_norek}}\",\n  \"tgl\": \"{{sample_date}}\",\n  \"keterangan\": \"Pembayaran angsuran mobile\",\n  \"pokok\": \"400000\",\n  \"bunga\": \"50000\",\n  \"total_angsuran\": \"450000\",\n  \"angsuran_ke\": \"{{angsuran_ke}}\",\n  \"reksimpanan\": \"{{reksimpanan}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        },
        {
          "name": "Mutasi Angsuran",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::mutasiangsuran\nSource model/query: app/Models/Core_model.php::_get_mutasipembayaran\nCanonical path: /api/mutasiangsuran/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = knt_code\nNote: Success example is inferred_from_code from the SELECT list.",
            "url": "{{base_url}}/api/mutasiangsuran/{{pinjaman_norek}}"
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::mutasiangsuran\nSource model/query: app/Models/Core_model.php::_get_mutasipembayaran\nCanonical path: /api/mutasiangsuran/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = knt_code\nNote: Success example is inferred_from_code from the SELECT list.",
                "url": "{{base_url}}/api/mutasiangsuran/{{pinjaman_norek}}"
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"id_trans\": \"13041.07.20260400001\",\n      \"tgl_trans\": \"2026-04-09\",\n      \"angsuran_ke\": \"Pembayaran angsuran ke-1\",\n      \"pokok\": 400000,\n      \"bunga\": 50000,\n      \"denda\": 0,\n      \"total\": 450000\n    }\n  ]\n}"
            },
            {
              "name": "401 Unauthorized",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::mutasiangsuran\nSource model/query: app/Models/Core_model.php::_get_mutasipembayaran\nCanonical path: /api/mutasiangsuran/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = knt_code\nNote: Success example is inferred_from_code from the SELECT list.",
                "url": "{{base_url}}/api/mutasiangsuran/{{pinjaman_norek}}"
              },
              "status": "401 Unauthorized",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "GET",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::mutasiangsuran\nSource model/query: app/Models/Core_model.php::_get_mutasipembayaran\nCanonical path: /api/mutasiangsuran/{id}\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nPath params: id = knt_code\nNote: Success example is inferred_from_code from the SELECT list.",
                "url": "{{base_url}}/api/mutasiangsuran/{{pinjaman_norek}}"
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "PPOB",
      "item": [
        {
          "name": "Transaksi PPOB",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::transaksippob\nSource model/query: app/Models/Save_model.php::_savesetortabungan + _savejurnal + _saveppob + app/Models/Core_model.php::_get_simpanantransppob + app/Models/Auto_model.php::get_acckhusus\nCanonical path: /api/transaksippob\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, jam_trans, keterangan, norek, nominal, admin, collector_id\nNote: Compared to the other transaction endpoints, this controller explicitly validates the JSON body and returns HTTP 400 when the body is invalid or tgl is missing.\nNote: The controller hardcodes empcode = 1031 for journal lookup, while collector_id from the body is still used for PPOB log storage.",
            "url": "{{base_url}}/api/transaksippob",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"keterangan\": \"Topup saldo PPOB\",\n  \"norek\": \"{{reksimpanan}}\",\n  \"nominal\": \"100000\",\n  \"admin\": \"2500\",\n  \"collector_id\": \"{{collector_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::transaksippob\nSource model/query: app/Models/Save_model.php::_savesetortabungan + _savejurnal + _saveppob + app/Models/Core_model.php::_get_simpanantransppob + app/Models/Auto_model.php::get_acckhusus\nCanonical path: /api/transaksippob\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, jam_trans, keterangan, norek, nominal, admin, collector_id\nNote: Compared to the other transaction endpoints, this controller explicitly validates the JSON body and returns HTTP 400 when the body is invalid or tgl is missing.\nNote: The controller hardcodes empcode = 1031 for journal lookup, while collector_id from the body is still used for PPOB log storage.",
                "url": "{{base_url}}/api/transaksippob",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"keterangan\": \"Topup saldo PPOB\",\n  \"norek\": \"{{reksimpanan}}\",\n  \"nominal\": \"100000\",\n  \"admin\": \"2500\",\n  \"collector_id\": \"{{collector_id}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"Berhasil\",\n  \"message\": \"Transaksi PPOB Berhasil\",\n  \"data\": {\n    \"nobukti\": \"13041.11.20260400006\",\n    \"saldo_awal\": 300000,\n    \"saldo_akhir\": 197500\n  }\n}"
            },
            {
              "name": "400 Bad Request",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::transaksippob\nSource model/query: app/Models/Save_model.php::_savesetortabungan + _savejurnal + _saveppob + app/Models/Core_model.php::_get_simpanantransppob + app/Models/Auto_model.php::get_acckhusus\nCanonical path: /api/transaksippob\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, jam_trans, keterangan, norek, nominal, admin, collector_id\nNote: Compared to the other transaction endpoints, this controller explicitly validates the JSON body and returns HTTP 400 when the body is invalid or tgl is missing.\nNote: The controller hardcodes empcode = 1031 for journal lookup, while collector_id from the body is still used for PPOB log storage.",
                "url": "{{base_url}}/api/transaksippob",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"keterangan\": \"Topup saldo PPOB\",\n  \"norek\": \"{{reksimpanan}}\",\n  \"nominal\": \"100000\",\n  \"admin\": \"2500\",\n  \"collector_id\": \"{{collector_id}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "400 Bad Request",
              "code": 400,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"Missing or empty tgl field.\"\n}"
            },
            {
              "name": "401 Invalid Token",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::transaksippob\nSource model/query: app/Models/Save_model.php::_savesetortabungan + _savejurnal + _saveppob + app/Models/Core_model.php::_get_simpanantransppob + app/Models/Auto_model.php::get_acckhusus\nCanonical path: /api/transaksippob\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, jam_trans, keterangan, norek, nominal, admin, collector_id\nNote: Compared to the other transaction endpoints, this controller explicitly validates the JSON body and returns HTTP 400 when the body is invalid or tgl is missing.\nNote: The controller hardcodes empcode = 1031 for journal lookup, while collector_id from the body is still used for PPOB log storage.",
                "url": "{{base_url}}/api/transaksippob",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"keterangan\": \"Topup saldo PPOB\",\n  \"norek\": \"{{reksimpanan}}\",\n  \"nominal\": \"100000\",\n  \"admin\": \"2500\",\n  \"collector_id\": \"{{collector_id}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "401 Invalid Token",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::transaksippob\nSource model/query: app/Models/Save_model.php::_savesetortabungan + _savejurnal + _saveppob + app/Models/Core_model.php::_get_simpanantransppob + app/Models/Auto_model.php::get_acckhusus\nCanonical path: /api/transaksippob\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, jam_trans, keterangan, norek, nominal, admin, collector_id\nNote: Compared to the other transaction endpoints, this controller explicitly validates the JSON body and returns HTTP 400 when the body is invalid or tgl is missing.\nNote: The controller hardcodes empcode = 1031 for journal lookup, while collector_id from the body is still used for PPOB log storage.",
                "url": "{{base_url}}/api/transaksippob",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"keterangan\": \"Topup saldo PPOB\",\n  \"norek\": \"{{reksimpanan}}\",\n  \"nominal\": \"100000\",\n  \"admin\": \"2500\",\n  \"collector_id\": \"{{collector_id}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        },
        {
          "name": "Topup Virtual Account",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::topupvirtualaccount\nSource model/query: app/Models/Save_model.php::_savesetortabungan + _savejurnal + app/Models/Core_model.php::_get_simpanantransppob + app/Models/Auto_model.php::get_acckhusus\nCanonical path: /api/topupvirtualaccount\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, jam_trans, keterangan, norek, nominal, admin, collector_id\nNote: Successful response is built from _get_simpanantransppob(v_trx_code), so it only contains the proof number and saldo ringkas.",
            "url": "{{base_url}}/api/topupvirtualaccount",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"keterangan\": \"Topup virtual account\",\n  \"norek\": \"{{reksimpanan}}\",\n  \"nominal\": \"100000\",\n  \"admin\": \"2500\",\n  \"collector_id\": \"{{collector_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::topupvirtualaccount\nSource model/query: app/Models/Save_model.php::_savesetortabungan + _savejurnal + app/Models/Core_model.php::_get_simpanantransppob + app/Models/Auto_model.php::get_acckhusus\nCanonical path: /api/topupvirtualaccount\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, jam_trans, keterangan, norek, nominal, admin, collector_id\nNote: Successful response is built from _get_simpanantransppob(v_trx_code), so it only contains the proof number and saldo ringkas.",
                "url": "{{base_url}}/api/topupvirtualaccount",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"keterangan\": \"Topup virtual account\",\n  \"norek\": \"{{reksimpanan}}\",\n  \"nominal\": \"100000\",\n  \"admin\": \"2500\",\n  \"collector_id\": \"{{collector_id}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"Berhasil\",\n  \"message\": \"Transaksi PPOB Berhasil\",\n  \"data\": [\n    {\n      \"nobukti\": \"13041.11.20260400007\",\n      \"saldo_awal\": 300000,\n      \"saldo_akhir\": 402500\n    }\n  ]\n}"
            },
            {
              "name": "401 Invalid Token",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::topupvirtualaccount\nSource model/query: app/Models/Save_model.php::_savesetortabungan + _savejurnal + app/Models/Core_model.php::_get_simpanantransppob + app/Models/Auto_model.php::get_acckhusus\nCanonical path: /api/topupvirtualaccount\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, jam_trans, keterangan, norek, nominal, admin, collector_id\nNote: Successful response is built from _get_simpanantransppob(v_trx_code), so it only contains the proof number and saldo ringkas.",
                "url": "{{base_url}}/api/topupvirtualaccount",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"keterangan\": \"Topup virtual account\",\n  \"norek\": \"{{reksimpanan}}\",\n  \"nominal\": \"100000\",\n  \"admin\": \"2500\",\n  \"collector_id\": \"{{collector_id}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "401 Invalid Token",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::topupvirtualaccount\nSource model/query: app/Models/Save_model.php::_savesetortabungan + _savejurnal + app/Models/Core_model.php::_get_simpanantransppob + app/Models/Auto_model.php::get_acckhusus\nCanonical path: /api/topupvirtualaccount\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, jam_trans, keterangan, norek, nominal, admin, collector_id\nNote: Successful response is built from _get_simpanantransppob(v_trx_code), so it only contains the proof number and saldo ringkas.",
                "url": "{{base_url}}/api/topupvirtualaccount",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"keterangan\": \"Topup virtual account\",\n  \"norek\": \"{{reksimpanan}}\",\n  \"nominal\": \"100000\",\n  \"admin\": \"2500\",\n  \"collector_id\": \"{{collector_id}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        },
        {
          "name": "Reserval PPOB",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              },
              {
                "key": "token",
                "value": "{{token}}",
                "type": "text"
              }
            ],
            "description": "Source controller: app/Controllers/Api.php::reservalppob\nSource model/query: app/Models/Save_model.php::_savesetortabungan + _savejurnal + _saveppob + app/Models/Core_model.php::_get_simpanantransppob + app/Models/Auto_model.php::get_acckhusus\nCanonical path: /api/reservalppob\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, jam_trans, keterangan, norek, nominal, admin, collector_id\nNote: perlu verifikasi manual: when writing PPOB log data, the source uses $$emp_name for col_name, so the collector name may end up null or trigger a runtime notice.\nNote: Successful response only returns status and message, without saldo payload.",
            "url": "{{base_url}}/api/reservalppob",
            "body": {
              "mode": "raw",
              "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"keterangan\": \"Reservasi saldo PPOB\",\n  \"norek\": \"{{reksimpanan}}\",\n  \"nominal\": \"100000\",\n  \"admin\": \"2500\",\n  \"collector_id\": \"{{collector_id}}\"\n}",
              "options": {
                "raw": {
                  "language": "json"
                }
              }
            }
          },
          "response": [
            {
              "name": "200 OK",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::reservalppob\nSource model/query: app/Models/Save_model.php::_savesetortabungan + _savejurnal + _saveppob + app/Models/Core_model.php::_get_simpanantransppob + app/Models/Auto_model.php::get_acckhusus\nCanonical path: /api/reservalppob\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, jam_trans, keterangan, norek, nominal, admin, collector_id\nNote: perlu verifikasi manual: when writing PPOB log data, the source uses $$emp_name for col_name, so the collector name may end up null or trigger a runtime notice.\nNote: Successful response only returns status and message, without saldo payload.",
                "url": "{{base_url}}/api/reservalppob",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"keterangan\": \"Reservasi saldo PPOB\",\n  \"norek\": \"{{reksimpanan}}\",\n  \"nominal\": \"100000\",\n  \"admin\": \"2500\",\n  \"collector_id\": \"{{collector_id}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "200 OK",
              "code": 200,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"Berhasil\",\n  \"message\": \"Transaksi PPOB Berhasil\"\n}"
            },
            {
              "name": "401 Invalid Token",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::reservalppob\nSource model/query: app/Models/Save_model.php::_savesetortabungan + _savejurnal + _saveppob + app/Models/Core_model.php::_get_simpanantransppob + app/Models/Auto_model.php::get_acckhusus\nCanonical path: /api/reservalppob\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, jam_trans, keterangan, norek, nominal, admin, collector_id\nNote: perlu verifikasi manual: when writing PPOB log data, the source uses $$emp_name for col_name, so the collector name may end up null or trigger a runtime notice.\nNote: Successful response only returns status and message, without saldo payload.",
                "url": "{{base_url}}/api/reservalppob",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"keterangan\": \"Reservasi saldo PPOB\",\n  \"norek\": \"{{reksimpanan}}\",\n  \"nominal\": \"100000\",\n  \"admin\": \"2500\",\n  \"collector_id\": \"{{collector_id}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "401 Invalid Token",
              "code": 401,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "\"Invalid Token\""
            },
            {
              "name": "404 Not Found",
              "originalRequest": {
                "method": "POST",
                "header": [
                  {
                    "key": "Accept",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "Content-Type",
                    "value": "application/json",
                    "type": "text"
                  },
                  {
                    "key": "token",
                    "value": "{{token}}",
                    "type": "text"
                  }
                ],
                "description": "Source controller: app/Controllers/Api.php::reservalppob\nSource model/query: app/Models/Save_model.php::_savesetortabungan + _savejurnal + _saveppob + app/Models/Core_model.php::_get_simpanantransppob + app/Models/Auto_model.php::get_acckhusus\nCanonical path: /api/reservalppob\nAuth: Header token required\nRoutes source: app/Config/Routes.php uses legacy auto routing via $routes->setAutoRoute(true).\nAuth source: Api::initController() checks custom request header token.\nBody fields: tgl, jam_trans, keterangan, norek, nominal, admin, collector_id\nNote: perlu verifikasi manual: when writing PPOB log data, the source uses $$emp_name for col_name, so the collector name may end up null or trigger a runtime notice.\nNote: Successful response only returns status and message, without saldo payload.",
                "url": "{{base_url}}/api/reservalppob",
                "body": {
                  "mode": "raw",
                  "raw": "{\n  \"tgl\": \"{{sample_date}}\",\n  \"jam_trans\": \"{{sample_datetime}}\",\n  \"keterangan\": \"Reservasi saldo PPOB\",\n  \"norek\": \"{{reksimpanan}}\",\n  \"nominal\": \"100000\",\n  \"admin\": \"2500\",\n  \"collector_id\": \"{{collector_id}}\"\n}",
                  "options": {
                    "raw": {
                      "language": "json"
                    }
                  }
                }
              },
              "status": "404 Not Found",
              "code": 404,
              "_postman_previewlanguage": "json",
              "header": [
                {
                  "key": "Content-Type",
                  "value": "application/json"
                }
              ],
              "body": "{\n  \"status\": \"error\",\n  \"message\": \"No data found\"\n}"
            }
          ]
        }
      ]
    },
    {
      "name": "Jatelindo VA",
      "item": [
        {
          "name": "Inquiry Success",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "description": "Jatelindo VA v1.5 inquiry success. Alias H2H92, ID Institusi 214.",
            "url": "{{base_url}}{{jatelindo_va_endpoint}}",
            "body": {
              "mode": "file",
              "file": {
                "src": "postman/jatelindo-va/inquiry-success.json"
              }
            }
          }
        },
        {
          "name": "Inquiry Not Found",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "description": "Jatelindo VA v1.5 inquiry not found, expected bit39 14.",
            "url": "{{base_url}}{{jatelindo_va_endpoint}}",
            "body": {
              "mode": "file",
              "file": {
                "src": "postman/jatelindo-va/inquiry-not-found.json"
              }
            }
          }
        },
        {
          "name": "Inquiry Blocked",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "description": "Jatelindo VA v1.5 inquiry blocked, expected bit39 43.",
            "url": "{{base_url}}{{jatelindo_va_endpoint}}",
            "body": {
              "mode": "file",
              "file": {
                "src": "postman/jatelindo-va/inquiry-blocked.json"
              }
            }
          }
        },
        {
          "name": "Inquiry Expired",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "description": "Jatelindo VA v1.5 inquiry expired, expected bit39 43.",
            "url": "{{base_url}}{{jatelindo_va_endpoint}}",
            "body": {
              "mode": "file",
              "file": {
                "src": "postman/jatelindo-va/inquiry-expired.json"
              }
            }
          }
        },
        {
          "name": "Payment Success",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "description": "Jatelindo VA v1.5 payment success. Alias H2H92, ID Institusi 214.",
            "url": "{{base_url}}{{jatelindo_va_endpoint}}",
            "body": {
              "mode": "file",
              "file": {
                "src": "postman/jatelindo-va/payment-success.json"
              }
            }
          }
        },
        {
          "name": "Payment Duplicate",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "description": "Jatelindo VA v1.5 payment duplicate, expected bit39 00 without second posting.",
            "url": "{{base_url}}{{jatelindo_va_endpoint}}",
            "body": {
              "mode": "file",
              "file": {
                "src": "postman/jatelindo-va/payment-duplicate.json"
              }
            }
          }
        },
        {
          "name": "Payment Nominal Mismatch",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "description": "Jatelindo VA v1.5 payment nominal mismatch, expected bit39 51.",
            "url": "{{base_url}}{{jatelindo_va_endpoint}}",
            "body": {
              "mode": "file",
              "file": {
                "src": "postman/jatelindo-va/payment-nominal-mismatch.json"
              }
            }
          }
        },
        {
          "name": "Advice Success",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "description": "Jatelindo VA v1.5 advice success. Alias H2H92, ID Institusi 214.",
            "url": "{{base_url}}{{jatelindo_va_endpoint}}",
            "body": {
              "mode": "file",
              "file": {
                "src": "postman/jatelindo-va/advice-success.json"
              }
            }
          }
        },
        {
          "name": "Advice Duplicate",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json",
                "type": "text"
              }
            ],
            "description": "Jatelindo VA v1.5 advice duplicate, expected bit39 00 without second posting.",
            "url": "{{base_url}}{{jatelindo_va_endpoint}}",
            "body": {
              "mode": "file",
              "file": {
                "src": "postman/jatelindo-va/advice-duplicate.json"
              }
            }
          }
        }
      ]
    }
  ]
}
