GET /apiv2/pricing
Dinamik zaman aralıklarıyla tüm hizmet fiyatlarını tek bir yanıtta döndüren evrensel fiyatlandırma uç noktası.
Karşılama sırasında fiyat değişebilir
Bu uç nokta tarafından döndürülen fiyat, bir sipariş işlenirken değişebilir. Bir enerji sağlayıcısı yetkilendirme (delegation) talebini reddedebilir; bu durumda Netts siparişi otomatik olarak bir sonraki uygun sağlayıcıya yönlendirir. Netts yalnızca en rekabetçi fiyatı sunmayı değil, aynı zamanda güvenilir bir enerji tedariki sağlamayı da taahhüt eder — bu nedenle bir sipariş teklif edilenden daha yüksek bir fiyattan karşılanabilir. Bu durum yalnızca 300.000 enerji birimi ve üzerindeki siparişler için geçerlidir.
Önerilen
Bu, önerilen fiyatlandırma uç noktasıdır. Kullanımdan kaldırılacak olan eski /apiv2/prices uç noktasının yerini alır.
Uç Nokta URL'si
GET https://netts.io/apiv2/pricingİstek Başlıkları
| Başlık | Gerekli | Açıklama | Değerler |
|---|---|---|---|
| X-API-KEY | Evet | API anahtarınız | string |
| X-Real-IP | Evet | Beyaz listedeki IP adresi | IP adresi |
| X-Format | Hayır | Yanıt formatı (varsayılan: tam JSON) | now, compact, short, short1h, count |
Sorgu Parametreleri
| Parametre | Tür | Varsayılan | Açıklama |
|---|---|---|---|
| services | string | all | Dahil edilecek hizmetlerin virgülle ayrılmış filtresi |
Mevcut Hizmetler
| Hizmet | Açıklama |
|---|---|
energy_1h | 1 saatlik enerji yetkilendirme fiyatları |
energy_5m | 5 dakikalık enerji yetkilendirme fiyatları |
host | Host enerji yetkilendirme oranları |
aml | AML adres kontrolü fiyatları |
bandwidth | Bandwidth kiralama fiyatları — isteğe bağlı (opt-in): yalnızca ?services=bandwidth aracılığıyla açıkça istendiğinde döndürülür (varsayılan yanıtın bir parçası değildir) |
Örnek İstekler
cURL — Tam Yanıt
curl -X GET https://netts.io/apiv2/pricing \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"cURL — Hizmetlere Göre Filtreleme
# Yalnızca energy 1h fiyatları
curl -X GET "https://netts.io/apiv2/pricing?services=energy_1h" \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"
# Energy 1h + AML
curl -X GET "https://netts.io/apiv2/pricing?services=energy_1h,aml" \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"
# Yalnızca Host fiyatları
curl -X GET "https://netts.io/apiv2/pricing?services=host" \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"
# Bandwidth kiralama fiyatları (isteğe bağlı — açıkça talep edilmelidir)
curl -X GET "https://netts.io/apiv2/pricing?services=bandwidth" \
-H "X-API-KEY: your_api_key" \
-H "X-Real-IP: your_whitelisted_ip"Python
import requests
url = "https://netts.io/apiv2/pricing"
headers = {
"X-API-KEY": "your_api_key",
"X-Real-IP": "your_whitelisted_ip"
}
response = requests.get(url, headers=headers)
data = response.json()
if data.get("success"):
print(f"API version: {data['version']}")
print(f"TRX/USD rate: {data['data']['trx_rate_usd']}")
services = data["data"]["services"]
for svc_name, svc_data in services.items():
pricing_type = svc_data.get("pricing_type")
print(f"\n--- {svc_name} ({pricing_type}) ---")
if pricing_type == "periodic":
for period in svc_data["periods"]:
marker = " <-- current" if period["is_current"] else ""
print(f" {period['label']}: {period['price']} {svc_data['unit']}{marker}")
elif pricing_type == "flat_rates":
for rate, price in svc_data["rates"].items():
print(f" {rate}: {price} {svc_data['unit']}")
elif pricing_type == "provider_based":
for name, info in svc_data["providers"].items():
status = "available" if info["available"] else "unavailable"
print(f" {name}: {info['price']} {svc_data['unit']} - {status}")Python — Hizmetleri Filtreleme
params = {"services": "energy_1h,aml"}
response = requests.get(url, headers=headers, params=params)Yanıt Yapısı
Üst Düzey Alanlar
| Alan | Tür | Açıklama |
|---|---|---|
| success | boolean | Başarılı istekler için true |
| version | string | API sürümü (ör. "2.1") |
| timestamp | string | ISO 8601 UTC formatında sunucu saati |
| data | object | Yanıt yükü |
Veri Alanları
| Alan | Tür | Açıklama |
|---|---|---|
| data.trx_rate_usd | number | Mevcut TRX/USD döviz kuru |
| data.units_meta | object | Makine tarafından okunabilir birim dönüştürme bilgisi |
| data.services | object | Fiyatlandırma verileriyle talep edilen hizmetlerin eşlemesi |
Birim Meta Bilgisi (Units Meta)
İstemcilerin birimler arasında programatik olarak dönüşüm yapmasına olanak tanır:
{
"units_meta": {
"sun": {"base": "trx", "multiplier": 1000000},
"trx": {"base": "trx", "multiplier": 1},
"usdt": {"base": "usdt", "multiplier": 1}
}
}SUN biriminden TRX birimine dönüştürmek için: trx_price = sun_price / units_meta.sun.multiplier
Hizmet Ortak Alanları
Her hizmet şu alanları içerir:
| Alan | Tür | Açıklama |
|---|---|---|
| unit | string | Fiyat birimi (sun, trx, usdt) |
| pricing_type | string | Bu hizmetin nasıl ayrıştırılacağı (aşağıya bakın) |
| description | string | İnsan tarafından okunabilir açıklama |
| cache_ttl | integer | Bu verilerin ne sıklıkla yenilendiği (saniye cinsinden) |
Fiyatlandırma Türleri
pricing_type alanı istemcilere her bir hizmeti nasıl ayrıştıracaklarını bildirir:
| Tür | Yapı | Tarafından kullanılır |
|---|---|---|
periodic | Zamana dayalı fiyatları içeren periods[] dizisi | energy_1h, energy_5m |
flat_rates | Adlandırılmış oran anahtarlarına sahip rates{} nesnesi | host |
provider_based | Sağlayıcı verilerini içeren providers{} nesnesi | aml |
tiered_by_amount_and_period | Miktar aralığına göre tiers[], her biri periods[] içeren | bandwidth |
Hizmet: energy_1h / energy_5m
pricing_type: periodic
| Alan | Tür | Açıklama |
|---|---|---|
| current_period | string | Şu anda aktif olan dönemin tanımlayıcısı (slug) |
| periods[] | array | Tüm fiyatlandırma dönemleri (dinamik, veritabanından yüklenir) |
| periods[].id | string | Benzersiz dönem tanımlayıcısı (slug) |
| periods[].label | string | İnsan tarafından okunabilir dönem adı |
| periods[].start | string | Dönem başlangıç zamanı (HH:MM UTC) |
| periods[].end | string | Dönem bitiş zamanı (HH:MM UTC) |
| periods[].is_current | boolean | Bu dönemin şu anda aktif olup olmadığı |
| periods[].price | integer | SUN cinsinden enerji birimi başına fiyat |
| periods[].tiers | array|null | Hacme dayalı fiyatlandırma kademeleri (bkz. Kademeler) |
Dinamik dönemler
Dönem sayısı, zaman aralıkları, etiketleri ve fiyatların tümü dinamiktir ve sunucu tarafında yönetilir. Dönem ID'lerini veya sayılarını sabit kodlamayın (hardcode yapmayın). Her zaman periods dizisi üzerinde döngü kurun.
Hizmet: host
pricing_type: flat_rates
| Alan | Tür | Açıklama |
|---|---|---|
| rates.standard_65k | number | 65k enerji için standart oran (TRX) |
| rates.standard_131k_initial | number | 131k enerji, ilk aktivasyon için standart oran (TRX) |
| rates.frequent_65k | number | 65k enerji için sık kullanım oranı (TRX) |
| rates.frequent_131k | number | 131k enerji için sık kullanım oranı (TRX) |
Hizmet: aml
pricing_type: provider_based
| Alan | Tür | Açıklama |
|---|---|---|
| providers | object | AML sağlayıcılarının eşlemesi (dinamiktir, değişebilir) |
| providers[name].price | number | USDT cinsinden kontrol fiyatı |
| providers[name].price_trx | number | Mevcut kurdan TRX'e dönüştürülmüş kontrol fiyatı |
| providers[name].available | boolean | Sağlayıcının uygun kotası olup olmadığı |
Dinamik sağlayıcılar
AML sağlayıcıları veritabanından yüklenir. Yeni sağlayıcılar eklenebilir veya mevcut olanlar kullanılamaz hale gelebilir. Her zaman providers nesnesi üzerinde döngü kurun.
Hizmet: bandwidth
pricing_type: tiered_by_amount_and_period
İsteğe bağlı katılım ve erişim
Bandwidth fiyatlandırması yalnızca ?services=bandwidth aracılığıyla açıkça istendiğinde döndürülür — varsayılan yanıtın bir parçası değildir. Bandwidth kiralama uç noktasının kendisi talep üzerine sunulur; erişim için destek ile iletişime geçin. Bkz. Bandwidth kiralama.
Bandwidth kiralama fiyatı; sipariş miktarına (birim kademesi), kiralama süresine (ör. 5m / 1h), günün zaman dilimi penceresine (UTC) ve haftanın gününe bağlıdır. Temel fiyatlar birim başına SUN cinsindendir; temel fiyata ek olarak sabit ek ücretler (TRX cinsinden) uygulanabilir — tüm değerler yanıtta döndürülür.
Yanıt hem bir kolaylık görünümü (tiers — mevcut zaman penceresi/gün için fiyatlar) hem de tam ızgara (windows + schedule — her hafta içi günündeki tüm pencereler) sağlar.
Uyarlanabilir format — sabit kodlamayın
Fiyatlandırma ızgarası tamamen veri odaklıdır ve her an değişebilir: zaman pencerelerinin sayısı, bunların etiketleri, başlangıç/bitiş zamanları, kiralama süreleri kümesi (yeni süreler eklenebilir veya kaldırılabilir), miktar kademeleri, haftanın günü dökümü ve fiyatların kendisi. İstemciler, döndürülen diziler (windows, schedule, tiers, periods) üzerinde döngü kurmalı ve değere göre eşleştirme yapmalıdır — hiçbir zaman sabit bir sayı, sabit etiketler, sabit zamanlar veya sabit süre id'leri varsaymayın. Bu şekilde yazılan kod, zamanlama değiştiğinde de çalışmaya devam eder.
| Alan | Tür | Açıklama |
|---|---|---|
| unit | string | sun_per_unit |
| window | string | Geçerli gün içi zaman penceresi etiketi (UTC) |
| current_day_of_week | integer | Geçerli haftanın günü, ISO 1=Pzt … 7=Paz (UTC) |
| tiers[] | array | Geçerli zaman penceresi/gün için miktar kademeleri (kolaylık amaçlı; schedule içindekiyle aynı yapı) |
| windows[] | array | Tüm gün içi zaman pencerelerinin dizini (büyüyebilir/küçülebilir/kayabilir) |
| windows[].label | string | Zaman penceresi etiketi |
| windows[].start / .end | string | Pencere başlangıç/bitiş HH:MM UTC (bir pencere gece yarısını geçebilir, yani start > end olabilir) |
| schedule[] | array | Tam ızgara — (haftanın günü × pencere) başına bir giriş |
| schedule[].day_of_week | integer | ISO haftanın günü 1…7 |
| schedule[].window | string | Zaman penceresi etiketi (windows[].label ile eşleşir) |
| schedule[].period_start / .period_end | string | HH:MM UTC |
| schedule[].is_current | boolean | Şu anda aktif olan segment için true |
| schedule[].tiers[] | array | Bu segment için miktar kademeleri |
| tiers[].amount_min | integer | Kademe alt sınırı (dahil) |
| tiers[].amount_max | integer|null | Kademe üst sınırı (hariç). null = sınırsız |
| tiers[].periods[] | array | Kademe içindeki kiralama süresi başına fiyatlar |
| tiers[].periods[].id | string | Kiralama süresi id'si (ör. 5m, 1h) — değişebilir/genişleyebilir |
| tiers[].periods[].rental_seconds | integer | Saniye cinsinden dönem uzunluğu |
| tiers[].periods[].price | integer | SUN cinsinden Bandwidth birimi başına fiyat |
| surcharges | object | İstemci fiyatına yapılan sabit eklemeler (TRX) — aşağıya bakın |
| limits | object | Sipariş limitleri: min_units, max_units |
Ek Ücretler (Surcharges)
| Alan | Tür | Açıklama |
|---|---|---|
| surcharges.small_order_threshold_units | integer | amount değeri bu değerin altında olan siparişlere küçük sipariş ek ücreti uygulanır |
| surcharges.small_order_surcharge_trx | number | Küçük yetkilendirme siparişleri için eklenen tutar (TRX) — zincir içi yetkilendirme + geri alma telafisi |
| surcharges.trx_send_surcharge_trx | number | Sipariş TRX gönderilerek karşılandığında eklenen tutar (TRX) — TRX transferinin telafisi |
Örnek Yanıt
{
"bandwidth": {
"unit": "sun_per_unit",
"pricing_type": "tiered_by_amount_and_period",
"description": "Bandwidth delegation rental",
"cache_ttl": 30,
"window": "<current window label>",
"current_day_of_week": 7,
"tiers": [
{
"amount_min": 400,
"amount_max": 1000,
"periods": [
{"id": "5m", "rental_seconds": 300, "price": "<price_sun>"},
{"id": "1h", "rental_seconds": 3600, "price": "<price_sun>"}
]
},
{"amount_min": 1000, "amount_max": 3000, "periods": ["..."]},
{"amount_min": 3000, "amount_max": null, "periods": ["..."]}
],
"windows": [
{"label": "<window label>", "start": "01:00", "end": "09:00"},
{"label": "<window label>", "start": "14:00", "end": "00:00"}
],
"schedule": [
{
"day_of_week": 1,
"window": "<window label>",
"period_start": "01:00",
"period_end": "09:00",
"is_current": false,
"tiers": [
{"amount_min": 400, "amount_max": 1000, "periods": [
{"id": "5m", "rental_seconds": 300, "price": "<price_sun>"},
{"id": "1h", "rental_seconds": 3600, "price": "<price_sun>"}
]}
]
}
],
"surcharges": {
"small_order_threshold_units": 1000,
"small_order_surcharge_trx": "<trx>",
"trx_send_surcharge_trx": "<trx>"
},
"limits": {"min_units": 400, "max_units": 5000}
}
}schedule, her (haftanın günü × pencere) kombinasyonu için bir giriş içerir — eksiksiz bir fiyat takvimi oluşturmak için üzerinde döngü kurun. Tam olarak bir giriş is_current: true değerine sahiptir.
İstemci Mantığı (sipariş fiyatını hesaplama)
"Şu anki fiyat" için tiers kullanın. Başka bir zaman için fiyat aramak üzere, haftanın gününe ve zamanı içeren [period_start, period_end) aralığına sahip pencereye göre eşleşen schedule girişini seçin (bir pencerenin start > end olduğunda gece yarısını geçebileceğini unutmayın), ardından onun tiers alanını kullanın.
# geçerli an için fiyat:
for tier in bandwidth.tiers:
if tier.amount_min <= amount < (tier.amount_max or infinity):
for p in tier.periods:
if p.id == requested_period: # dizine göre değil, değere göre eşleştirin
base_trx = (p.price / units_meta.sun.multiplier) * amount
if amount < surcharges.small_order_threshold_units:
base_trx += surcharges.small_order_surcharge_trx # yetkilendirme siparişleri
# bunun yerine TRX gönderme karşılama dalı:
# trx_branch_trx = base_trx_for_smallest_tier_shortest_period + surcharges.trx_send_surcharge_trx
# rastgele bir hafta içi günü/zamanı için fiyat: aynı mantık, ancak önce day_of_week değerinin
# eşleştiği ve zamanın [period_start, period_end) aralığına denk geldiği schedule[] girişini seçin.Merkezi ve dinamik
Bandwidth fiyatları, pencereler, hafta içi gün dökümleri ve ek ücretler sunucu tarafında (veritabanında) yönetilir ve değişebilir. Yanıttaki windows, schedule, tiers ve periods üzerinde her zaman döngü kurun ve değere göre eşleştirin — sayıları, etiketleri, zamanları veya dönem id'lerini sabit olarak kodlamayın. SUB-kullanıcı fiyat artışları Bandwidth için geçerli değildir.
Kademeler (Tiers)
Şu anda tiers tüm dönemler için null değerindedir. Hacme dayalı fiyatlandırma etkinleştirildiğinde bu alan kademe nesnelerinden oluşan bir dizi içerecektir:
{
"tiers": [
{
"min_energy": 0,
"max_energy": 64999,
"price": "<price_sun>",
"label": "standard"
},
{
"min_energy": 65000,
"max_energy": 130999,
"price": "<price_sun>",
"label": "65k"
},
{
"min_energy": 131000,
"max_energy": 131000,
"price": "<price_sun>",
"label": "131k"
},
{
"min_energy": 131001,
"max_energy": null,
"price": "<price_sun>",
"label": "bulk"
}
]
}Kademeler Şeması
| Alan | Tür | Açıklama |
|---|---|---|
| min_energy | integer | Bu kademe için minimum enerji miktarı (dahil) |
| max_energy | integer|null | Bu kademe için maksimum enerji miktarı (dahil). null = sınırsız |
| price | integer | Bu kademe için SUN cinsinden enerji birimi başına fiyat |
| label | string | Kademe tanımlayıcısı |
İstemci Mantığı
if tiers != null:
min_energy <= order_amount <= max_energy koşulunu sağlayan kademeyi bulun
o kademenin fiyatını kullanın
else:
tüm sipariş miktarları için sabit fiyat alanını kullanınKompakt Yanıt Formatları
Kompakt metin yanıtları almak için X-Format başlığını kullanın. Bunlar energy_1h içinden geçerli aktif dönemin fiyatını döndürür.
X-Format: now / compact / short
curl -H "X-API-KEY: your_key" -H "X-Format: now" https://netts.io/apiv2/pricing<Period>: price=<N> sun, 65k=<X.XXX> TRX (<X.XX>$), 131k=<X.XXX> TRX (<X.XX>$), 1m=<X.XXX> TRX (<X.XX>$)X-Format: short1h
Aynısıdır, ancak dönem etiketi ve birim başına fiyat yer almaz.
curl -H "X-API-KEY: your_key" -H "X-Format: short1h" https://netts.io/apiv2/pricing65k=<X.XXX> TRX (<X.XX>$), 131k=<X.XXX> TRX (<X.XX>$), 1m=<X.XXX> TRX (<X.XX>$)X-Format: count
1, 2, 3, 5, 10, 20 sipariş için toplu sipariş fiyatlandırması.
curl -H "X-API-KEY: your_key" -H "X-Format: count" https://netts.io/apiv2/pricing1-<X.XXX> TRX (<X.XX>$), 2-<X.XXX> TRX (<X.XX>$), ...Hesaplama Formülü
TRX cost = (price_sun / units_meta.sun.multiplier) x energy_amount
USD cost = TRX_cost x trx_rate_usdSUB-Kullanıcı Fiyat Artışı (Markup)
SUB-kullanıcılar, üst hesaplarının fiyat artışı uygulanmış fiyatları otomatik olarak alır. API, kimliği doğrulanmış kullanıcı için her zaman nihai fiyatı döndürür — istemci tarafında hesaplama yapılması gerekmez.
Hata Yanıtları
Hatalar, farklı formatlara sahip iki katmandan gelebilir. İstemciniz her ikisini de işleyebilmelidir.
Uygulama Hataları (API'den)
Uygulama düzeyindeki hatalar standart success/error formatını kullanır:
Geçersiz Hizmet (400)
{
"success": false,
"error": {
"code": 4002,
"message": "Unknown services: invalid_service"
}
}Kimlik Doğrulama Hatası (401)
API anahtarı eksik olduğunda veya IP beyaz listede olmadığında uygulama tarafından döndürülür:
{
"detail": {
"code": -1,
"msg": "Invalid API key or IP not in whitelist"
}
}Farklı format
Kimlik doğrulama hataları, success/error yapısını değil FastAPI'nin yerel detail formatını kullanır. Bunun nedeni, hatanın istek uygulama mantığına ulaşmadan önce fırlatılmasıdır.
Kullanıcı Bulunamadı (404)
{
"detail": {
"code": -1,
"msg": "User not found"
}
}Sunucu İçi Hata (500)
{
"success": false,
"error": {
"code": 5001,
"message": "Failed to retrieve pricing data"
}
}Ağ Geçidi Hataları (Kong'dan)
Bu hatalar, istek uygulamaya ulaşmadan önce API ağ geçidi tarafından döndürülür. Kong'un kendi formatını kullanırlar:
İstek Limiti Aşıldı (429)
{
"message": "API rate limit exceeded"
}Ağ Geçidi Zaman Aşımı (504)
{
"message": "An invalid response was received from the upstream server"
}Hata Kodu Referansı
| Kod | Açıklama | HTTP Durumu | Kaynak |
|---|---|---|---|
-1 | API anahtarı sağlanmadı | 401 | App |
-1 | Geçersiz API anahtarı veya IP beyaz listede değil | 401 | App |
-1 | Kullanıcı bulunamadı | 404 | App |
4002 | ?services= parametresinde bilinmeyen hizmet | 400 | App |
5000 | Sunucu içi hata | 500 | App |
5001 | Fiyatlandırma verileri alınamadı | 500 | App |
5002 | Kompakt format için fiyat verisi mevcut değil | 500 | App |
- | API istek limiti aşıldı | 429 | Kong |
Önerilen İstemci Hata Yönetimi
response = requests.get(url, headers=headers)
data = response.json()
if response.status_code == 200 and data.get("success"):
# Başarılı — veriyi işle
services = data["data"]["services"]
elif response.status_code == 429:
# Kong istek limiti — bekle ve tekrar dene
retry_after = response.headers.get("Retry-After", "60")
time.sleep(int(retry_after))
elif "detail" in data:
# FastAPI kimlik doğrulama/doğrulama hatası
detail = data["detail"]
if isinstance(detail, dict):
print(f"Error {detail.get('code')}: {detail.get('msg')}")
else:
print(f"Error: {detail}")
elif "error" in data:
# Uygulama hatası
err = data["error"]
print(f"Error {err.get('code')}: {err.get('message')}")
else:
print(f"Unexpected response: {response.status_code}")/apiv2/prices Uç Noktasından Geçiş
| Yön | /apiv2/prices (eski) | /apiv2/pricing (yeni) |
|---|---|---|
| Dönemler | 5 sabit | Veritabanından dinamik |
| Fiyat kademeleri | 3 sabit kodlanmış | Tek fiyat + gelecekteki tiers |
| Süre varyantları | Mevcut değil | energy_5m |
| AML fiyatları | Ayrı uç nokta | ?services=aml ile dahil |
| Host fiyatları | Yanıt içinde karışık | Ayrı host hizmeti |
| Hizmet filtreleme | Mevcut değil | ?services= parametresi |
| Birim dönüştürme | Belgelenmemiş | Yanıtta units_meta |
| Önbellek bilgisi | Belgelenmemiş | Hizmet başına cache_ttl |
| Yanıt formatı | {"status": "success", ...} | {"success": true, "version": "2.1", "data": {...}} |
İstek Limitleri (Rate Limits)
/apiv2/prices ile aynı istek limitleri geçerlidir (Kong ağ geçidinde yapılandırılmıştır).
Notlar
- Tüm enerji fiyatları SUN cinsindendir — dönüşüm için
units_metakullanın - Host fiyatları TRX cinsindendir
- AML fiyatları USDT cinsindendir ve TRX dönüşümü dahildir
- Tüm zamanlar UTC saat dilimindedir
- Verilerin ne sıklıkla yenilendiğini öğrenmek için hizmet başına
cache_ttlkullanın - Her bir hizmeti nasıl ayrıştıracağınızı belirlemek için
pricing_typekullanın - Dönemler, sağlayıcılar, oranlar ve tüm değerler dinamiktir — bunları sabit olarak kodlamayın
- Bandwidth fiyatlandırması isteğe bağlıdır (
?services=bandwidth),surchargesile birliktetiered_by_amount_and_periodyapısını kullanır ve SUB-kullanıcı fiyat artışına tabi değildir