RoomFollow · iOS / Mobile API
Oteliniz, aynı yetkilerle mobilde.
Mobil uygulama partner anahtarı kullanmaz. Otel kullanıcısının oturumu, aktif tesisi ve rolü üzerinden çalışır.
Temel adres ve erişim
https://app.roomfollow.com/api/mobile/v11. Kullanıcı oturumu açın
{
"hotelCode": "RF-EXAMPLE",
"email": "personel@example.com",
"password": "<KULLANICI_PAROLASI>",
"deviceId": "<CIHAZ_UUID>",
"deviceName": "iPhone"
}RF kodu veya tesis kodu, e-posta ve parola doğrulanır. Aktif kullanıcı, aktif tesis üyeliği ve geçerli otel hesabı gerekir. Örnekler sentetiktir; gerçek parola veya kimlik bilgilerini dokümantasyona yazmayın.
E-posta doğrulaması etkinse yanıt challengeId, maskedEmail ve expiresAt içerir. Ardından POST /auth/verify gövdesine challengeId, code, deviceId ve deviceName gönderin. Doğrulama kapalıysa giriş doğrudan tokens ve profile döndürür.
{
"tokens": {
"accessToken": "<ACCESS_TOKEN>",
"refreshToken": "<REFRESH_TOKEN>",
"expiresIn": 900
},
"profile": {
"userId": "<USER_ID>",
"activePropertyId": "<PROPERTY_ID>",
"properties": [
{
"id": "<PROPERTY_ID>",
"code": "EXAMPLE",
"name": "Örnek Otel",
"permissions": [
"<ROL_YETKILERI>"
]
}
]
}
}2. Yetkili sorgu gönderin
curl https://app.roomfollow.com/api/mobile/v1/dashboard \
-H "Authorization: Bearer $ACCESS_TOKEN"Tesis kapsamı oturumdan belirlenir. URL veya gövdeye başka bir tesis kimliği eklemek erişim hakkı vermez. Görüntüleme ve yazma yetkileri sunucuda ayrıca denetlenir.
3. Oturumu yenileyin ve kapatın
Access token 15 dakika geçerlidir. POST /auth/refresh için {"refreshToken":"<REFRESH_TOKEN>"} gönderin. Yeni refresh token döndüğünde eskisini atomik olarak değiştirin; eşzamanlı yenileme yapmayın. Oturum en fazla 30 günlüktür; yenileme bu mutlak süreyi uzatmaz. POST /auth/logout geçerli Bearer oturumunu iptal eder.
Operasyon sözleşmeleri
/forecast?year=2026&month=9&includeOptions=trueAylık forecast; rapor okuma yetkisi gerekir.
/reportsGövde: reportId, start, end (YYYY-MM-DD). Yanıt: ok, runId, name, rowCount, columns, rows, truncated. En çok 60 önizleme satırı; bu uç PDF dosyası döndürmez.
/night-auditGövde: expectedBusinessDate (YYYY-MM-DD). Önce GET ile ön kontrolleri gösterin; açık kullanıcı onayı ve gün sonu yetkisi olmadan çağırmayın.
/identity-scanmultipart/form-data: documentType ve images. TC_KIMLIK için ön/arka iki fotoğraf; PASSPORT için tek fotoğraf. JPEG, PNG, WebP; fotoğraf başına en çok 6 MiB. Check-in yetkisi gerekir.
Rezervasyon oluşturma
Önce GET /reservations/options ile gerçek tesis seçeneklerini alın. POST /reservations gövdesinde holderName, arrivalDate, departureDate, roomTypeId, ratePlanId, adults, totalMinor ve currency kullanılır. Opsiyonel alanlar arasında children, roomId, boardType, source, status ve notes bulunur. Tarihler YYYY-MM-DD, parasal tutarlar en küçük para birimi cinsindedir (ör. 10000 = 100,00). Yetki, tarih, oda ve fiyat doğrulamalarını sunucu yapar.
Hatalar
{"error":{"code":"unauthorized","message":"Oturum bulunamadı.","requestId":"<REQUEST_ID>"}}401: oturum; 403: yetki; 400/422: geçersiz veri; 404: erişilebilir kayıt bulunamadı; 409: işlem çakışması; 429: hız sınırı. Başarılı ve hatalı mobil JSON yanıtları no-store ile gönderilir. Ağ geçidi kaynaklı hata yanıtları farklı formatta olabilir.