bulk-availability

متد GetAvailableOneWayFlights

این متد برای دریافت اطلاعات ظرفیت و نرخ پروازها براساس یک بازه تاریخی استفاده می شود.

کاربرد این متدها برای زمانی است که شما می خواهید پروازها را در سیستم خود Cache کنید و سپس درخواست های availability را از Cache خود پاسخ دهید.

با توجه به اینکه تجربه نشان داده است تغییرات ظرفیت و نرخ روی پروازهای تاریخ نزدیک (مثلا سه روز آینده) خیلی بیشتر از تغییرات پروازهای دورتر می باشد، بهینه ترین حالت این است که شما پروازهای تاریخ نزدیک را زود به زودتر از پروازهای تاریخ دورتر دریافت و به روزرسانی نمایید.

این متد فقط پروازهای OnTime را خروجی می دهد و پروازهایی که Close شده باشند یا ظرفیت آنها به پایان رسیده باشند در خروجی نمایش داده نمی شوند.

پروازهای دریافت شده را به دو روش می توانید در Cache خود ذخیره نمایید:


API Endpoint

POST https://{SupplierWebsiteUrl}/api/Partners/Flight/BulkAvailability/V18/GetAvailableOneWayFlights

Request Parameters


Sample Request

{
    "UserName": "testdev1",
    "Password": "25f9e794323b453885f5181f1b624d0b",
    "FromDate": "2026-05-27",
    "ToDate": "2026-05-30",
    "FlightSource": "All",
    "PageNumber": 1,
    "Culture": "fa-IR"
}

نمونه کد (pseudo code) دریافت پروازها و مدیریت Paging و حذف آیتم های تکراری

در ادامه، الگوریتم پیشنهادی جهت مدیریت صفحه‌بندی (Pagination) و فیلتر کردن پروازهای تکراری به صورت شبه‌کد ارائه شده است:

// 1. ساختار داده برای ذخیره دیتا نهایی
var allUniqueFlights = new List<Flight>();
var allUniqueRoundTripSearchRequireds = new List<RoundTripSearchRequired>();

// 2. استفاده از HashSet برای شناسایی آیتم های تکراری با سرعت O(1)
var processedFlightKeys = new HashSet<string>();
var processedRoundTripSearchRequiredKeys = new HashSet<string>();

int currentPage = 1;
bool hasNextPage = true;

while (hasNextPage)
{
    // ارسال درخواست به وب‌سرویس
    var response = GetAvailableOneWayFlights(pageNumber: currentPage);

    foreach (var flight in response.FlightList)
    {
        // ایجاد کلید یکتا: ترکیب فیلدهای مشخص شده
        string uniqueKey = $"{flight.FlightNumber}_{flight.DepartureDateTime.ToString("yyyyMMdd")}_{flight.Origin}_{flight.Destination}";

        // بررسی وجود پرواز در لیست پردازش شده
        if (!processedFlightKeys.Contains(uniqueKey))
        {
            // اگر تکراری نبود، به لیست نهایی اضافه کن
            allUniqueFlights.Add(flight);

            // کلید را به HashSet اضافه کن تا در تکرارهای بعدی شناسایی شود
            processedFlightKeys.Add(uniqueKey);
        }
    }

    foreach (var roundTripSearchRequired in response.RoundTripSearchRequiredList)
    {
        // ایجاد کلید یکتا: ترکیب فیلدهای مشخص شده
        string uniqueKey = $"{roundTripSearchRequired.Origin}_{roundTripSearchRequired.Destination}_{roundTripSearchRequired.Date}";

        // بررسی وجود آیتم در لیست پردازش شده
        if (!processedRoundTripSearchRequiredKeys.Contains(uniqueKey))
        {
            // اگر تکراری نبود، به لیست نهایی اضافه کن
            allUniqueRoundTripSearchRequireds.Add(roundTripSearchRequired);

            // کلید را به HashSet اضافه کن تا در تکرارهای بعدی شناسایی شود
            processedRoundTripSearchRequiredKeys.Add(uniqueKey);
        }
    }

    // به‌روزرسانی وضعیت صفحه‌بندی
    hasNextPage = response.HasNextPage;
    currentPage++;
}

Response Parameters


Sample Response

