DAL Travel Logo

📘 Documentație API Dal Travel

API pentru integrarea ofertelor de călătorie

Prezentare generală

API-ul Dal Travel oferă acces programatic la baza de date cu oferte disponibile pe platforma Dal Travel. Acesta expune două endpoint-uri publice, fără autentificare, care returnează liste paginate în format JSON: feed-ul complet de oferte și feed-ul pentru locuri disponibile.

Specificații OpenAPI

API-ul DAL Travel este documentat folosind standardul OpenAPI 3.0.3, oferind specificații complete pentru integrare și testare.

Fișiere disponibile

Caracteristici OpenAPI

Endpoint principal

https://rezervari.daltravel.ro/feed

Metodă: GET
Autentificare: Nu este necesară (endpoint public)
Format răspuns: JSON
Rate Limiting: Nu este aplicat (endpoint public)

Endpoint locuri disponibile

https://rezervari.daltravel.ro/feed/locuri-libere

Metodă: GET
Autentificare: Nu este necesară (endpoint public)
Format răspuns: JSON
Descriere: Returnează aceleași oferte paginate, dar cu informația agregată de disponibilitate prin câmpul locuriDisponibile în plecariActive[].

Parametri de interogare (Query Parameters)

Nume Tip Obligatoriu Valoare implicită Descriere Exemplu
page integer Nu 1 Pagina de rezultate (începe de la 1) page=2
limit integer Nu 10 Numărul maxim de oferte returnate per pagină (1-50) limit=20

Exemple de cerere:

