Concepts

Data model

Yayımlanan program nesneleri OpenAPI şemalarıyla birebir.

Server-to-server

ProgramListItem

FieldTypeDescription
id string required Firestore tour document id
programNumber integer | null required Program number shown as "No. N" in the agency panel. Unique per agency, assigned once when the program is created and never reused or changed. Always present; null for older programs without an assigned number. Same value on list and detail.
name string required
status string required Stable public lifecycle. Publishable programs are always active.
departureDate string | null optional Program start calendar date (YYYY-MM-DD, Europe/Istanbul)
returnDate string | null optional Program end calendar date (YYYY-MM-DD, Europe/Istanbul)
durationDays integer | null optional Inclusive calendar-day difference between departureDate and returnDate
duration Duration optional Days and nights when both travel dates exist
capacity Capacity required
currency string | null optional
category Category optional Display category
prices Prices required

ProgramDetail

ProgramListItem alanları artı:

FieldTypeDescription
description string | null optional Public program description
category Category optional Display category
departurePoint string | null optional Departure point text
hotels array<HotelStay> optional Hotel stays on the program
guides PublicGuides optional Public tanitim rehberleri (content.publicGuides). Operational staff is never exposed.
marketingTags array | null optional Public marketing labels
accommodation Accommodation optional Public stays plus accommodation description
transport Transport optional Public airline brands used by the program
media PublicMedia optional Public cover and gallery URLs
content PublicContent optional Public included/excluded services, itinerary, visits, and FAQ

Duration

FieldTypeDescription
days integer required Inclusive day count (same value as durationDays)
nights integer required Night count, max(0, days - 1)

PublicGuides

FieldTypeDescription
male PublicGuide optional
female PublicGuide optional

PublicGuide

FieldTypeDescription
name string optional Public guide display name
title string | null optional Optional public title (e.g. Rehber, Hanim Rehber)
photoUrl string | null optional Public photo URL from program tanitim content

Accommodation

FieldTypeDescription
stays array<HotelStay> optional Public hotel stays including starLevel when available
description string | null optional Public accommodation description

Transport

FieldTypeDescription
flights array<ProgramFlight> optional Assigned round-trip flight packages with public airline branding and leg details

AirlineBrand

FieldTypeDescription
code string required Public airline code
name string | null optional Public airline display name when available
logoUrl string | null optional Stable HTTPS URL for the airline SVG logo served from `https://sefera-api.web.app/v1/assets/airlines/{catalog-id}.svg` when the airline matches the Sefera canonical catalog (Turkish Airlines, AJet, Saudia, Pegasus). Returns `null` when the airline is unknown or no hosted logo exists — consumers must not render a broken image for `null`.

PublicMedia

FieldTypeDescription
coverUrl string | null optional Public cover image URL
galleryUrls array<string> optional Public gallery image URLs

PublicContent

FieldTypeDescription
programDescription string | null optional Public program description (also mirrored at top-level description on detail)
included array<string> optional Included services
excluded array<string> optional Excluded services
visits array<string> optional Public visit/place names
accommodationDescription string | null optional Public accommodation description
faq array<object> optional Public program FAQ
itinerary array<object> optional Public itinerary. Raw dailyPlan is never published.

ProgramListResponse

FieldTypeDescription
data array<ProgramListItem> required
meta object required

ProgramDetailResponse

FieldTypeDescription
data ProgramDetail required