Developer Guide – Custom API Integration

(Flight Schedules Connector – FSC)

📌 1. Overview

FSC mendukung mode Custom API sehingga developer bisa menghubungkan jadwal penerbangan dari sistem internal bandara, maskapai, atau database khusus.

👉 Agar plugin FSC dapat membaca data dengan benar, API harus mengembalikan response dalam JSON format standar FSC.


🔑 2. Endpoint Requirements

  • Method: GET (disarankan) atau POST
  • Format Response: application/json
  • Structure: wajib mengandung key flights (array of objects)
  • Auth: bebas (bisa none, API key, Bearer token, Basic Auth, dsb.) → dikonfigurasi di Settings FSC

Example Endpoint

https://mydomain.com/api/flights?airport=CGK&type=arrivals

🗂️ 3. JSON Schema

{
"flights": [
{
"time": "2025-08-25T08:45:00Z",
"flight": "GA123",
"airline": "Garuda Indonesia",
"route": {
"from": {
"code": "CGK",
"name": "Soekarno-Hatta",
"city": "Jakarta"
},
"to": {
"code": "DPS",
"name": "Ngurah Rai",
"city": "Denpasar"
}
},
"gate": "A12",
"terminal": "2D",
"status": "DELAYED"
}
]
}

📋 4. Field Definition

Field Type Required Description
time string Waktu kedatangan/keberangkatan (ISO 8601, UTC disarankan)
flight string Nomor penerbangan (ex: GA123, SQ951)
airline string Nama maskapai
route.from object Info bandara asal (code, name, city)
route.to object Info bandara tujuan (code, name, city)
gate string Nomor gate
terminal string Terminal
status string Status penerbangan (lihat daftar di bawah)

Status yang dikenali FSC

  • ON TIME
  • DELAYED
  • CANCELED
  • BOARDING
  • LANDED

⚙️ 5. Authentication Options

  1. API Key (Query Param)

    https://mydomain.com/api/flights?airport=CGK&type=arrivals&apikey=YOUR_KEY
  2. API Key (Header)

    Authorization: ApiKey YOUR_KEY
  3. Bearer Token (JWT)

    Authorization: Bearer YOUR_JWT_TOKEN
  4. Basic Auth

    Authorization: Basic base64(username:password)

👉 FSC akan mengirim header sesuai setting yang dimasukkan user di Connector > API Key/Endpoint.


🧑‍💻 6. Example Implementations

PHP (Laravel/Lumen style)

header('Content-Type: application/json');

echo json_encode([
"flights" => [
[
"time" => "2025-08-25T09:30:00Z",
"flight" => "SQ951",
"airline" => "Singapore Airlines",
"route" => [
"from" => ["code" => "CGK", "name" => "Soekarno-Hatta", "city" => "Jakarta"],
"to" => ["code" => "SIN", "name" => "Changi Airport", "city" => "Singapore"] ],
"gate" => "C3",
"terminal" => "3",
"status" => "ON TIME"
] ] ]);


Python (Flask API)

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/api/flights')
def flights():
data = {
"flights": [
{
"time": "2025-08-25T10:15:00Z",
"flight": "JT567",
"airline": "Lion Air",
"route": {
"from": {"code": "SUB", "name": "Juanda", "city": "Surabaya"},
"to": {"code": "CGK", "name": "Soekarno-Hatta", "city": "Jakarta"}
},
"gate": "B4",
"terminal": "1A",
"status": "LANDED"
}
] }
return jsonify(data)

if __name__ == '__main__':
app.run(debug=True)


✅ 7. Best Practices

  • Gunakan ISO 8601 format untuk waktu (YYYY-MM-DDTHH:mm:ssZ).
  • Pastikan selalu mengembalikan array flights (walaupun kosong).
  • Status hanya pakai daftar resmi (ON TIME, DELAYED, dll).
  • Optimalkan API agar response time < 2 detik.
  • Jika tidak ada jadwal → return:
{ "flights": [] }

🚀 8. Testing

  1. Buat endpoint sesuai schema di atas.
  2. Masuk ke WordPress → Settings > Connector
  3. Pilih Provider = Custom API
  4. Masukkan Endpoint URL + API Key (jika perlu).
  5. Simpan → test via Shortcodes & Generator → cek Live Preview.