# Cerere de bază GET https://rezervari.daltravel.ro/feed # Cu parametri de paginare GET https://rezervari.daltravel.ro/feed?page=2&limit=15 # Feed locuri disponibile GET https://rezervari.daltravel.ro/feed/locuri-libere?page=1&limit=20 ## Structura răspunsului (JSON) ### Răspuns de bază ```json { "offers": [ { "plecariActive": [ { "title": "Exemplu de titlu pentru ofertă de călătorie", "locuriDisponibile": 25, "partajeCountByGender": { "masculin": 12, "feminin": 13 }, "name": null, "deleted": null, "pdfUrl": "https://rezervari.daltravel.ro/uploads/pictures/exemplu_brochura.pdf", "listPhotoUrl": "https://rezervari.daltravel.ro/uploads/pictures/exemplu_imagine_lista.webp", "id": 1234567, "status": "active", "cancelDays1": 120, "cancelPercent1": 5, "cancelDays2": 90, "cancelPercent2": 10, "cancelDays3": 60, "cancelPercent3": 50, "cancelDays4": 30, "cancelPercent4": 100, "tagline": "Exemplu de tagline pentru ofertă", "orase": null, "introducere": "Text de introducere pentru ofertă...", "sub_intro": "Sub-introducere pentru ofertă...", "va_invitam": "Text de invitație...", "info_traseu": "Informații despre traseu...", "info_insotitor": "Însoțitor român și ghizi locali", "info_tarif": "\u003Cp\u003E\u003Cstrong\u003E1200 EURO / loc în cameră dublă; Supliment single: 300 EURO\u003C/strong\u003E\u003C/p\u003E", "obiective_natura": "Exemplu de obiective de natură, Parcul Natural, Rezervația Naturală", "obiective_arta": "Exemplu de obiective de artă...", "obiective_traditii": null, "obiective_distractii": null, "start_date": "2024-06-15T00:00:00+03:00", "end_date": "2024-06-25T00:00:00+03:00", "tarif_dubla_text": "1200 EURO", "tarif_euro": 1200, "reducere_euro": 50, "tarif_usd": 1300, "reducere_usd": 25, "tarif_ron": 6000, "reducere_ron": 250, "tarif_a_treia_text": "1000 EURO", "discount_a_treia_euro": 200, "discount_a_treia_usd": 220, "discount_a_treia_ron": 1000, "tarif_copil_extra_text": "800 EURO", "discount_copil_extra_euro": 400, "discount_copil_extra_usd": 440, "discount_copil_extra_ron": 2000, "supliment_single_text": "300 EURO", "supliment_single_euro": 300, "supliment_single_usd": 330, "supliment_single_ron": 1500, "tarif_grup_minim": "Informații despre tarifele pentru grupuri minime...", "nr_minim_turisti": 30, "taxeAeroportIntercontinentale": "Taxe aeroport intercontinentale: 150 EUR", "taxeAeroportLocale": "Taxe aeroport locale: 50 EUR", "tarif_observatii": "Observații despre tarife: prețurile pot varia în funcție de sezon", "nr_zile": "10", "sfaturi": "Sfaturi pentru turiști: aduceți haine potrivite pentru vreme, documente de identitate valide", "incluse": "Servicii incluse în preț...", "neincluse": "Servicii neincluse în preț...", "conditii": "Condiții generale...", "acte": "- paşaportul sau cartea de identitate în curs de valabilitate", "observatii": "Observații generale...", "days": [ { "id": 12345, "nr_zi": 1, "titlu": "Ziua 1 - Plecare din București", "masa": null, "cazare": "Hotel Exemplu 4* (sau similar 4*)", "zbor": null, "transport": "Avion, autocar", "obiective": "Obiectiv turistic 1\r\nObiectiv turistic 2\r\nObiectiv turistic 3\r\nObiectiv turistic 4\r\nObiectiv turistic 5", "optionale": null, "descriere": "Descrierea zilei...", "pictures": [ { "url": "https://rezervari.daltravel.ro/uploads/pictures/exemplu_zi_imagine.webp" } ] }, { "id": 12346, "nr_zi": 2, "titlu": "Ziua 2 - Vizitare oraș de destinație", "masa": "Mic dejun", "cazare": "Hotel Exemplu 4* (sau similar 4*)", "zbor": null, "transport": "Autocar", "obiective": "Centrul istoric\r\nMuzeul local\r\nPiața centrală", "optionale": null, "descriere": "Descrierea zilei...", "pictures": [ { "url": "https://rezervari.daltravel.ro/uploads/pictures/exemplu_zi_imagine.webp" } ] } ], "brief_transport": "Avion\r\nAutocar\r\nFerry-boat", "brief_cazare": "2 nopți în orașul A\r\n2 nopți în orașul B\r\n2 nopți în orașul C\r\n2 nopți în orașul D\r\n2 nopți în orașul E", "brief_mese": "Mic dejun: 8", "brief_ghizi": "Însoțitor DAL Travel\r\nGhizi locali", "brief_marime_grup": "30", "pdf": "exemplu_brochura_oferta.pdf", "coords": [ { "coords": "(44.4268, 26.1025)", "descriere": "", "nr": 0, "ordine": 1 }, { "coords": "(48.8566, 2.3522)", "descriere": "", "nr": 1, "ordine": 2 }, { "coords": "(41.9028, 12.4964)", "descriere": "", "nr": 2, "ordine": 3 }, { "coords": "(40.4168, -3.7038)", "descriere": "", "nr": 3, "ordine": 4 }, { "coords": "(50.0755, 14.4378)", "descriere": "", "nr": 4, "ordine": 5 } ], "optionals": [ { "id": 1, "name": "Excursie opțională", "tarif_euro": 50, "tarif_usd": 55, "tarif_ron": 250, "deplasare": false, "must": false, "available": true } ] } ], "imageUrl": "", "id": 1234, "name": "Exemplu de ofertă de călătorie", "zone": "europa", "pictures": [ { "url": "https://rezervari.daltravel.ro/uploads/pictures/exemplu_imagine1.webp" }, { "url": "https://rezervari.daltravel.ro/uploads/pictures/exemplu_imagine2.webp" }, { "url": "https://rezervari.daltravel.ro/uploads/pictures/exemplu_imagine3.webp" }, { "url": "https://rezervari.daltravel.ro/uploads/pictures/exemplu_imagine4.webp" }, { "url": "https://rezervari.daltravel.ro/uploads/pictures/exemplu_imagine5.webp" } ], "coords": [ { "coords": "(44.4268, 26.1025)", "descriere": "București", "nr": 0, "ordine": 1 }, { "coords": "(48.8566, 2.3522)", "descriere": "Paris", "nr": 1, "ordine": 2 } ], "continents": [ { "name": "Europa" } ], "countries": [ { "name": "Franța" }, { "name": "Italia" }, { "name": "Spania" }, { "name": "Germania" }, { "name": "Austria" } ], "cities": [ { "name": "Paris" }, { "name": "Roma" }, { "name": "Madrid" } ] } ], "currentPage": 1, "lastPage": 5 }

Descriere detaliată a câmpurilor

Câmpuri la nivel de răspuns principal

