SKAN v4 mapping API
The mapping endpoint returns information about an advertiser's conversion value mapping. Network partners may fetch this information at any time by making a GET request to the endpoint.
Endpoint
https://app.adjust.com/skadnetwork/v4/{sk_network_token}/mapping/{app_store_id}GET request
Returns mapping information as an array of JSON objects. Each GET request must contain the following parameters.
| Parameter | Data type | In | Description | 
|---|---|---|---|
sk_network_token* | String | Path | Partner-specific token assigned by Adjust. Example: abcdefklmn | 
app_store_id* | String | Path | The App Store ID of the app. Example: 1125517808 | 
Response
The mapping endpoint returns an array of three JSON objects corresponding with the three postbacks sent by SKAdNetwork v4. Each object is identified by its corresponding conversion_window.
The endpoint returns both fine and coarse mapping information for the first postback only. The second and third postback contain coarse mapping information.
[
   {
      "data": {
         "fine": [{}],
         "coarse": [{}],
         "settings": {},
      },
      "conversion_window": 1
   },
   {
      "data": {
         "coarse": [{}],
         "settings": {},
      },
      "conversion_window": 2
   }
   {
      "data": {
         "coarse": [{}],
         "settings": {},
      },
      "conversion_window": 3
   }
]Fine conversion value fields
The mapping endpoint returns a breakdown of each mapped conversion value and its associated details.
[
   {
      "data": {
         "fine": [
            {
               "conversion_value":12,
               "events":[
                  {
                     "event_name":"Purchase",
                     "count_min":3,
                     "count_max":10,
                     "revenue_min":3.00,
                     "revenue_max":10.00
                  },
                  {
                     "event_name":"Registration"
                  }
               ]
            }
         ],
      }
   }
]Event count and revenue ranges are optional parameters that are returned depending on how the advertiser has configured partner access. The following details may be mapped:
- Session
 - Session count
 - Event
 - Event count
 - Event revenue
 - IAP
 - Ad Revenue
 - Total Revenue
 
Count and Revenue range parameters are all optional and are defined as follows:
| Parameter | Data type | Default value | Description | 
|---|---|---|---|
count_min | Number | 1 | The event or session was recorded not less than the specified number of times. | 
count_max | Number | Unlimited | The event or session was recorded not more than the specified number of times. | 
revenue_min | Number | 0 | The total revenue was at least the specified amount. Amounts are measured in the app's reporting_currency. | 
revenue_max | Number | Unlimited | The total revenue did not exceed the specified amount. Amounts are measured in the app's reporting_currency. | 
Coarse conversion value fields
Coarse conversion values are used when the volume of conversions isn’t high enough to meet the privacy threshold for providing a fine conversion value. The coarse CV can be low, medium, or high, which act as aggregated buckets for predefined CV values.
[
   {
      "data": {
         "coarse": [
            {
               "coarse_conversion_value": "low",
               "events": [
                  {
                     "event_name": "PURCHASE",
                     "revenue_min": 0,
                     "revenue_max": 0.5
                  }
               ]
            },
            {
               "coarse_conversion_value": "medium",
               "events": [
                  {
                     "event_name": "PURCHASE",
                     "revenue_min": 0.5,
                     "revenue_max": 1.0
                  }
               ]
            },
            {
               "coarse_conversion_value": "high",
               "events": [
                  {
                     "event_name": "PURCHASE",
                     "revenue_min": 1.0,
                     "revenue_max": 50
                  }
               ]
            }
         ]
      }
   }
]| Parameter | Data type | Default value | Description | 
|---|---|---|---|
coarse_conversion_value | String | Undefined | The level of the coarse conversion value. Can be one of:
  | 
