Penyediaan API ============== Introduction API ^^^^^^^^^^^^^^^^ Di dunia IT, dalam sebuah *site* sering terdapat aplikasi-aplikasi yg diciptakan oleh perusahaan-perusahaan berbeda, yang menggunakan bahasa programming dan memiliki alur kerja yg berbeda-beda. Oleh karena semua perbedaan ini, banyak aplikasi yang berada di suatu *site* tidak bekerja sama dalam memberikan layanan terpadu kepada para penggunanya. API (Application Programming Interface) adalah antarmuka yang disediakan oleh sebuah aplikasi agar aplikasi lain dapat dengan mudah mengakses informasi atau bahkan mengubah data, tanpa harus mengenal bahasa programming dan alur kerja dari aplikasi tersebut. * Server Inalix menyediakan API untuk setiap data simpanannya bagi pengguna mana saja yang memiliki sandi untuk mengakses web admin server tersebut. * REST API adalah API yg disediakan di server-server Inalix yg memiliki beberapa keunggulan: - API paling umum dipakai - Menggunakan protokol HTTP sehingga mudah dipakai - Dapat dibuka, ditelusuri dan diubah dalam *web browser* - Menyajikan data dalam format XML atau JSON Data Yang Tersedia ^^^^^^^^^^^^^^^^^^ API untuk semua data pada Inalix apps sudah tersedia, mulai dari master data, flight management, billing, pax & cargo, fids, aas, planning, report, dan lain-lain. Adapaun URL untuk akses API inalix Apps: .. code-block:: python http://ip_or_domain/api/ Dalam bab ini akan fokus membahas tentang API untuk flight management karena API ini lebih sering digunakan untuk integrasi dengan sistem lain yang ada di bandara API flight management --------------------- Untuk setiap penerbangan, Inalix Apps menyediakan data API dengan URL dan penjelasan detail sebagai berikut: .. code-block:: python URL http://ip_or_domain/api/flight/ a. Menampilkan 100 data penerbangan per page b. Dapat di filter melalui parameter GET d. Format data JSON .. list-table:: Penjelasan Field API Flight :widths: 5 25 40 30 :header-rows: 1 * - No. - Field - Keterangan - Contoh * - 1 - id - primary key penerbangan, biasanya berisikan seragkaian nomor yang dihasilkan otomatis oleh sistem - * - 2 - ad - rute penerbangan (diperlukan method POST) - A: Arrival, - D: Departure, - O: Overfly - A * - 3 - direction - alias dari ad (field no.2) - A * - 4 - opr - operator menggunakan 3 letter code - BTK * - 5 - airline - alias dari opr (field no.4) - BTK * - 6 - callsign - Nomor penerbangan dengan kode ICAO (diperlukan method POST) - SJY588 * - 7 - regno - Nomor registrasi penerbangan. Jika nilainya “ZZZZZ” berarti data masih kosong (default) - PKOSP * - 8 - time - Jadwal Penerbangan sesuai schedule (wajib untuk metode POST) dengan waktu lokal - 2017-10-13T12:45:00+07:00 * - 9 - new_time - Jadwal penerbangan baru apa bila penerbangan tidak sesuai schedule (waktu lokal) - jika nilainya sama dengan “time” berarti tidak ada perubahan schedule - 2017-10-13T12:45:00+07:00 * - 10 - est - Waktu Estimate, (waktu lokal) - merupakan Estimate In Block Time (EIBT) jika ad = arrival - merupakan Estimate Off Block Time (EOBT) jika ad = departure - 2017-10-13T12:54:14.686927+07:00 * - 11 - airport - Kode ICAO bandara - merupakan bandara tujuan jika ad= departure - merupakan bandara asal jika ad = arrival - WIDD * - 12 - nbd - waktu boarding (waktu lokal) - 2017-10-13T12:54:14.686927+07:00 * - 13 - act - Waktu Actual - merupakan Actual Landing Time (ALDT) jika ad = arrival - merupakan Actual Take Off Time (ATOT) jika ad = departure - 2017-10-13T12:54:14.686927+07:00 * - 14 - bay - nomor tempat pesawat diparkir (nomor parking stand) - A01 * - 15 - block - Waktu blok terakhir (waktu lokal) - merupakan waktu blok on terakhir jika ad = arrival - merupakan waktu blok off terakhir jika ad = departure - 2017-10-13T12:54:14.686927+07:00 * - 16 - bridge - Penggunaan avio bridge - 0 :tidak menggunakan avio - 1 :mnggunakan avio - -1:tidak diperbarui (nilai default), jika tidak diperbarui maka dianggap tidak menggunakan avio - * - 17 - status - Status penerbangan - berisi kode yang terdiri dari 3 huruf yang ditulis dengan standar inalix - kepanjangan dari kode tersebut dapat dilihat di modul admin menu flight statuses - kode ini juga berhubungan dengan status yang ada pada FIDS - SCH * - 18 - scope - cakupan penerbangan (Scope) - I : Untuk penerbangan internasonal - D : Untuk penerbangan domestik - I * - 19 - datehour - nilainya sama dengan field time (field no.8) tetapi menggunakan waktu UTC - 2014123116 * - 20 - via - Kode ICAO bandara transit - Jika ada pemisah dengan koma “,” berarti transit lebih dari 1 bandara - WADD * - 21 - aircraft - Informasi pesawat, menampilkan list 3 data: - list 1 : jenis pesawat - list 2 : lebar sayap - list 3 : panjang pesawat - [“B461”, 16.2, 15.9] - artinya pesawat B461; lebar sayap 16,2 meter; panjang pesawat 15,9 meter * - 22 - arr - ID pasangan flight departure - jika flight arrival isinya "null" - jika flight departure, maka isinya ID flight arrival - 4173241 * - 23 - dep - ID pasangan flight arrival - jika flight arrival, maka isinya ID flight departure - jika flight departure isinya "null" - 4173394 * - 24 - desks - Daftar meja yang digunakan untuk check in - [“1”, “2”, “3”, “A1”, “A2”] * - 25 - gate - label (nomor) gate yang digunakan untuk boarding - B10 * - 26 - belt - label (nomor) conveyor belt yang digunakan untuk bagasi - B01 * - 27 - closed - status penerbangan di FIDS - bernilai true atau false - bernilai true berarti status penerbangan telah ditutup - bernilai false berarti status penerbangan masih berlangsung - true * - 28 - delay_reason - Kode untuk alasan penerbangan terlambat - Kepanjangan dari kode tersebut dapat dilihat di modul admin, menu flight statuses - "NIA", "OPR", "AP" , "CUA", "TEK" * - 29 - scheduled - Nilai Boolean 'true' atau 'false' terkait flight schedule atau unschedule - jika scheduled nilainya "true" - jika unscheduled nilainya "false" - true * - 30 - opr_time - Nilai dari field ini akan selalu berubah sesuai dengan kondisi terakhir pesawat - misal: apabila penerbangan telah menerima est maka field ini akan berisi nilai est atau selanjutnya - ketika penerbangan menerima waktu blok maka nilai field ini digantikan dengan nilai blok, dan seterusnya - berlaku baik penerbangan keberangkatan maupun kedatangan. - * - 31 - desk_open - Waktu check in dimulai (waktu lokal) - 2017-10-13T12:54:14.686927+07:00 * - 32 - desk_close - Waktu checkin close (waktu lokal) - 2017-10-13T13:58:19.869427+07:00 * - 33 - desks_custom - Daftar id meja checkin custom (special desk) pada FIDS - [“4”, “5”] * - 34 - ap - kode local airport (ICAO) - WARQ * - 35 - complete - kelengkapan data waktu blok, parking stand dan connect (readonly) - bernilai "true" atau "false" - bernilai true jika dan hanya jika data waktu blok dan parking stand terisi, serta connected flight (readonly) - true * - 36 - codeshare - nomor penerbangan untuk penerbangan yang memiliki lebih dari satu callsign - NIH221 * - 37 - noopr - Jika pesawat tidak beroperasi akan memiliki nilai TRUE dan jika beroperasi akan memiliki nilai FALSE - false * - 38 - terminal - terminal yang digunakan seperti: 1 untuk terminal 1, 2 untuk terminal 2, I untuk terminal internasional, atau yang lain - 1 * - 39 - key - Kode unik untuk setiap penerbangan (readonly), - rangkaian key berisi informasi "" - WARQA2020091703BTK7368 - WARQ = Local Airport - A = Arrival - 20200917 = 17 September 2020 - 03 = Jam (UTC) - BTK7368 = callsign * - 40 - runway - nomor runway yang digunakan - 27 * - 41 - modified - Waktu terakhir modifikasi data penerbangan (readonly) - 2016-01-30T00:07:00.418735Z * - 42 - airport_name - lokasi bandara (kota) - kupang * - 43 - closed_opr - close operasional yang biasanya digunakan untuk unit AMC - jika nilainya true berarti penerbangan telah di tutup - jika false berarti penerbangan masih berlangsung - false * - 44 - fstat - Flight Status - NML: Normal - NOP: No Operate - CNL: Canceled - RTA: Return to apron - RTB: Return to base - DVT: Diverted - REP: Reposisi - CRG: Cargo - LCL: Local flight - MIL: Military - VIP: VIP - TRN: Training - GOV: Goverment - TST: Test Flight - NML * - 45 - bag_first - Waktu pertama memasuki konveyor belt (waktu lokal) - 2017-10-13T12:54:14.686927+07:00 * - 46 - bag_last - Waktu terakhir memasuki konveyor belt (waktu lokal) - 2017-10-13T13:24:14.667927+07:00 * - 47 - gate_open - Waktu pintu keberangkatan (gate) dibuka (waktu lokal) - 2017-10-13T12:54:14.686927+07:00 * - 48 - gate_close - Waktu pintu keberangkatan (gate) ditutup (waktu lokal) - 2017-10-13T12:54:14.686927+07:00 * - 49 - callsign_2 - Nomor penerbangan dengan kode IATA - GA-123 * - 50 - note - catatan penerbangan - * - 51 - ftype - tipe penerbangan - S : Schedule - N : Non Schedule - M : Military - G : General Aviation - X : Special Ops - E : Extra Flight - N * - 52 - delay - Keterlambatan dalam menit (readonly) - 8 * - 53 - delay_level - level keterlambatan (readonly) - A : jika keterlambatan <= 30 menit - B : jika keterlambatan <= 60 menit - C : jika keterlambatan <= 120 menit - D : jika keterlambatan <= 180 menit - E : jika keterlambatan <= 240 menit - F : jika keterlambatan tak terhinga - * - 54 - status_label - status penerbangan (readonly) - contoh: Check in Open, Landed, Departed, No Operate - No operate * - 55 - diverted - Kode ICAO bandara asal flight divert - WARR * - 56 - first_block - Waktu pertama block (readonly) - 2017-10-13T12:54:14.686927+07:00 * - 57 - airports3 - Kode IATA bandara (read_only) - merupakan bandara tujuan untuk flight departure (read_only) - merupakan bandara asal untuk arrival (read_only) - jika penerbangan transit maka kode dapat dipisahkan dengan “,” koma : “AKL, SUB” (tujuan 1= AKL) - SUB * - 58 - bridge_dock - waktu aviobridge docking. - 2017-10-13T12:54:14.686927+07:00 * - 59 - circ - jumlah penerbangan circle, biasanya untuk pesawat latih (TNI) - 5 * - 60 - bridge_undock - waktu aviobridge undocking - 2017-10-13T12:54:14.686927+07:00 * - 61 - ok - Status verifikasi data penerbangan - bernilai true jika telah terkonfirmasi - bernilai false jika belum terkonfirmasi - true * - 62 - via1 - via1 - * - 63 - via2 - via2 - * - 64 - via3 - via3 - * - 65 - key_v2 - key_v2 - * - 66 - desks_range - - * - 67 - old_bay - history perubahan nomor parking stand - A05 * - 68 - pk - alias dari id - * - 69 - arr_key - arrival key, Kode unik untuk pasangan penerbangan departure - akan terisi jika ad = departure, dan flight sudah connect - WADDA2014123120CES5029 * - 70 - taxi_time - durasi taxi time (second) - 420 * - 71 - est_bridge_dock - waktu estimasi docking - 2014-12-31T15:42:00Z * - 72 - est_bridge_undock - waktu estimasi undocking - 2014-12-31T16:00:00Z * - 73 - est_desk_open - waktu estimasi desk open - 2014-12-31T19:03:00Z * - 74 - est_desk_close - waktu estimasi desk close - 2014-12-31T21:18:00Z * - 75 - est_bag_first - waktu estimasi first baggage - * - 76 - est_bag_last - waktu estimasi last baggage - * - 77 - est_gate_open - waktu estimasi gate open - 2014-12-31T21:40:00Z * - 78 - est_gate_close - waktu estimasi gate close - 2014-12-31T22:00:00Z * - 79 - est_block - waktu estimasi block - merupakan waktu estimasi block on untuk flight arrival - merupakan waktu estimasi block off untuk flight departure - 2014-12-31T16:10:00Z * - 80 - est_info - estimate yang digunakan oleh user info (waktu lokal) - merupakan Estimate Time Departure (ETD) untuk penerbangan departure (waktu lokal) - merupakan Estimate Time Arrival (ETA) untuk penerbangan arrival (waktu lokal) - 2017-10-13T12:54:14.686927+07:00 * - 81 - est_taxi_time - estimasi durasi taxi time (menit) - default = 7 menit - 7 * - 82 - flag - - * - 83 - nearest_gate - lokasi gate terdekat, relatif terhadap parking stand - B09 * - 84 - nearest_bay - lokasi bay terdekat, relatif terhadap gate - A05 * - 85 - free_text_status - - * - 86 - gate_change_pc - Gate Change Post Calculation (menit), berkaitan dengan KPI - * - 87 - gate_change_rc - Gate Change Real Calculation (menit), berkaitan dengan KPI - * - 88 - gate_change_pcr - Gate Post Change Revise, boolean (true and false) - true * - 89 - gate_change_rcr - Gate Relative Change Revise, boolean (true and false) - true * - 90 - gate_change_reason - gate change reason - * - 91 - gate_change_remark - gate change remark - * - 92 - belt_change_pc - Belt Change Post Calculation (menit), berkaitan dengan KPI - * - 93 - belt_change_rc - Belt Change Real Calculation (menit), berkaitan dengan KPI - * - 94 - belt_change_pcr - Belt Post Change Revise, boolean (true and false) - * - 95 - belt_change_rcr - Belt Relative Change Revise, boolean (true and false) - * - 96 - belt_change_reason - belt change reason - * - 97 - belt_change_remark - belt change remark - * - 98 - bay_change_pc - Bay Change Post Calculation (menit), berkaitan dengan KPI - * - 99 - bay_change_rc - Bay Change Real Calculation (menit), berkaitan dengan KPI - * - 100 - bay_change_pcr - Bay Post Change Revise, boolean (true and false) - true * - 101 - bay_change_rcr - Bay Relative Change Revise, boolean (true and false) - true * - 102 - bay_change_reason - bay change reason - * - 103 - bay_change_remark - bay change remark - * - 104 - bridge_change_pc - bridge Change Post Calculation (menit), berkaitan dengan KPI - * - 105 - bridge_change_pcr - bridge Post Change Revise, boolean (true and false) - * - 106 - bridge_change_reason - bridge change reason - * - 107 - bridge_change_remark - bridge change remark - * - 108 - warnings - remark warning, misal ketika petugas tidak mengisi data undocking - Undocking time is empty * - 109 - number_of_desk - - * - 110 - reposition - jumlah reposisi (berapa kali) - 1 * - 111 - sec - watu second call - 2022-08-10T11:12:18.474921+08:00 * - 112 - lac - waktu last call - 2022-08-10T11:12:18.474921+08:00 Filter Data API Flight ---------------------- Filter API flight pada inalix apps meliputi: .. list-table:: Filter Field API Flight :widths: 8 32 60 :header-rows: 1 * - No. - Filter field - Keterangan * - 1 - ap - menampilkan data menurut field "ap" sesuai dengan Field * - 2 - callsign - menampilkan data menurut field "callsign" sesuai dengan Field * - 3 - opr - menampilkan data menurut field "opr" sesuai dengan Field * - 4 - ad - menampilkan data menurut field "ad" sesuai dengan Field * - 5 - scope - menampilkan data menurut field “scope” sesuai dengan Field * - 6 - new_time - menampilkan data menurut field “new_time” sesuai dengan Field * - 7 - closed - menampilkan data menurut field “closed” sesuai dengan Field * - 8 - datehour - menampilkan data menurut field “datehour” sesuai dengan Field * - 9 - opr_closed - menampilkan data menurut operasional pesawat dengan nilai false apabila pesawat masih beroperasi dan true apabila sudah selesai beroperasi (baik arrival dan departure) * - 10 - key - menampilkan data menurut field “key” sesuai dengan Field * - 11 - bay - menampilkan data menurut field “bay” sesuai dengan Field * - 12 - new_time_gte - menampilkan data menurut field “new_time” pada Field yang lebih dari sama dengan nilai yang dimasukan - dengan menggunakan ISO standar 8601, maka filter "new_time_gte=2016-01-01T01:00:00+07:00" akan memfilter penerbangan mulai 1 Desember 2016 00:00 sampai saat ini * - 13 - new_time_lte - menampilkan data menurut field “new_time” pada Field yang sama dengan atau kurang dari nilai yang dimasukan - dengan menggunakan ISO standar 8601, maka filter "new_time_lte=2015-01-01T01:00:00+07:00" akan memfilter penerbangan sebelum 1 Desember 2016 00:00 sampai tanggal 1 Desember 2016 * - 14 - search - menampilkan data sesuai field “callsign” sesuai Field dan input ini tidak case-sensitive * - 15 - closed_opr - menampilkan data sesuai field "closed_opr" sesuai dengan Field - flight arrival sudah selesai block on - flight departure sudah selesai take off * - 16 - gate - menampilkan data menurut field “gate” sesuai dengan Field * - 17 - belt - menampilkan data menurut field “belt” sesuai dengan Field * - 18 - status - menampilkan data menurut field “status” sesuai dengan Field * - 19 - status_in - menampilkan data menurut field “status_in” sesuai dengan Field * - 20 - status_not_in - menampilkan data menurut field “status_not_in” sesuai dengan Field * - 21 - terminal - menampilkan data menurut field “terminal” sesuai dengan Field * - 22 - est - menampilkan data menurut field “est” sesuai dengan Field * - 23 - ok - menampilkan data menurut field “ok” sesuai dengan Field * - 24 - delay_level - Menampilkan fligth berdasarkan delay level * - 25 - delay_level_in - Menampilkan fligth berdasarkan delay level, bisa lebih dari satu, misal, "delay_level_in=A,B,C" * - 26 - block_is_null - boolean yes or no * - 27 - dep_block_isnull - boolean yes or no * - 28 - act_isnull - boolean yes or no * - 29 - gate_post_revised - menampilkan data menurut field “gate_post_revised” sesuai dengan Field * - 30 - gate_real_revised - menampilkan data menurut field “gate_real_revised” sesuai dengan Field * - 31 - belt_post_revised - menampilkan data menurut field “belt_post_revised” sesuai dengan Field * - 32 - belt_real_revised - menampilkan data menurut field “belt_real_revised” sesuai dengan Field * - 33 - bay_post_revised - menampilkan data menurut field “bay_post_revised” sesuai dengan Field * - 34 - bay_real_revised - menampilkan data menurut field “bay_real_revised” sesuai dengan Field * - 35 - bridge_usage_post_revised - menampilkan data menurut field “bridge_usage_post_revised” sesuai dengan Field * - 36 - credit - menampilkan data menurut field “credit/cash” sesuai dengan Field * - 37 - not_operating - menampilkan data menurut field “not_operating” sesuai dengan Field * - 38 - modified_gte - * - 39 - modified_lte - * - 40 - ftype - * - 41 - admin_filter_by_status - * - 42 - filter_bay - * - 43 - order_by - * - 44 - ndh_filter - * - 45 - daily_rotation - * - 46 - bay_is_null - * - 47 - schedule_lt - * - 48 - is_null - isnull = bay : maka akan menampilkan semua data penerbangan dengan bay bernilai null (kosong) - isnull = !bay : maka akan menampilkan semua data penerbangan dengan bay tidak bernilai null (kosong) - menampilkan data "null" menurut resouce: bay, gate, belt * - 49 - block_gte - menampilkan data menurut field “block” pada Field yang lebih dari sama dengan nilai yang dimasukan - dengan menggunakan ISO standar 8601, maka filter "block_gte=2016-01-01T01:00:00+07:00" akan memfilter penerbangan dengan waktu block terakhir mulai 1 Desember 2016 00:00 sampai saat ini * - 50 - block_lte - menampilkan data menurut field “block” pada Field yang sama dengan atau kurang dari nilai yang dimasukan - dengan menggunakan ISO standar 8601, maka filter "_lte=2015-01-01T01:00:00+07:00" akan memfilter penerbangan dengan waktu blok terakhir sebelum 1 Desember 2016 00:00 sampai tanggal 1 Desember 2016 * - 51 - reschedule_year - menampilkan data menurut field “reschedule_year” sesuai dengan Field * - 52 - reschedule_month - menampilkan data menurut field “reschedule_month” sesuai dengan Field * - 53 - reschedule_day - menampilkan data menurut field “reschedule_day” sesuai dengan Field Akses API flight melalui URL pada browser ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ URL-URL berikut dapat dimasukkan ke browser untuk mengakses data penerbangan: Akses API Flight ---------------- .. code-block:: http:///api/flight akan menampilkan data seperti berikut .. image:: img_api/api_flight1.png .. image:: img_api/api_flight2.png .. image:: img_api/api_flight3.png .. centered:: Akses API Flight Akses API Flight dengan Filter ------------------------------ - API Flight dengan filter digunakan agar daftar flight hanya memunculkan penerbangan tertentu - Lebih dari satu filter dapat dihubungkan dgn tanda '&' A. API Flight dengan single filter .. code-block:: http:///api/flight[?] contoh: http:///api/flight?ad=A akan menampilkan data seperti berikut .. image:: img_api/api_flight_single_filter.png .. centered:: Contoh Akses API Flight dengan Satu Filter B. API Flight dengan multifilter .. code-block:: http:///api/flight[?&] contoh: http:///api/flight?ad=A&opr_closed=true akan menampilkan data seperti berikut .. image:: img_api/api_flight_multi_filter.png .. centered:: Contoh Akses API Flight dengan Multiple Filter C. Daftar API Selain data penerbangan, data-data server lainnya seperti daftar maskapai, bandara, registrasi pesawat, status penerbangan, dan sebagainya, dapat ditelusuri menggunakan URL ini .. code-block:: python http:///api akan menampilkan semua data server, berupa url-url API seperti berikut .. image:: img_api/url_api_list1.png .. image:: img_api/url_api_list2.png .. centered:: Daftar API server Inalix