Câmp Tip Descriere
offers array Lista de oferte de călătorie disponibile
currentPage integer Pagina curentă din rezultate
lastPage integer Numărul total de pagini disponibile

Câmpuri la nivel de ofertă (offers[])

Câmp Tip Obligatoriu Descriere
id integer Da Identificator unic al ofertei
name string Da Numele ofertei (ex: "5 Capitale Baltice")
zone string Da Zona geografică: europa, asia, america, africa, oceania
imageUrl string Nu URL-ul imaginii principale a ofertei
pictures array Nu Lista de imagini asociate ofertei
coords array Nu Coordonatele geografice ale destinațiilor
continents array Nu Lista continentelor vizitate
countries array Da Lista țărilor vizitate în cadrul ofertei
cities array Nu Lista orașelor vizitate
plecariActive array Da Lista plecărilor active pentru această ofertă

Câmpuri în countries[]

Câmp Tip Descriere
name string Numele țării (ex: "România", "Franța")

Câmpuri în continents[]

Câmp Tip Descriere
name string Numele continentului (ex: "Europa", "Asia")

Câmpuri în cities[]

Câmp Tip Descriere
name string Numele orașului (ex: "Paris", "Roma")

Câmpuri în pictures[]

Câmp Tip Descriere
url string URL-ul complet al imaginii

Câmpuri în plecariActive[] (plecări active)

Câmp Tip Obligatoriu Descriere
id integer Da Identificator unic al plecării
title string Da Titlul complet al plecării
locuriDisponibile integer Da Numărul de locuri libere disponibile
status string Da Statusul plecării: active, inactive
pdfUrl string Nu URL-ul către broșura PDF a plecării
listPhotoUrl string Nu URL-ul imaginii pentru listare
start_date string Da Data de plecare în format ISO 8601
end_date string Da Data de întoarcere în format ISO 8601
nr_zile string Da Numărul de zile ale călătoriei
tarif_euro number Da Prețul per persoană în cameră dublă (EUR)
tarif_dubla_text string Da Prețul per persoană în cameră dublă (text formatat)
supliment_single_euro number Nu Suplimentul pentru cameră single (EUR)
supliment_single_text string Nu Suplimentul pentru cameră single (text formatat)
nr_minim_turisti integer Da Numărul minim de turiști pentru a se desfășura plecarea
partajeCountByGender object Da Statistici de participare pe gen
name string Nu Numele plecării (poate fi null)
deleted string Nu Data ștergerii (dacă este ștearsă)
cancelDays1 integer Nu Numărul de zile pentru prima etapă de anulare
cancelPercent1 integer Nu Procentul de penalizare pentru prima etapă de anulare
cancelDays2 integer Nu Numărul de zile pentru a doua etapă de anulare
cancelPercent2 integer Nu Procentul de penalizare pentru a doua etapă de anulare
cancelDays3 integer Nu Numărul de zile pentru a treia etapă de anulare
cancelPercent3 integer Nu Procentul de penalizare pentru a treia etapă de anulare
cancelDays4 integer Nu Numărul de zile pentru a patra etapă de anulare
cancelPercent4 integer Nu Procentul de penalizare pentru a patra etapă de anulare
tagline string Nu Sloganul ofertei
orase string Nu Lista orașelor vizitate
introducere string Nu Textul de introducere al ofertei
sub_intro string Nu Sub-introducerea ofertei
va_invitam string Nu Textul de invitație
info_traseu string Nu Informații despre traseu
info_insotitor string Nu Informații despre însoțitor
info_tarif string Nu Informații detaliate despre tarife (HTML)
obiective_natura string Nu Obiective turistice de natură
obiective_arta string Nu Obiective turistice de artă
obiective_traditii string Nu Obiective turistice tradiționale
obiective_distractii string Nu Obiective turistice de distracție
reducere_euro number Nu Reducerea aplicată în EUR
tarif_usd number Nu Prețul în USD
reducere_usd number Nu Reducerea aplicată în USD
tarif_ron number Nu Prețul în RON
reducere_ron number Nu Reducerea aplicată în RON
tarif_a_treia_text string Nu Prețul pentru a treia persoană în cameră (text)
discount_a_treia_euro number Nu Reducerea pentru a treia persoană în EUR
discount_a_treia_usd number Nu Reducerea pentru a treia persoană în USD
discount_a_treia_ron number Nu Reducerea pentru a treia persoană în RON
tarif_copil_extra_text string Nu Prețul pentru copilul suplimentar (text)
discount_copil_extra_euro number Nu Reducerea pentru copilul suplimentar în EUR
discount_copil_extra_usd number Nu Reducerea pentru copilul suplimentar în USD
discount_copil_extra_ron number Nu Reducerea pentru copilul suplimentar în RON
supliment_single_usd number Nu Suplimentul single în USD
supliment_single_ron number Nu Suplimentul single în RON
tarif_grup_minim string Nu Informații despre tarifele pentru grupuri minime
taxeAeroportIntercontinentale string Nu Taxe aeroport intercontinentale
taxeAeroportLocale string Nu Taxe aeroport locale
tarif_observatii string Nu Observații despre tarife
sfaturi string Nu Sfaturi pentru turiști
incluse string Nu Servicii incluse în preț
neincluse string Nu Servicii neincluse în preț
conditii string Nu Condiții generale
acte string Nu Acte necesare pentru călătorie
observatii string Nu Observații generale
days array Da Lista zilelor din itinerar
brief_transport string Nu Rezumat despre mijloacele de transport
brief_cazare string Nu Rezumat despre cazare
brief_mese string Nu Rezumat despre mese
brief_ghizi string Nu Rezumat despre ghizi
brief_marime_grup string Nu Rezumat despre mărimea grupului
pdf string Nu Numele fișierului PDF
coords array Nu Coordonatele geografice ale destinațiilor
optionals array Nu Lista serviciilor opționale disponibile pentru această plecare

