{"openapi":"3.1.0","info":{"title":"Wilayah Indonesia API","description":"API data wilayah administratif Indonesia untuk level provinsi, kabupaten/kota, kecamatan, dan desa/kelurahan.","version":"3.0.0"},"paths":{"/api/":{"get":{"tags":["root"],"summary":"API Root","description":"Endpoint utama API dengan informasi versi dan tautan dokumentasi.","operationId":"api_root_api__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse_RootData_"}}}}}}},"/api/health":{"get":{"tags":["root"],"summary":"Health Check","description":"Endpoint status kesehatan layanan.","operationId":"health_check_api_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse_HealthData_"}}}}}}},"/api/kode/{kode}":{"get":{"tags":["search"],"summary":"Cari Wilayah berdasarkan Kode","description":"Cari data wilayah administratif berdasarkan kode. Mendukung tingkat provinsi, kabupaten/kota, kecamatan, dan desa/kelurahan.","operationId":"search_by_code_api_kode__kode__get","parameters":[{"name":"kode","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"description":"Kode wilayah administratif","title":"Kode"},"description":"Kode wilayah administratif"},{"name":"parent","in":"query","required":false,"schema":{"type":"boolean","description":"Sertakan hierarki parent penuh pada data wilayah (default true).","default":true,"title":"Parent"},"description":"Sertakan hierarki parent penuh pada data wilayah (default true)."}],"responses":{"200":{"description":"Data wilayah berhasil ditemukan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse_RegionResource_"},"example":{"success":true,"data":{"code":110101,"short_code":"11/01/01","name":"BAKONGAN","depth":3,"type":"district","has_children":true,"parent":{"code":1101,"short_code":"11/01","name":"ACEH SELATAN","depth":2,"type":"regency","parent":{"code":11,"short_code":"11","name":"ACEH","depth":1,"type":"province"}}},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9QXMBF3RVTKNE8D4J7WQCX","duration_ms":11}}}}},"404":{"description":"Kode wilayah tidak tersedia pada dataset.","content":{"application/json":{"example":{"success":false,"error":{"code":"REGION_NOT_FOUND","message":"The requested region could not be found.","detail":"No region with code 330999 exists in the national reference dataset.","hint":"Verify the region code using GET /api/0 for valid province codes.","docs":"https://api.example.com/docs/errors#REGION_NOT_FOUND"},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9U00000000000000000000","duration_ms":4}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Format kode wilayah tidak valid.","content":{"application/json":{"example":{"success":false,"error":{"code":"VALIDATION_FAILED","message":"One or more request parameters are invalid.","detail":"Request validation failed.","hint":"Fix the invalid request parameters and try again. See fields for details.","docs":"https://api.example.com/docs/errors#VALIDATION_FAILED","fields":[{"field":"kode_provinsi","value":"33XY","rule":"numeric","message":"kode_provinsi must be a 2-digit numeric integer between 11 and 99."}]},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9V00000000000000000000","duration_ms":2}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/s/{kode_provinsi}":{"get":{"tags":["simple"],"summary":"Simple Tingkat 1 (Provinsi)","description":"Ambil data provinsi berdasarkan kode provinsi 2 digit. Tingkat 1 = provinsi.","operationId":"simple_provinsi_api_s__kode_provinsi__get","parameters":[{"name":"kode_provinsi","in":"path","required":true,"schema":{"type":"integer","maximum":99,"minimum":1,"description":"Kode provinsi 2 digit","title":"Kode Provinsi"},"description":"Kode provinsi 2 digit"},{"name":"parent","in":"query","required":false,"schema":{"type":"boolean","description":"Sertakan hierarki parent pada data wilayah (default true).","default":true,"title":"Parent"},"description":"Sertakan hierarki parent pada data wilayah (default true)."}],"responses":{"200":{"description":"Data provinsi berhasil ditemukan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse_RegionResource_"},"example":{"success":true,"data":{"code":110101,"short_code":"11/01/01","name":"BAKONGAN","depth":3,"type":"district","has_children":true,"parent":{"code":1101,"short_code":"11/01","name":"ACEH SELATAN","depth":2,"type":"regency","parent":{"code":11,"short_code":"11","name":"ACEH","depth":1,"type":"province"}}},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9QXMBF3RVTKNE8D4J7WQCX","duration_ms":11}}}}},"404":{"description":"Provinsi tidak ditemukan.","content":{"application/json":{"example":{"success":false,"error":{"code":"REGION_NOT_FOUND","message":"The requested region could not be found.","detail":"No region with code 330999 exists in the national reference dataset.","hint":"Verify the region code using GET /api/0 for valid province codes.","docs":"https://api.example.com/docs/errors#REGION_NOT_FOUND"},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9U00000000000000000000","duration_ms":4}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Format parameter tidak valid.","content":{"application/json":{"example":{"success":false,"error":{"code":"VALIDATION_FAILED","message":"One or more request parameters are invalid.","detail":"Request validation failed.","hint":"Fix the invalid request parameters and try again. See fields for details.","docs":"https://api.example.com/docs/errors#VALIDATION_FAILED","fields":[{"field":"kode_provinsi","value":"33XY","rule":"numeric","message":"kode_provinsi must be a 2-digit numeric integer between 11 and 99."}]},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9V00000000000000000000","duration_ms":2}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/s/{kode_provinsi}/{nomor_kabupaten}":{"get":{"tags":["simple"],"summary":"Simple Tingkat 2 (Kabupaten/Kota)","description":"Ambil data kabupaten/kota dengan format sederhana: {kode_provinsi}/{nomor_kabupaten}. Tingkat 2 = kabupaten/kota.","operationId":"simple_kabupaten_api_s__kode_provinsi___nomor_kabupaten__get","parameters":[{"name":"kode_provinsi","in":"path","required":true,"schema":{"type":"integer","maximum":99,"minimum":1,"description":"Kode provinsi 2 digit","title":"Kode Provinsi"},"description":"Kode provinsi 2 digit"},{"name":"nomor_kabupaten","in":"path","required":true,"schema":{"type":"integer","maximum":99,"minimum":1,"description":"Nomor kabupaten 2 digit","title":"Nomor Kabupaten"},"description":"Nomor kabupaten 2 digit"},{"name":"parent","in":"query","required":false,"schema":{"type":"boolean","description":"Sertakan hierarki parent pada data wilayah (default true).","default":true,"title":"Parent"},"description":"Sertakan hierarki parent pada data wilayah (default true)."}],"responses":{"200":{"description":"Data kabupaten/kota berhasil ditemukan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse_RegionResource_"},"example":{"success":true,"data":{"code":110101,"short_code":"11/01/01","name":"BAKONGAN","depth":3,"type":"district","has_children":true,"parent":{"code":1101,"short_code":"11/01","name":"ACEH SELATAN","depth":2,"type":"regency","parent":{"code":11,"short_code":"11","name":"ACEH","depth":1,"type":"province"}}},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9QXMBF3RVTKNE8D4J7WQCX","duration_ms":11}}}}},"404":{"description":"Provinsi atau kabupaten/kota tidak ditemukan.","content":{"application/json":{"example":{"success":false,"error":{"code":"REGION_NOT_FOUND","message":"The requested region could not be found.","detail":"No region with code 330999 exists in the national reference dataset.","hint":"Verify the region code using GET /api/0 for valid province codes.","docs":"https://api.example.com/docs/errors#REGION_NOT_FOUND"},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9U00000000000000000000","duration_ms":4}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Format parameter tidak valid.","content":{"application/json":{"example":{"success":false,"error":{"code":"VALIDATION_FAILED","message":"One or more request parameters are invalid.","detail":"Request validation failed.","hint":"Fix the invalid request parameters and try again. See fields for details.","docs":"https://api.example.com/docs/errors#VALIDATION_FAILED","fields":[{"field":"kode_provinsi","value":"33XY","rule":"numeric","message":"kode_provinsi must be a 2-digit numeric integer between 11 and 99."}]},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9V00000000000000000000","duration_ms":2}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/s/{kode_provinsi}/{nomor_kabupaten}/{nomor_kecamatan}":{"get":{"tags":["simple"],"summary":"Simple Tingkat 3 (Kecamatan)","description":"Ambil data kecamatan dengan format sederhana: {kode_provinsi}/{nomor_kabupaten}/{nomor_kecamatan}. Tingkat 3 = kecamatan.","operationId":"simple_kecamatan_api_s__kode_provinsi___nomor_kabupaten___nomor_kecamatan__get","parameters":[{"name":"kode_provinsi","in":"path","required":true,"schema":{"type":"integer","maximum":99,"minimum":1,"description":"Kode provinsi 2 digit","title":"Kode Provinsi"},"description":"Kode provinsi 2 digit"},{"name":"nomor_kabupaten","in":"path","required":true,"schema":{"type":"integer","maximum":99,"minimum":1,"description":"Nomor kabupaten 2 digit","title":"Nomor Kabupaten"},"description":"Nomor kabupaten 2 digit"},{"name":"nomor_kecamatan","in":"path","required":true,"schema":{"type":"integer","maximum":99,"minimum":1,"description":"Nomor kecamatan 2 digit","title":"Nomor Kecamatan"},"description":"Nomor kecamatan 2 digit"},{"name":"parent","in":"query","required":false,"schema":{"type":"boolean","description":"Sertakan hierarki parent pada data wilayah (default true).","default":true,"title":"Parent"},"description":"Sertakan hierarki parent pada data wilayah (default true)."}],"responses":{"200":{"description":"Data kecamatan berhasil ditemukan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse_RegionResource_"},"example":{"success":true,"data":{"code":110101,"short_code":"11/01/01","name":"BAKONGAN","depth":3,"type":"district","has_children":true,"parent":{"code":1101,"short_code":"11/01","name":"ACEH SELATAN","depth":2,"type":"regency","parent":{"code":11,"short_code":"11","name":"ACEH","depth":1,"type":"province"}}},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9QXMBF3RVTKNE8D4J7WQCX","duration_ms":11}}}}},"404":{"description":"Provinsi, kabupaten/kota, atau kecamatan tidak ditemukan.","content":{"application/json":{"example":{"success":false,"error":{"code":"REGION_NOT_FOUND","message":"The requested region could not be found.","detail":"No region with code 330999 exists in the national reference dataset.","hint":"Verify the region code using GET /api/0 for valid province codes.","docs":"https://api.example.com/docs/errors#REGION_NOT_FOUND"},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9U00000000000000000000","duration_ms":4}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Format parameter tidak valid.","content":{"application/json":{"example":{"success":false,"error":{"code":"VALIDATION_FAILED","message":"One or more request parameters are invalid.","detail":"Request validation failed.","hint":"Fix the invalid request parameters and try again. See fields for details.","docs":"https://api.example.com/docs/errors#VALIDATION_FAILED","fields":[{"field":"kode_provinsi","value":"33XY","rule":"numeric","message":"kode_provinsi must be a 2-digit numeric integer between 11 and 99."}]},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9V00000000000000000000","duration_ms":2}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/s/{kode_provinsi}/{nomor_kabupaten}/{nomor_kecamatan}/{nomor_desa}":{"get":{"tags":["simple"],"summary":"Simple Tingkat 4 (Desa/Kelurahan)","description":"Ambil data desa/kelurahan dengan format sederhana: {kode_provinsi}/{nomor_kabupaten}/{nomor_kecamatan}/{nomor_desa}. Tingkat 4 = desa/kelurahan.","operationId":"simple_desa_api_s__kode_provinsi___nomor_kabupaten___nomor_kecamatan___nomor_desa__get","parameters":[{"name":"kode_provinsi","in":"path","required":true,"schema":{"type":"integer","maximum":99,"minimum":1,"description":"Kode provinsi 2 digit","title":"Kode Provinsi"},"description":"Kode provinsi 2 digit"},{"name":"nomor_kabupaten","in":"path","required":true,"schema":{"type":"integer","maximum":99,"minimum":1,"description":"Nomor kabupaten 2 digit","title":"Nomor Kabupaten"},"description":"Nomor kabupaten 2 digit"},{"name":"nomor_kecamatan","in":"path","required":true,"schema":{"type":"integer","maximum":99,"minimum":1,"description":"Nomor kecamatan 2 digit","title":"Nomor Kecamatan"},"description":"Nomor kecamatan 2 digit"},{"name":"nomor_desa","in":"path","required":true,"schema":{"type":"integer","maximum":9999,"minimum":1,"description":"Nomor desa 4 digit","title":"Nomor Desa"},"description":"Nomor desa 4 digit"},{"name":"parent","in":"query","required":false,"schema":{"type":"boolean","description":"Sertakan hierarki parent pada data wilayah (default true).","default":true,"title":"Parent"},"description":"Sertakan hierarki parent pada data wilayah (default true)."}],"responses":{"200":{"description":"Data desa/kelurahan berhasil ditemukan.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse_RegionResource_"},"example":{"success":true,"data":{"code":110101,"short_code":"11/01/01","name":"BAKONGAN","depth":3,"type":"district","has_children":true,"parent":{"code":1101,"short_code":"11/01","name":"ACEH SELATAN","depth":2,"type":"regency","parent":{"code":11,"short_code":"11","name":"ACEH","depth":1,"type":"province"}}},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9QXMBF3RVTKNE8D4J7WQCX","duration_ms":11}}}}},"404":{"description":"Wilayah referensi tidak ditemukan pada hierarki yang diberikan.","content":{"application/json":{"example":{"success":false,"error":{"code":"REGION_NOT_FOUND","message":"The requested region could not be found.","detail":"No region with code 330999 exists in the national reference dataset.","hint":"Verify the region code using GET /api/0 for valid province codes.","docs":"https://api.example.com/docs/errors#REGION_NOT_FOUND"},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9U00000000000000000000","duration_ms":4}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Format parameter tidak valid.","content":{"application/json":{"example":{"success":false,"error":{"code":"VALIDATION_FAILED","message":"One or more request parameters are invalid.","detail":"Request validation failed.","hint":"Fix the invalid request parameters and try again. See fields for details.","docs":"https://api.example.com/docs/errors#VALIDATION_FAILED","fields":[{"field":"kode_provinsi","value":"33XY","rule":"numeric","message":"kode_provinsi must be a 2-digit numeric integer between 11 and 99."}]},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9V00000000000000000000","duration_ms":2}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/0":{"get":{"tags":["wilayah"],"summary":"Daftar Provinsi","description":"Daftar seluruh provinsi di Indonesia.","operationId":"list_provinsi_api_0_get","parameters":[{"name":"parent","in":"query","required":false,"schema":{"type":"boolean","description":"Sertakan parent pada setiap item (default false). Untuk provinsi nilai tetap null.","default":false,"title":"Parent"},"description":"Sertakan parent pada setiap item (default false). Untuk provinsi nilai tetap null."}],"responses":{"200":{"description":"Daftar provinsi berhasil diambil.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse_RegionListData_"},"example":{"success":true,"data":{"items":[{"code":11,"short_code":"11","name":"ACEH","depth":1,"type":"province","has_children":true}],"pagination":{"total":38,"per_page":38,"has_next":false,"has_prev":false}},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9R00000000000000000000","duration_ms":9}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/{kode_provinsi}":{"get":{"tags":["wilayah"],"summary":"Daftar Kabupaten/Kota","description":"Daftar kabupaten/kota pada provinsi tertentu.","operationId":"list_kabupaten_api__kode_provinsi__get","parameters":[{"name":"kode_provinsi","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"description":"Kode provinsi 2 digit","title":"Kode Provinsi"},"description":"Kode provinsi 2 digit"},{"name":"parent","in":"query","required":false,"schema":{"type":"boolean","description":"Sertakan parent provinsi pada setiap item (default false).","default":false,"title":"Parent"},"description":"Sertakan parent provinsi pada setiap item (default false)."}],"responses":{"200":{"description":"Daftar kabupaten/kota berhasil diambil.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse_RegionListData_"},"example":{"success":true,"data":{"items":[{"code":11,"short_code":"11","name":"ACEH","depth":1,"type":"province","has_children":true}],"pagination":{"total":38,"per_page":38,"has_next":false,"has_prev":false}},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9R00000000000000000000","duration_ms":9}}}}},"404":{"description":"Provinsi tidak ditemukan.","content":{"application/json":{"example":{"success":false,"error":{"code":"REGION_NOT_FOUND","message":"The requested region could not be found.","detail":"No region with code 330999 exists in the national reference dataset.","hint":"Verify the region code using GET /api/0 for valid province codes.","docs":"https://api.example.com/docs/errors#REGION_NOT_FOUND"},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9U00000000000000000000","duration_ms":4}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Format kode provinsi tidak valid.","content":{"application/json":{"example":{"success":false,"error":{"code":"VALIDATION_FAILED","message":"One or more request parameters are invalid.","detail":"Request validation failed.","hint":"Fix the invalid request parameters and try again. See fields for details.","docs":"https://api.example.com/docs/errors#VALIDATION_FAILED","fields":[{"field":"kode_provinsi","value":"33XY","rule":"numeric","message":"kode_provinsi must be a 2-digit numeric integer between 11 and 99."}]},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9V00000000000000000000","duration_ms":2}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/{kode_provinsi}/{kode_kabupaten}":{"get":{"tags":["wilayah"],"summary":"Daftar Kecamatan","description":"Daftar kecamatan berdasarkan kode provinsi dan kode kabupaten/kota penuh.","operationId":"list_kecamatan_api__kode_provinsi___kode_kabupaten__get","parameters":[{"name":"kode_provinsi","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"description":"Kode provinsi 2 digit","title":"Kode Provinsi"},"description":"Kode provinsi 2 digit"},{"name":"kode_kabupaten","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"description":"Kode kabupaten/kota 4 digit","title":"Kode Kabupaten"},"description":"Kode kabupaten/kota 4 digit"},{"name":"parent","in":"query","required":false,"schema":{"type":"boolean","description":"Sertakan parent kabupaten/kota pada setiap item (default false).","default":false,"title":"Parent"},"description":"Sertakan parent kabupaten/kota pada setiap item (default false)."}],"responses":{"200":{"description":"Daftar kecamatan berhasil diambil.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse_RegionListData_"},"example":{"success":true,"data":{"items":[{"code":11,"short_code":"11","name":"ACEH","depth":1,"type":"province","has_children":true}],"pagination":{"total":38,"per_page":38,"has_next":false,"has_prev":false}},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9R00000000000000000000","duration_ms":9}}}}},"404":{"description":"Provinsi atau kabupaten/kota tidak ditemukan.","content":{"application/json":{"example":{"success":false,"error":{"code":"REGION_NOT_FOUND","message":"The requested region could not be found.","detail":"No region with code 330999 exists in the national reference dataset.","hint":"Verify the region code using GET /api/0 for valid province codes.","docs":"https://api.example.com/docs/errors#REGION_NOT_FOUND"},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9U00000000000000000000","duration_ms":4}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Format kode provinsi/kabupaten tidak valid.","content":{"application/json":{"example":{"success":false,"error":{"code":"VALIDATION_FAILED","message":"One or more request parameters are invalid.","detail":"Request validation failed.","hint":"Fix the invalid request parameters and try again. See fields for details.","docs":"https://api.example.com/docs/errors#VALIDATION_FAILED","fields":[{"field":"kode_provinsi","value":"33XY","rule":"numeric","message":"kode_provinsi must be a 2-digit numeric integer between 11 and 99."}]},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9V00000000000000000000","duration_ms":2}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/{kode_provinsi}/{kode_kabupaten}/{kode_kecamatan}":{"get":{"tags":["wilayah"],"summary":"Daftar Desa/Kelurahan","description":"Daftar desa/kelurahan berdasarkan kode hierarki wilayah penuh.","operationId":"list_desa_api__kode_provinsi___kode_kabupaten___kode_kecamatan__get","parameters":[{"name":"kode_provinsi","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"description":"Kode provinsi 2 digit","title":"Kode Provinsi"},"description":"Kode provinsi 2 digit"},{"name":"kode_kabupaten","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"description":"Kode kabupaten/kota 4 digit","title":"Kode Kabupaten"},"description":"Kode kabupaten/kota 4 digit"},{"name":"kode_kecamatan","in":"path","required":true,"schema":{"type":"integer","exclusiveMinimum":0,"description":"Kode kecamatan 6 digit","title":"Kode Kecamatan"},"description":"Kode kecamatan 6 digit"},{"name":"parent","in":"query","required":false,"schema":{"type":"boolean","description":"Sertakan parent kecamatan pada setiap item (default false).","default":false,"title":"Parent"},"description":"Sertakan parent kecamatan pada setiap item (default false)."}],"responses":{"200":{"description":"Daftar desa/kelurahan berhasil diambil.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponse_RegionListData_"},"example":{"success":true,"data":{"items":[{"code":11,"short_code":"11","name":"ACEH","depth":1,"type":"province","has_children":true}],"pagination":{"total":38,"per_page":38,"has_next":false,"has_prev":false}},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9R00000000000000000000","duration_ms":9}}}}},"404":{"description":"Provinsi, kabupaten/kota, atau kecamatan tidak ditemukan.","content":{"application/json":{"example":{"success":false,"error":{"code":"REGION_NOT_FOUND","message":"The requested region could not be found.","detail":"No region with code 330999 exists in the national reference dataset.","hint":"Verify the region code using GET /api/0 for valid province codes.","docs":"https://api.example.com/docs/errors#REGION_NOT_FOUND"},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9U00000000000000000000","duration_ms":4}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"422":{"description":"Format kode wilayah tidak valid.","content":{"application/json":{"example":{"success":false,"error":{"code":"VALIDATION_FAILED","message":"One or more request parameters are invalid.","detail":"Request validation failed.","hint":"Fix the invalid request parameters and try again. See fields for details.","docs":"https://api.example.com/docs/errors#VALIDATION_FAILED","fields":[{"field":"kode_provinsi","value":"33XY","rule":"numeric","message":"kode_provinsi must be a 2-digit numeric integer between 11 and 99."}]},"meta":{"api_version":"v3","timestamp":"2026-04-08T04:30:00Z","request_id":"01HZ9V00000000000000000000","duration_ms":2}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"DocsLinks":{"properties":{"swagger":{"type":"string","title":"Swagger"},"redoc":{"type":"string","title":"Redoc"},"openapi":{"type":"string","title":"Openapi"}},"type":"object","required":["swagger","redoc","openapi"],"title":"DocsLinks"},"EndpointGroups":{"properties":{"root":{"items":{"type":"string"},"type":"array","title":"Root"},"search":{"items":{"type":"string"},"type":"array","title":"Search"},"wilayah":{"items":{"type":"string"},"type":"array","title":"Wilayah"},"simple":{"items":{"type":"string"},"type":"array","title":"Simple"}},"type":"object","required":["root","search","wilayah","simple"],"title":"EndpointGroups"},"ErrorInfo":{"properties":{"code":{"type":"string","title":"Code"},"message":{"type":"string","title":"Message"},"detail":{"type":"string","title":"Detail"},"hint":{"type":"string","title":"Hint"},"docs":{"type":"string","title":"Docs"},"fields":{"anyOf":[{"items":{"$ref":"#/components/schemas/ValidationField"},"type":"array"},{"type":"null"}],"title":"Fields"}},"type":"object","required":["code","message","detail","hint","docs"],"title":"ErrorInfo","description":"Standardized error shape inside the response envelope."},"ErrorResponse":{"properties":{"success":{"type":"boolean","const":false,"title":"Success","default":false},"data":{"type":"null","title":"Data"},"error":{"$ref":"#/components/schemas/ErrorInfo"},"meta":{"$ref":"#/components/schemas/MetaInfo"}},"type":"object","required":["error","meta"],"title":"ErrorResponse","description":"Typed error envelope for explicit OpenAPI error contracts."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthData":{"properties":{"status":{"type":"string","title":"Status"},"version":{"type":"string","title":"Version"},"database":{"type":"string","title":"Database"}},"type":"object","required":["status","version","database"],"title":"HealthData"},"MetaInfo":{"properties":{"api_version":{"type":"string","title":"Api Version","description":"API version identifier","examples":["v3"]},"timestamp":{"type":"string","title":"Timestamp","description":"ISO 8601 UTC timestamp"},"request_id":{"type":"string","title":"Request Id","description":"Unique request identifier"},"duration_ms":{"type":"integer","minimum":0.0,"title":"Duration Ms","description":"Server processing duration in milliseconds"}},"type":"object","required":["api_version","timestamp","request_id","duration_ms"],"title":"MetaInfo","description":"Metadata included in every API response."},"PaginationInfo":{"properties":{"total":{"type":"integer","minimum":0.0,"title":"Total"},"per_page":{"type":"integer","minimum":0.0,"title":"Per Page"},"has_next":{"type":"boolean","title":"Has Next"},"has_prev":{"type":"boolean","title":"Has Prev"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Next Cursor"},"prev_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Prev Cursor"}},"type":"object","required":["total","per_page","has_next","has_prev"],"title":"PaginationInfo","description":"Pagination payload used by all list endpoints."},"RegionListData":{"properties":{"items":{"items":{"$ref":"#/components/schemas/RegionResource"},"type":"array","title":"Items"},"pagination":{"$ref":"#/components/schemas/PaginationInfo"}},"type":"object","required":["items","pagination"],"title":"RegionListData","description":"Typed list payload for region collection responses."},"RegionParent":{"properties":{"code":{"type":"integer","title":"Code"},"short_code":{"type":"string","title":"Short Code"},"name":{"type":"string","title":"Name"},"depth":{"type":"integer","maximum":4.0,"minimum":1.0,"title":"Depth"},"type":{"type":"string","enum":["province","regency","district","village"],"title":"Type"},"parent":{"anyOf":[{"$ref":"#/components/schemas/RegionParent"},{"type":"null"}]}},"type":"object","required":["code","short_code","name","depth","type"],"title":"RegionParent","description":"Recursive parent chain object for region resources."},"RegionResource":{"properties":{"code":{"type":"integer","title":"Code"},"short_code":{"type":"string","title":"Short Code"},"name":{"type":"string","title":"Name"},"depth":{"type":"integer","maximum":4.0,"minimum":1.0,"title":"Depth"},"type":{"type":"string","enum":["province","regency","district","village"],"title":"Type"},"has_children":{"type":"boolean","title":"Has Children"},"parent":{"anyOf":[{"$ref":"#/components/schemas/RegionParent"},{"type":"null"}]}},"type":"object","required":["code","short_code","name","depth","type","has_children"],"title":"RegionResource","description":"Canonical region resource returned by all data endpoints."},"RootData":{"properties":{"name":{"type":"string","title":"Name"},"version":{"type":"string","title":"Version"},"docs":{"$ref":"#/components/schemas/DocsLinks"},"groups":{"$ref":"#/components/schemas/EndpointGroups"}},"type":"object","required":["name","version","docs","groups"],"title":"RootData"},"SuccessResponse_HealthData_":{"properties":{"success":{"type":"boolean","const":true,"title":"Success","default":true},"data":{"$ref":"#/components/schemas/HealthData"},"error":{"type":"null","title":"Error"},"meta":{"$ref":"#/components/schemas/MetaInfo"}},"type":"object","required":["data","meta"],"title":"SuccessResponse[HealthData]"},"SuccessResponse_RegionListData_":{"properties":{"success":{"type":"boolean","const":true,"title":"Success","default":true},"data":{"$ref":"#/components/schemas/RegionListData"},"error":{"type":"null","title":"Error"},"meta":{"$ref":"#/components/schemas/MetaInfo"}},"type":"object","required":["data","meta"],"title":"SuccessResponse[RegionListData]"},"SuccessResponse_RegionResource_":{"properties":{"success":{"type":"boolean","const":true,"title":"Success","default":true},"data":{"$ref":"#/components/schemas/RegionResource"},"error":{"type":"null","title":"Error"},"meta":{"$ref":"#/components/schemas/MetaInfo"}},"type":"object","required":["data","meta"],"title":"SuccessResponse[RegionResource]"},"SuccessResponse_RootData_":{"properties":{"success":{"type":"boolean","const":true,"title":"Success","default":true},"data":{"$ref":"#/components/schemas/RootData"},"error":{"type":"null","title":"Error"},"meta":{"$ref":"#/components/schemas/MetaInfo"}},"type":"object","required":["data","meta"],"title":"SuccessResponse[RootData]"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"ValidationField":{"properties":{"field":{"type":"string","title":"Field"},"value":{"title":"Value"},"rule":{"type":"string","title":"Rule"},"message":{"type":"string","title":"Message"}},"type":"object","required":["field","value","rule","message"],"title":"ValidationField","description":"Per-field validation error details."}}},"tags":[{"name":"root","description":"Informasi dasar API pada namespace /api."},{"name":"search","description":"Pencarian wilayah berdasarkan kode penuh pada /api/kode/{kode}."},{"name":"wilayah","description":"Endpoint hierarki kode penuh pada namespace /api."},{"name":"simple","description":"Endpoint shorthand pada /api/s. Tingkat 1 = provinsi, tingkat 2 = kabupaten/kota, tingkat 3 = kecamatan, tingkat 4 = desa/kelurahan."}]}