{
    "CurrencyCode": "IRR",
    "FlightList": [
        {
            "FlightNumber": "111",
            "DepartureDateTime": "2026-05-27 12:00",
            "Origin": "MHD",
            "Destination": "THR",
            "Aircraft": "100",
            "ArrivalDateTime": "2026-05-27 13:10",
            "Duration": 70,
            "Airline": "QB",
            "Remarks": "",
            "Source": "Owned",
            "Stop1": null,
            "Stop2": null,
            "FlightClassList": [
                {
                    "CabinType": "Economy",
                    "BookingCode": "Y",
                    "FareName": "API THR-KIH-37",
                    "AvailableSeat": 9,
                    "AdultFare": {
                        "BaseFare": 55782780.00,
                        "Tax": 0.0,
                        "TotalFare": 55782780.00,
                        "Commission": 0.0,
                        "Markup": 0.0,
                        "Payable": 55782780.00
                    },
                    "ChildFare": {
                        "BaseFare": 55782780.00,
                        "Tax": 0.0,
                        "TotalFare": 55782780.00,
                        "Commission": 0.0,
                        "Markup": 0.0,
                        "Payable": 55782780.00
                    },
                    "InfantFare": {
                        "BaseFare": 10000000.00,
                        "Tax": 0.0,
                        "TotalFare": 10000000.00,
                        "Commission": 0.0,
                        "Markup": 0.0,
                        "Payable": 10000000.00
                    },
                    "AdultFreeBaggage": {
                        "CheckedBaggageQuantity": 2,
                        "CheckedBaggageTotalWeight": 20,
                        "HandBaggageQuantity": 1,
                        "HandBaggageTotalWeight": 5
                    },
                    "ChildFreeBaggage": {
                        "CheckedBaggageQuantity": 2,
                        "CheckedBaggageTotalWeight": 20,
                        "HandBaggageQuantity": 1,
                        "HandBaggageTotalWeight": 5
                    },
                    "InfantFreeBaggage": {
                        "CheckedBaggageQuantity": 0,
                        "CheckedBaggageTotalWeight": 0,
                        "HandBaggageQuantity": 0,
                        "HandBaggageTotalWeight": 0
                    },
                    "CancelationPolicyList": [
                        {
                            "Culture": "en-US",
                            "Text": "The cancellation penalty from the time of ticket issuance until (12:00 noon), 3 days before the flight: 30%\r\nThe cancellation penalty from (12:00 noon), 3 days before the flight until (12:00 noon), 2 days before the flight: 40%\r\nThe cancellation penalty from (12:00 noon), 2 days before the flight until (12:00 noon), 1 days before the flight: 40%\r\nThe cancellation penalty from (12:00 noon), 1 days before the flight until 2 hours before the flight: 60%\r\nThe cancellation penalty from 2 hours before the flight onwards: 70% (No-Show)"
                        },
                        {
                            "Culture": "fa-IR",
                            "Text": "جريمه استرداد از زمان صدور بليت تا ساعت 12 ظهر 3 روز قبل از پرواز 30 درصد مي باشد.\r\nجريمه استرداد از ساعت 12 ظهر 3 روز قبل از پرواز تا ساعت 12 ظهر 2 روز قبل از پرواز 40 درصد مي باشد.\r\nجريمه استرداد از ساعت 12 ظهر 2 روز قبل از پرواز تا ساعت 12 ظهر 1 روز قبل از پرواز 40 درصد مي باشد.\r\nجريمه استرداد از ساعت 12 ظهر 1 روز قبل از پرواز تا 2 ساعت قبل از پرواز 60 درصد مي باشد.\r\nجريمه استرداد از 2 ساعت قبل از پرواز به بعد 70 درصد مي باشد (NoShow)."
                        }
                    ],
                    "PermittedNationalityList": ["All"],
                    "ProhibitedNationalityList": [],
                    "TemporaryProperty_DoNotUseIt_HasBookingPolicy": false
                }
            ]
        }
        // ... بیشتر پروازها
    ],
    "RoundTripSearchRequiredList": [
        {
            "Origin": "SAW",
            "Destination": "IKA",
            "Date": "2026-05-27"
        },
        {
            "Origin": "NJF",
            "Destination": "IKA",
            "Date": "2026-05-27"
        }
        // ... بیشتر مسیرها
    ],
    "HasNextPage": false
}