Câmpuri în optionals[] (opțiuni plecare)

Câmp Tip Descriere
id integer Identificator unic al opționalului
name string Numele opționalului
tarif_euro integer Tarif în EUR (poate fi null)
tarif_usd integer Tarif în USD (poate fi null)
tarif_ron integer Tarif în RON (poate fi null)
deplasare boolean Indică dacă opționalul presupune deplasare
must boolean Indică dacă opționalul este obligatoriu
available boolean Indică dacă opționalul este disponibil

Câmpuri în partajeCountByGender

Câmp Tip Descriere
masculin integer Numărul de participanți de gen masculin
feminin integer Numărul de participanți de gen feminin

Câmpuri în days[] (zilele itinerarului)

Câmp Tip Obligatoriu Descriere
id integer Da Identificator unic al zilei
nr_zi integer Da Numărul zilei în itinerar
titlu string Da Titlul zilei
masa string Nu Tipul de masă inclusă (ex: "Mic dejun", "Pranz", "Cina")
cazare string Nu Detalii despre cazare
zbor string Nu Detalii despre zbor
transport string Nu Mijloacele de transport folosite
obiective string Nu Lista obiectivelor turistice
optionale string Nu Activități opționale
descriere string Nu Descrierea detaliată a zilei
pictures array Nu Imagini asociate zilei

Câmpuri în coords[] (coordonate geografice)

Câmp Tip Descriere
coords string Coordonatele în format "(latitudine, longitudine)"
descriere string Descrierea locației
nr integer Numărul de ordine al coordonatei
ordine integer Ordinea în traseu

Notă: Câmpul coords poate apărea la două nivele:

Exemple de utilizare

1. Obținerea tuturor ofertelor (prima pagină)

curl "https://rezervari.daltravel.ro/feed"

2. Obținerea a 20 de oferte de pe pagina 2

curl "https://rezervari.daltravel.ro/feed?page=2&limit=20"

Limitări și restricții

Rate Limiting

Limitări de paginare

Formatul datelor

Observații importante

Câmpuri care pot fi null

Actualizarea datelor

Coduri de eroare posibile

Cod HTTP Descriere Cauza posibilă Soluție
200 OK – Răspuns cu succes - -
400 Bad Request – Parametru invalid limit > 50 sau page < 1 Verificați valorile parametrilor
404 Not Found – Nu există date disponibile Pagina solicitată nu există Verificați numărul paginii
500 Internal Server Error Eroare pe server Încercați din nou mai târziu
503 Service Unavailable Server temporar indisponibil Încercați din nou în câteva minute

Suport și contact

Pentru întrebări tehnice sau probleme cu API-ul, contactați echipa de dezvoltare Dal Travel.

Endpoint-ul este destinat utilizării publice pentru integrarea ofertelor DalTravel în aplicații externe.