Etkinliklerevents
/api/v1/imports/eventsBir kez oluşturulur: aynı external_id ile tekrar gönderim kopya açmaz, atlanır.
Uç noktalar
- validatePOST /api/v1/imports/events/validate
- importPOST /api/v1/imports/events
- feedGET /api/v1/imports/events/records
- read_backGET /api/v1/imports/events/records/{external_id}
Yeni bir satırda bulunmalı
title
Fatura bilgisiyle örnek istek (cari anahtarı olmadan)
curl -X POST 'https://YOUR-CELL.lydira.com/api/v1/imports/events/validate' \
-H 'Authorization: Bearer sek_YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: 8f14e45f-ea2c-4f33-9a3b-6d0c1b7e5a90' \
-d '{
"source_system": "crm",
"rows": [
{
"external_id": "EVENT-1001-B",
"title": "Cappadocia Highlights",
"event_type": "activation",
"venue_name": "Venue name",
"venue_address": "Venue address",
"city": "City",
"country_code": "TR",
"starts_on": "2026-03-14",
"ends_on": "2026-03-18",
"attendee_count": 2,
"currency": "EUR",
"crew_call_at": "2026-03-14T09:30:00+03:00",
"status": "draft",
"notes": "Imported from the source system.",
"rate_basis": "net",
"margin_mode": "percent",
"option_date": "2026-03-20T18:00",
"transaction_date": "2026-03-14",
"invoice_date": "2026-03-18",
"cost_lines": [
{
"kind": "venue_hire",
"amount": "1250.00",
"label": "Imported line",
"currency": "EUR",
"vat_rate": "20",
"tax_inclusive": true,
"quantity": 1
}
],
"sell_lines": [
{
"kind": "package_price",
"amount": "1250.00",
"label": "Imported line",
"currency": "EUR",
"vat_rate": "20",
"tax_inclusive": true,
"quantity": 1
}
],
"bill_to_legal_name": "Lovelace Seyahat A.Ş.",
"bill_to_tax_number": "1234567890",
"bill_to_tax_office": "Beşiktaş",
"bill_to_address_line": "Nispetiye Cad. No:12",
"bill_to_city": "İstanbul",
"bill_to_country": "TR"
}
]
}'Alanlar(41)
external_idstringtitlestringzorunluevent_typetaxonomyHesabınızın event_type listesi; başlangıç değerleri:
activationcongresslaunchincentivegalaroadshowconferenceteam_buildingexhibitionconcertweddingothervenue_namestringvenue_addressstringcitystringcountry_codestringISO-2 (TR, DE)
starts_ondateends_ondateattendee_countintegercurrencycurrencycustomer_external_idreferencecrew_call_atdatetimewhen the crew is called to the venue
custom_fieldsobjectthe account's own fields on the event, by key
statusenumŞunlardan biri:
draftbriefquotingquotedrevisingoptionconfirmedin_progresscompletedlostcancellednotesstringrate_basisenumnet ⇒ cost typed / sell derived; commissionable ⇒ the reverse
Şunlardan biri:
netcommissionablemargin_modeenumpercent ⇒ the margin was typed as a %; amount ⇒ as a flat figure
Şunlardan biri:
percentamountoption_datedatetransaction_datedateişlem tarihi — the FX anchor for every cost line
invoice_datedatecost_linesobject[]cost-side pricing lines for the "event" pricing context
Her öğe
kindstringzorunluUygulamanın kullandığı değerler:
venue_hirecrew_labourper_diemproductioncateringaccommodationtransportbrandingphoto_videopermitmedical_standbyservice_feesupplier_refundinsurance_premiumamountmoneyzorunlulabelstringcurrencycurrencyvat_ratedecimalpercent (20 ⇒ 20% KDV); omit to take the kind's default
tax_inclusivebooleantrue ⇒ the amount includes VAT. A hotel stay or a charter takes one VAT mode: the lines' flags decide it, lines stating both are refused, and every line follows the booking's mode afterwards
quantityinteger
sell_linesobject[]sell-side pricing lines for the "event" pricing context
Her öğe
kindstringzorunluUygulamanın kullandığı değerler:
package_pricemarkupservice_feesupplier_commissioncancellation_feeinsurance_premiumdiscountrefund_allowancevenue_hirecrew_labourper_diemproductioncateringaccommodationtransportbrandingphoto_videopermitmedical_standbysupplier_refundamountmoneyzorunlulabelstringcurrencycurrencyvat_ratedecimalpercent (20 ⇒ 20% KDV); omit to take the kind's default
tax_inclusivebooleantrue ⇒ the amount includes VAT. A hotel stay or a charter takes one VAT mode: the lines' flags decide it, lines stating both are refused, and every line follows the booking's mode afterwards
quantityinteger
service_feemoneythe agency's fee for the whole booking, in its currency; split across the guests like the booking form's. Sent, the account's service-fee rules write nothing
service_fee_percentdecimalthe fee as a percentage (0-100) of the booking's sale before fee and discount, instead of
service_fee; split like itservice_fee_vat_ratedecimalthe fee's VAT, percent (0 ⇒ exempt); omit it and the law decides, else the seller's standard rate
service_fee_waivedbooleantrue: the account's service-fee rules write no fee on this booking
bill_to_typeenumomit to infer: a legal name or a 10-digit tax number ⇒ corporate
Şunlardan biri:
corporateindividualbill_to_legal_namestringbill_to_tax_numbertax_numberPIIVKN for a corporate payer, TCKN for an individual; matched digits-only
bill_to_tax_officestringbill_to_passport_numberstringPIIindividual only; used when there is no TCKN
bill_to_first_namestringPIIbill_to_last_namestringPIIbill_to_emailemailPIIstored on a NEW cari; never used to match
bill_to_phonephonePIIstored on a NEW cari; never used to match
bill_to_address_linestringPIIbill_to_districtstringPIIbill_to_citystringPIIbill_to_zipstringPIIbill_to_countrystringISO-2 code, e.g. TR
Referanslar
customer_external_id→ customers · eşleşme external_id, email · bulunamazsa skip
Hesabınızın ek alanları (custom_fields)
Her acente Ayarlar → Ek alanlar'dan kendi alanlarını ekler: proje kodu, seyahat nedeni, sicil numarası gibi. Alanlar hesaptan hesaba değiştiği için bu sayfa onları listeleyemez. Entegrasyonunuz bunları API'den öğrenir.
GET /api/v1/imports/entities/{key} yanıtındaki custom_fields, anahtarınızın bağlı olduğu hesabın bu kayıt türündeki alanlarını verir: kaydın kendisi için record, her yolcu ya da misafir için traveler. Her alan satırda gönderilecek key'i, type'ını, zorunlu olup olmadığını (required), hangi carilere uygulandığını (applies_to) ve seçmeli bir alansa options listesini taşır. Eşlemeyi kurarken okuyun; acente bir alanı değiştirdiğini söylediğinde yeniden okuyun. Bu, hesabın canlı listesidir.
İstek · hesabın alanları
curl -X GET 'https://YOUR-CELL.lydira.com/api/v1/imports/entities/events' \
-H 'Authorization: Bearer sek_YOUR_API_KEY'{
"key": "events",
"custom_fields": {
"record": [
{
"key": "project_code",
"label": "Project code",
"type": "text",
"required": "always",
"applies_to": "all"
},
{
"key": "trip_reason",
"label": "Trip reason",
"type": "select",
"required": "listed_customers",
"applies_to": "listed_customers",
"options": [
{
"value": "meeting",
"label": "Meeting"
},
{
"value": "fair",
"label": "Trade fair"
}
],
"customers": [
{
"id": "9d2f7c3a-1b4e-4a7d-8e51-2c0f6b9a4d18",
"external_id": "CUST-17",
"required": true
}
]
}
],
"traveler": []
}
}Her tip ne alır
| tip | satırdaki değer |
|---|---|
text | "PRJ-2026-001" |
long_text | "Fair delegation, second group" |
number | 12.5 |
date | "2026-03-14" |
boolean | true |
select | "meeting" |
multi_select | ["meeting", "fair"] |
number takes a number or a numeric string; date an ISO date; select one
option value (or its label); multi_select a list of them.
required ve applies_to
requiredneveralwayslisted_customerslisted_customers: required only for the customers markedrequiredincustomers.applies_toalllisted_customerslisted_customers: the field is accepted only on those customers' records.
Değerleri key'e göre tek bir JSON nesnesi olarak gönderin. Bilinmeyen bir anahtar, yanlış tipte bir değer ya da eksik bir zorunlu alan satırı düşürür ve hatada anahtarın adı geçer. Güncellemede (on_conflict: update) nesne anahtar anahtar birleşir: göndermediğiniz anahtar korunur, null gönderdiğiniz silinir. Acentenin müşteri belgelerine bastığı bir alan, kayıt faturalandıktan sonra değişmez.
Aynı biçimde geri gelirler: geri okumada ve webhook gövdesinde detail.custom_fields altında (biletin her yolcusunda da). Kişisel veri olarak işaretli alan yalnızca rolü kişisel veriyi okuyabilen bir anahtara döner; webhook'ta hiç yer almaz.
Geri okuma
Acente kaydı işledikten sonra (onaylar, biletleri numaralar, faturalar) GET /api/v1/imports/{entity}/records/{external_id} bunu döner; her webhook da aynı gövdeyi taşır. detail, gönderiminizden sonra yalnız acentenin ekleyebildiği bilgileri taşır.
{
"entity": "events",
"external_id": "EVENT-1001",
"source_system": "crm",
"type": "EventProject",
"id": "9d2f7c3a-1b4e-4a7d-8e51-2c0f6b9a4d18",
"created_at": "2026-03-14T09:30:00Z",
"updated_at": "2026-03-15T11:05:00Z",
"status": "confirmed",
"locked": true,
"lock_reason": "invoiced",
"currency": "EUR",
"totals": {
"cost": "1100.0",
"sell": "1250.0"
},
"invoices": [
{
"id": "4b8e1f60-7c2d-4e9a-b3f5-0a6d2c9e8b71",
"number": "LYD2026000000117",
"status": "issued",
"currency": "EUR",
"total": "1250.0",
"balance": "1250.0"
}
],
"detail": {
"title": "Dealer Summit 2026",
"event_type": "conference",
"venue_name": "Congress Centre",
"venue_address": "Kültürpark, Konak, İzmir",
"city": "İzmir",
"country_code": "TR",
"starts_on": "2026-03-14",
"ends_on": "2026-03-16",
"attendee_count": 120,
"option_date": "2026-02-14",
"custom_fields": {
"project_code": "PRJ-2026-001",
"trip_reason": "meeting"
}
}
}İstek · deneme, tüm alanlar
curl -X POST 'https://YOUR-CELL.lydira.com/api/v1/imports/events/validate' \
-H 'Authorization: Bearer sek_YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: 8f14e45f-ea2c-4f33-9a3b-6d0c1b7e5a90' \
-d '{
"source_system": "crm",
"rows": [
{
"external_id": "EVENT-1001",
"title": "Cappadocia Highlights",
"event_type": "activation",
"venue_name": "Venue name",
"venue_address": "Venue address",
"city": "City",
"country_code": "TR",
"starts_on": "2026-03-14",
"ends_on": "2026-03-18",
"attendee_count": 2,
"currency": "EUR",
"customer_external_id": "CUSTOMER-1001",
"crew_call_at": "2026-03-14T09:30:00+03:00",
"custom_fields": {
"project_code": "PRJ-2026-001",
"trip_reason": "meeting"
},
"status": "draft",
"notes": "Imported from the source system.",
"rate_basis": "net",
"margin_mode": "percent",
"option_date": "2026-03-20T18:00",
"transaction_date": "2026-03-14",
"invoice_date": "2026-03-18",
"cost_lines": [
{
"kind": "venue_hire",
"amount": "1250.00",
"label": "Imported line",
"currency": "EUR",
"vat_rate": "20",
"tax_inclusive": true,
"quantity": 1
}
],
"sell_lines": [
{
"kind": "package_price",
"amount": "1250.00",
"label": "Imported line",
"currency": "EUR",
"vat_rate": "20",
"tax_inclusive": true,
"quantity": 1
}
],
"service_fee": "1250.00",
"service_fee_vat_rate": "20",
"service_fee_waived": true
}
]
}'{
"import": {
"id": "9d2f7c3a-1b4e-4a7d-8e51-2c0f6b9a4d18",
"entity": "events",
"source_system": "crm",
"status": "ready",
"company_id": "9d2f7c3a-1b4e-4a7d-8e51-2c0f6b9a4d18",
"stats": {
"total": 1,
"will_create": 1,
"will_update": 0,
"created": 0,
"updated": 0,
"skipped": 0,
"invalid": 0,
"failed": 0,
"not_selected": 0
},
"error": null,
"created_at": "2026-03-14T09:30:00Z",
"links": {
"self": "/api/v1/imports/9d2f7c3a-1b4e-4a7d-8e51-2c0f6b9a4d18",
"rows": "/api/v1/imports/9d2f7c3a-1b4e-4a7d-8e51-2c0f6b9a4d18/rows"
},
"mode": "validate",
"async": false,
"on_conflict": "skip",
"pricing": "apply_rules"
},
"ignored_fields": [],
"results": [
{
"row": 1,
"external_id": "EVENT-1001",
"status": "will_create",
"payer": {
"outcome": "external_id",
"customer_id": "9d2f7c3a-1b4e-4a7d-8e51-2c0f6b9a4d18"
}
}
]
}