API referansı · API reference
Sürüm / version 2027-01-15 · openapi.json
GET /v1/me
Profil kartın · Your profile card
Scope: profile:basic · Risk: R1
Görünen ad, kullanıcı adı, fotoğraf ve doğrulanmış rozeti. profile:read izni de verildiyse biyografi ve ilgi alanları eklenir. Telefon, e-posta, ad soyad ve konum asla dönmez.
Display name, username, picture and verified badge. With profile:read also bio and interests. Phone, e-mail, legal name and location are never returned. App feature: Profile › card
{
"id": "u_7HqY2kQ9mXv3Lp0sZt1aBc",
"name": "Rüzgar",
"username": "ruzgar",
"picture": "https://…",
"verified": true,
"bio": "Kahve ve yürüyüş",
"interests": [
"doğa",
"kahve"
]
} GET /v1/members/{id}
Üye kartı · Member card
Scope: profile:basic · Risk: R1
Engellediğin ya da seni engelleyen üyeler ve gizli hesaplar 404 döner.
Members you blocked or who blocked you, and hidden accounts, return 404.
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Üyenin bu uygulamaya özel kimliği. · The member's app-specific (pairwise) id. |
{
"id": "u_7HqY2kQ9mXv3Lp0sZt1aBc",
"name": "Rüzgar",
"username": "ruzgar",
"picture": "https://…",
"verified": true
} GET /v1/members/{id}/posts
Üyenin gönderileri · A member's posts
Scope: feed:read · Risk: R2
Yalnızca senin görebildiğin gönderiler (herkese açık, sana açık liste ya da kendi gönderilerin). Medya adresleri sonraki sürümde imzalı adreslerle gelir.
Only posts you can see (public, shared with you, or your own). Signed media URLs arrive in a later version.
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Üyenin bu uygulamaya özel kimliği (kendin için /v1/me kimliği). · The member's pairwise id (your own /v1/me id for yourself). |
limit | query | Sayfa boyutu (en çok 50, varsayılan 20). · Page size (max 50, default 20). |
cursor | query | Önceki yanıttaki `next` imleci (opak, 15 dk). · Opaque `next` cursor from the previous response (15 min). |
{
"items": [
{
"id": "p_9f3k",
"author": "u_7HqY2kQ9mXv3Lp0sZt1aBc",
"kind": "text",
"text": "Pazar yürüyüşü harikaydı!",
"mediaCount": 0,
"audience": "all",
"createdAt": "2027-01-15T09:00:00.000Z",
"counts": {
"likes": 12,
"comments": 3,
"reposts": 0
},
"aiLabel": null
}
],
"next": "eyJr…"
} GET /v1/events
Yaklaşan herkese açık etkinlikler · Upcoming public events
Scope: events:read · Risk: R1
Tarih sırasıyla; konum il/ilçe düzeyinde (açık adres yalnızca katılımcılara, uygulamada).
By date; location at province/district level (exact address only for attendees, in the app).
| Parametre | Yer | Açıklama / Description |
|---|---|---|
limit | query | Sayfa boyutu (en çok 50, varsayılan 20). · Page size (max 50, default 20). |
cursor | query | Önceki yanıttaki `next` imleci (opak, 15 dk). · Opaque `next` cursor from the previous response (15 min). |
{
"items": [
{
"eventId": "evt_s4nd",
"datetime": "2027-01-20T16:00:00.000Z",
"location": "Kadıköy, İstanbul",
"name": "Pazar Kahvaltısı",
"description": "…",
"capacity": 20,
"price": 0,
"attendees": 8,
"imageUrl": "https://…"
}
],
"next": null
} GET /v1/events/{id}
Etkinlik ayrıntısı · Event details
Scope: events:read · Risk: R1
Herkese açık etkinlik ya da katıldığın etkinlik.
A public event or one you attend.
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Etkinlik kimliği. · Event id. |
{
"eventId": "evt_s4nd",
"datetime": "2027-01-20T16:00:00.000Z",
"location": "Kadıköy, İstanbul",
"name": "Pazar Kahvaltısı",
"description": "…",
"capacity": 20,
"price": 0,
"attendees": 8,
"imageUrl": "https://…"
} POST /v1/posts
Gönderi paylaş · Create a post
Scope: posts:write · Risk: R2
Uygulamadaki gönderiyle aynı moderasyondan geçer; gönderide uygulamanın adı görünür. Yapay zekâ incelemesine düşen gönderi review:true döner.
Goes through the same moderation as in-app posts; the post shows your app's name. Posts held for review return review:true. App feature: Feed › Share
{
"id": "p_9f3k",
"status": "published",
"review": false
} DELETE /v1/posts/{id}
Gönderini sil · Delete your post
Scope: posts:write · Risk: R2
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Gönderi kimliği (yalnızca kendi gönderin). · Post id (your own posts only). |
{
"deleted": true
} POST /v1/posts/{id}/like
Gönderiyi beğen · Like a post
Scope: reactions:write · Risk: R2
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Gönderi kimliği. · Post id. |
{
"liked": true
} DELETE /v1/posts/{id}/like
Beğeniyi geri al · Unlike a post
Scope: reactions:write · Risk: R2
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Gönderi kimliği. · Post id. |
{
"liked": false
} POST /v1/posts/{id}/comments
Yorum yaz · Add a comment
Scope: comments:write · Risk: R2
Gizli kelimelere takılan yorum hidden:true döner (yalnızca yazana görünür).
Comments caught by hidden words return hidden:true (visible only to the author).
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Gönderi kimliği. · Post id. |
{
"id": "c_1",
"hidden": false
} DELETE /v1/posts/{id}/comments/{commentId}
Yorumunu sil · Delete your comment
Scope: comments:write · Risk: R2
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Gönderi kimliği. · Post id. |
commentId | path | Yorum kimliği (kendi yorumun). · Comment id (your own). |
{
"deleted": true
} POST /v1/polls/{id}/votes
Ankete oy ver · Vote in a poll
Scope: polls:write · Risk: R2
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Anket kimliği. · Poll id. |
{
"voted": true
} POST /v1/events/{id}/join
Etkinliğe katıl · Join an event
Scope: events:join · Risk: R2
Ücretsiz etkinlikte doğrudan katılır. Ücretli etkinlikte (Kademe 3, elmas:spend) önce 202 pending_approval döner; üye HADİ'de PIN'le onaylayınca aynı isteği HADI-Approval başlığıyla yinele.
Free events join directly. Paid events (tier 3, elmas:spend) first return 202 pending_approval; after the member approves in HADİ with PIN, repeat the request with the HADI-Approval header.
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Etkinlik kimliği. · Event id. |
{
"status": "joined"
} DELETE /v1/events/{id}/join
Etkinlikten ayrıl · Leave an event
Scope: events:join · Risk: R2
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Etkinlik kimliği. · Event id. |
{
"status": "left"
} POST /v1/members/{id}/follow
Takip et · Follow
Scope: social.follow:write · Risk: R2
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Üyenin uygulamaya özel kimliği. · The member's pairwise id. |
{
"state": "following"
} DELETE /v1/members/{id}/follow
Takibi bırak · Unfollow
Scope: social.follow:write · Risk: R2
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Üyenin uygulamaya özel kimliği. · The member's pairwise id. |
{
"state": "none"
} POST /v1/members/{id}/block
Engelle · Block
Scope: social.safety:write · Risk: R2
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Üyenin uygulamaya özel kimliği. · The member's pairwise id. |
{
"blocked": true
} DELETE /v1/members/{id}/block
Engeli kaldır · Unblock
Scope: social.safety:write · Risk: R2
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Üyenin uygulamaya özel kimliği. · The member's pairwise id. |
{
"blocked": false
} POST /v1/members/{id}/mute
Sessize al · Mute
Scope: social.safety:write · Risk: R2
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Üyenin uygulamaya özel kimliği. · The member's pairwise id. |
{
"muted": true
} DELETE /v1/members/{id}/mute
Sessizden çıkar · Unmute
Scope: social.safety:write · Risk: R2
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Üyenin uygulamaya özel kimliği. · The member's pairwise id. |
{
"muted": false
} POST /v1/media/uploads
Fotoğraf yükleme adresi al · Get a photo upload URL
Scope: posts:write · Risk: R2
Tek kullanımlık, 15 dakikalık imzalı PUT adresi döner. Dosya karantinaya iner; gönderide kullanıldığında konum/EXIF silinir, yüz kapısı ve moderasyon uygulanır.
Returns a one-time signed PUT URL valid for 15 minutes. Files land in quarantine; EXIF/location is stripped and face gate + moderation run when used in a post.
{
"mediaId": "med_8sd7f6g5h4",
"uploadUrl": "https://storage.googleapis.com/…",
"method": "PUT",
"headers": {
"content-type": "image/jpeg"
},
"expiresIn": 900
} GET /v1/wallet
Cüzdan bakiyesi · Wallet balance
Scope: wallet:read · Risk: R3
Kullanılabilir ve kilitli Elmas/Akçe. Satın alma ve iade ayrıntısı dönmez.
Available and locked Elmas/Akçe. No purchase or refund details. App feature: Wallet
{
"elmas": 120,
"akce": 3400,
"elmasLocked": 0,
"akceLocked": 0
} GET /v1/wallet/history
Cüzdan hareketleri · Wallet history
Scope: wallet:read · Risk: R3
Tür grubu, tutar ve zaman; karşı taraf ve sipariş ayrıntısı dönmez.
Kind, amounts and time; no counterparty or order details.
| Parametre | Yer | Açıklama / Description |
|---|---|---|
limit | query | Sayfa boyutu (en çok 50, varsayılan 20). · Page size (max 50, default 20). |
cursor | query | Önceki yanıttaki `next` imleci (opak, 15 dk). · Opaque `next` cursor from the previous response (15 min). |
{
"items": [
{
"id": "tkt_x",
"kind": "bilet",
"elmas": -50,
"akce": 0,
"at": "2026-11-02T10:00:00.000Z"
}
],
"next": null
} POST /v1/members/{id}/gifts
Hediye gönder · Send a gift
Scope: gifts:send · Risk: R4
Yalnızca karşılıklı takipleşilen üyelere; Kademe 3, işlem onayı (PIN) ve aylık Elmas limiti.
Mutual followers only; tier 3, per-transaction approval (PIN) and monthly Elmas limit. App feature: Profile › Gift
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Alıcının uygulamaya özel kimliği (karşılıklı takipleştiğin üye). · Recipient's pairwise id (a mutual follower). |
{
"sent": true
} GET /v1/donations/orgs
Bağış kurumları · Donation organizations
Scope: donations:give · Risk: R4
{
"items": [
{
"id": "org_x",
"name": "Örnek Vakfı",
"category": "eğitim",
"website": "https://ornek.org"
}
]
} POST /v1/donations
Bağış yap · Donate
Scope: donations:give · Risk: R4
Yalnızca satın alınmış Elmas; Kademe 3, işlem onayı (PIN) ve aylık Elmas limiti.
Purchased Elmas only; tier 3, per-transaction approval (PIN) and monthly limit.
{
"donationId": "don_x",
"status": "pending"
} GET /v1/chats
Seçili sohbetler · Selected chats
Scope: messages.dm:read · Risk: R4
Yalnızca üyenin HADİ'de bu uygulama için seçtiği birebir sohbetler (en çok 10). Kimlik, karşı üyenin uygulamaya özel kimliğidir.
Only the 1:1 chats the member selected for your app in HADİ (max 10). The id is the other member's pairwise id.
{
"items": [
{
"id": "u_7HqY2kQ9mXv3Lp0sZt1aBc",
"name": "Rüzgar",
"lastAt": "2026-11-02T10:00:00.000Z"
}
]
} GET /v1/chats/{id}/messages
Sohbet mesajları · Chat messages
Scope: messages.dm:read · Risk: R4
Yalnızca metin mesajları; gönderen me | them. Süreli/tek seferlik/silinmiş mesajlar ve gizli sohbetler yok. En çok 24 saat saklayabilirsin; analiz ve yapay zekâ eğitimi yasak.
Text messages only; sender me | them. No disappearing/view-once/deleted messages or secret chats. Store at most 24 hours; no analytics or AI training.
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Karşı üyenin uygulamaya özel kimliği (GET /v1/chats). · The other member's pairwise id (GET /v1/chats). |
limit | query | Sayfa boyutu (en çok 50, varsayılan 20). · Page size (max 50, default 20). |
cursor | query | Önceki yanıttaki `next` imleci (opak, 15 dk). · Opaque `next` cursor from the previous response (15 min). |
{
"items": [
{
"id": "m_1",
"from": "them",
"text": "Yarın geliyor musun?",
"at": "2026-11-02T10:00:00.000Z"
}
],
"next": null
} POST /v1/chats/{id}/messages
Sohbete yaz · Send a message
Scope: messages.dm:send · Risk: R4
Yalnızca seçili, var olan birebir sohbetlere (yeni DM yok). Üye her sohbet için 1 saatlik oturumu HADİ'de PIN'le onaylar (202 pending_approval → HADI-Approval ile yinele); saatte en çok 20 mesaj; mesajda uygulama etiketi görünür.
Only to selected existing 1:1 chats (no new DMs). The member approves a 1-hour session per chat with PIN in HADİ (202 pending_approval → repeat with HADI-Approval); max 20 messages/hour; the message shows your app label.
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Karşı üyenin uygulamaya özel kimliği. · The other member's pairwise id. |
{
"id": "m_2",
"status": "sent"
} GET /v1/health/workouts
Antrenman geçmişi · Workout history
Scope: health:read · Risk: R4
Özel nitelikli veri: üye HADİ'de sağlık açık rızasını ve bu uygulama için ayrı açık rızayı vermiş olmalı. Son 60 antrenman.
Special-category data: the member must have given health consent in HADİ and separate explicit consent for your app. Last 60 workouts.
{
"stats": {
"streak": 3,
"best": 9,
"total": 41,
"minutes": 1230
},
"items": [
{
"id": "w_1",
"title": "Üst vücut",
"day": "2026-11-01",
"durationSec": 1800,
"exercises": 6
}
]
} POST /v1/health/workouts
Antrenman kaydet · Log a workout
Scope: health:write · Risk: R4
Her kayıt üyenin HADİ'de PIN'le onayını ister (202 pending_approval). Antrenör aboneliği ve ayrı açık rıza gerekir.
Each log needs the member's PIN approval in HADİ (202 pending_approval). Requires the trainer subscription and separate explicit consent.
{
"logged": true
} GET /v1/health/metrics
Günlük sağlık ölçümleri · Daily health metrics
Scope: health:read · Risk: R4
Son 30 günün günlük toplamları (adım, kalori vb.). Ayrı açık rıza gerekir.
Daily totals for the last 30 days (steps, calories, etc.). Separate explicit consent required.
{
"items": [
{
"day": "2026-11-01",
"steps": 8400,
"kcal": 320
}
]
} GET /v1/events/{id}/rides
Etkinliğin paylaşımlı yolculukları · Shared rides for an event
Scope: rides:read · Risk: R3
Araç, kalkış, buluşma noktaları, boş koltuk ve koltuk ücreti. Şoför/yolcu kimliği, plaka ve konum koordinatları dönmez; engellediğin ya da seni engelleyen şoför görünmez. Kademe 2 incelemesi gerekir.
Car, departure, pickup points, free seats and seat price. No driver/passenger identity, plate or coordinates; blocked drivers are hidden. Requires tier 2 review. App feature: Event › Rides
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Etkinlik kimliği. · Event id. |
{
"rides": [
{
"id": "r_1",
"status": "open",
"departAt": "2026-11-08T07:30:00.000Z",
"capacity": 3,
"seatsTaken": 1,
"car": {
"brand": "Renault",
"model": "Clio",
"color": "Beyaz"
},
"destination": "Belgrad Ormanı",
"priceElmas": 40,
"km": 28,
"durationMin": 45,
"delayMin": 0,
"prefs": {
"smoking": false
},
"pickupPoints": [
{
"id": "p1",
"label": "Kadıköy İskele",
"etaAt": "2026-11-08T07:30:00.000Z",
"priceElmas": 40
}
]
}
],
"myReservation": null
} POST /v1/rides/{id}/reservations
Yolculukta yer iste · Request a seat
Scope: rides:write · Risk: R3
Ücretsiz koltukta şoför onayı kuyruğuna (ilk gelen ilk) girer: status pending. Ücretli koltukta API ödeme yapmaz: üyeye bildirim gider, ödeme ve rezervasyon HADİ uygulamasında tamamlanır (status payment_in_app). Kendi aracın, engel ve yolculuk cezası kuralları aynen geçerli.
Free seats join the driver's FIFO approval queue: status pending. For paid seats the API does not pay: the member is notified and completes payment and booking in the HADİ app (status payment_in_app). Blocking and ride-ban rules apply.
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Yolculuk kimliği. · Ride id. |
{
"status": "pending"
} DELETE /v1/rides/{id}/reservations
Yolculuk isteğini iptal et · Cancel a seat request
Scope: rides:write · Risk: R3
Ücretsiz koltukta ya da ücretli koltukta kalkıştan 3 saatten önce (tam iade) iptal eder. Daha geç ücretli iptal (ücretin şoföre geçebileceği durum) yalnızca HADİ uygulamasında.
Cancels a free seat, or a paid seat more than 3 hours before departure (full refund). Later paid cancellations are app-only.
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Yolculuk kimliği. · Ride id. |
{
"status": "cancelled"
} GET /v1/approvals/{id}
İşlem onayı durumu · Transaction approval status
Scope: openid · Risk: R1
pending | approved | denied | used | failed | expired. Onay webhook'u: approval.decided.
pending | approved | denied | used | failed | expired. Webhook: approval.decided.
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | approval_id. · approval_id. |
{
"status": "approved"
} POST /v1/events/drafts
Üye etkinliği taslağı gönder · Submit a member event draft
Scope: events:create · Risk: R3
Premium üyeler içindir. Taslak HADİ ekibinin onayından sonra yayımlanır; aynı anda en çok 3 bekleyen taslak. Ücretli etkinlik yok.
For Premium members. The draft is published after HADİ team approval; max 3 pending drafts. No paid events. App feature: Events › Create event (Premium)
{
"id": "me_8d2k",
"status": "pending_review"
} PATCH /v1/communities/{id}
Topluluğu düzenle · Update a community
Scope: communities:manage · Risk: R3
Yalnızca topluluğun sahibi/yöneticisi olan üye adına. Sohbet oyunları ve özellikler API'den değişmez.
Only on behalf of the community owner/moderator. Chat games and features cannot be changed via the API. App feature: Community › Edit
| Parametre | Yer | Açıklama / Description |
|---|---|---|
id | path | Topluluk kimliği (yöneticisi olduğun). · Community id (one you manage). |
{
"id": "g_4kd9",
"updated": true
}