package com.bigcrunch.ads.models import com.squareup.moshi.Json import com.squareup.moshi.JsonClass /** * Top-level application configuration returned from the BigCrunch backend * * This config contains all placement definitions and is fetched once at SDK initialization * and cached for subsequent sessions. */ @JsonClass(generateAdapter = true) data class AppConfig( @Json(name = "propertyId") val propertyId: String, @Json(name = "appName") val appName: String, @Json(name = "gamNetworkCode") val gamNetworkCode: String, @Json(name = "s2s") val s2s: S2SConfig, @Json(name = "bidders") val bidders: Map? = null, @Json(name = "amazonAps") val amazonAps: GlobalAmazonConfig? = null, @Json(name = "useTestAds") val useTestAds: Boolean = false, @Json(name = "refresh") val refresh: RefreshConfig? = null, @Json(name = "placements") val placements: List ) /** * S2S (server-to-server) auction configuration * * Controls the connection to the BigCrunch S2S endpoint for bid requests. */ @JsonClass(generateAdapter = true) data class S2SConfig( @Json(name = "enabled") val enabled: Boolean = true, @Json(name = "serverUrl") val serverUrl: String, @Json(name = "timeoutMs") val timeoutMs: Int ) /** * Top-level bidder entry with shared params and per-placement params * * Each bidder has optional shared params (applied to all impressions) and * a placements map (placementId → imp-level params for that bidder). */ @JsonClass(generateAdapter = true) data class BidderEntry( @Json(name = "params") val params: Map? = null, @Json(name = "placements") val placements: Map>? = null ) /** * Global Amazon APS configuration */ @JsonClass(generateAdapter = true) data class GlobalAmazonConfig( @Json(name = "enabled") val enabled: Boolean, @Json(name = "pubId") val pubId: String, @Json(name = "timeout") val timeout: Int )