event_name | String | null | The name of the mapped event. | 
count_min | Number | 1 | The event was recorded not less than the specified number of times. | 
count_max | Number | Unlimited | The event was recorded not more than the specified number of times. | 
revenue_min | Number | 0 | The total revenue recorded for an event was at least the specified amount. Amounts are measured in the app's reporting_currency. | 
revenue_max | Number | Unlimited | The total revenue recorded for an event did not exceed the specified amount. Amounts are measured in the app's reporting_currency. | 
Response settings fields
[
   {
      "data": {
         "settings": {
            "lock_window": {
               "time_in_hours": 24
            },
            "app_store_id":"1125517808",
            "updated_at":1617234177,
            "reporting_currency":"USD",
         }
      }
   }
]| Field | Data type | Description | 
|---|---|---|
app_store_id | String | The App Store ID of the app. Matches the app_store_id parameter sent in the request. | 
updated_at | Number | The Unix timestamp of the latest mapping change visible to the partner making the request. | 
lock_window | Object | Settings related to the Lock window. | 
time_in_hours | Number | The length of the lock window in hours. | 
reporting_currency | String | The ISO 4217 currency code of the app's reporting currency. Applies to all revenue amounts defined in the mapping schema. | 
Full response example
[
   {
      "data": {
         "fine": [
            {
               "conversion_value":7,
               "events":[
                  {
                     "event_name":"Registration"
                  }
               ]
            },
            {
               "conversion_value":10,
               "events":[
                  {
                     "event_name":"TutorialComplete"
                  }
               ]
            },
            {
               "conversion_value":12,
               "events":[
                  {
                     "event_name":"Purchase",
                     "count_min":3,
                     "count_max":10,
                     "revenue_min":3.00,
                     "revenue_max":10.00
                  },
                  {
                     "event_name":"Registration"
                  }
               ]
            }
         ],
         "coarse": [
            {
               "coarse_conversion_value": "low",
               "events": [
                  {
                     "event_name": "PURCHASE",
                     "revenue_min": 0,
                     "revenue_max": 0.5
                  }
               ]
            },
            {
               "coarse_conversion_value": "medium",
               "events": [
                  {
                     "event_name": "PURCHASE",
                     "revenue_min": 0.5,
                     "revenue_max": 1.0
                  }
               ]
            },
            {
               "coarse_conversion_value": "high",
               "events": [
                  {
                     "event_name": "PURCHASE",
                     "revenue_min": 1.0,
                     "revenue_max": 50
                  }
               ]
            }
         ],
         "settings": {
            "lock_window": {
               "time_in_hours": 24
            },
            "app_store_id":"1125517808",
            "updated_at":1617234177,
            "reporting_currency":"USD",
         }
      },
      "conversion_window": 1
   },
   {
      "data": {
         "coarse": [
            {
               "coarse_conversion_value": "low",
               "events": [
                  {
                     "event_name": "PURCHASE",
                     "revenue_min": 0,
                     "revenue_max": 0.5
                  }
               ]
            },
            {
               "coarse_conversion_value": "medium",
               "events": [
                  {
                     "event_name": "PURCHASE",
                     "revenue_min": 0.5,
                     "revenue_max": 1.0
                  }
               ]
            },
            {
               "coarse_conversion_value": "high",
               "events": [
                  {
                     "event_name": "PURCHASE",
                     "revenue_min": 1.0,
                     "revenue_max": 50
                  }
               ]
            }
         ],
         "settings": {
            "app_store_id":"1125517808",
            "updated_at":1617234177,
            "reporting_currency":"USD",
         }
      },
      "conversion_window": 2
   },
   {
      "data": {
         "coarse": [
            {
               "coarse_conversion_value": "low",
               "events": [
                  {
                     "event_name": "PURCHASE",
                     "revenue_min": 0,
                     "revenue_max": 0.5
                  }
               ]
            },
            {
               "coarse_conversion_value": "medium",
               "events": [
                  {
                     "event_name": "PURCHASE",
                     "revenue_min": 0.5,
                     "revenue_max": 1.0
                  }
               ]
            },
            {
               "coarse_conversion_value": "high",
               "events": [
                  {
                     "event_name": "PURCHASE",
                     "revenue_min": 1.0,
                     "revenue_max": 50
                  }
               ]
            }
         ],
         "settings": {
            "app_store_id":"1125517808",
            "updated_at":1617234177,
            "reporting_currency":"USD",
         }
      },
      "conversion_window": 3
   }
]Response error codes
| Error code | Description | 
|---|---|
| 400 Bad Request | The Store ID is missing or isn't formatted correctly. | 
| 401 Unauthorized | The network token is missing or not recognized. | 
| 403 Forbidden | The app is recognized, but the Partner sharing requirements weren't met for the requested app. | 
| 404 Not Found | The requested app wasn't found or isn't verified for SKAdNetwork. | 
| 422 Unprocessable Entity | The requested app is recognized and verified by Adjust, but the Conversion Value management feature is not not activated for the app. | 
| 429 Too Many Requests | Requests are throttled on a per-partner/app basis. Adjust recommends fetching updates once per day. |