Actuals Report

    Actuals Report provides customization features for the metrics and data you intend to analyze.

    Using the various data fields provided by Airbridge, you can customize the report in all forms such as subdividing data into specific criteria, adding metrics on granular criteria, or applying filters.


    Request Report

    POST

    https://api.airbridge.io/reports/api/v7/apps/{app_name}/actuals/query

    Request Actuals Report.

    rate limit: There is no specific limit for normal usage. However, if excessive requests that may threaten service stability are detected, a temporary 429 Too Many Requests response may be returned.

    Request

    Headers

    Accept-Language
    string

    You can specify the language to use for API requests and responses. It follows the ISO-639-1 format.

    Content-Type
    string

    Represents the media type of the resource. Defaults to application/json.

    Authorization
    string

    The key value to use for API requests. Instructions for getting API keys are in "how to generate API Keys".

    Path Params

    app_name
    必須string

    Airbridge App Name. (Unique ID)

    Body Params

    from
    必須string
    to
    string

    The end date of the report data to request.

    • The date must be in the format 'YYYY-MM-DD'

    • This date must correspond with the timezone set in the Airbridge app.

    • The system only accepts dates up the current date. The time period available for querying is up to 400 days.

    groupBys
    必須string[]
    metrics
    必須string[]
    filters
    必須object[]
    filters[0].dimension
    必須string
    filters[0].filterType
    必須enum
    ENUM VALUES
    IN

    In. In Actuals reports, this corresponds to equals (is, =).

    NOT IN

    Not in. In Actuals reports, this corresponds to is not, ≠.

    LIKE

    Contains. ∋

    NOT LIKE

    Does not contain. ∌

    EXIST

    Value exists.

    NOT EXIST

    Value does not exist.

    filters[0].values
    string[]
    sorts
    必須object[]
    sorts[0].fieldName
    必須string
    sorts[0].isAscending
    boolean
    option
    object
    option.eventTimestampSource
    enum
    Request
    12345
    curl -X POST 'https://api.airbridge.io/reports/api/v7/apps/{app_name}/actuals/query' \
      -H 'Accept-Language: ko' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}' \
      -d '{"from":"2022-11-04","groupBys":["event_source","event_type","event_category"],"metrics":["app_events"],"filters":[{"dimension":"channel","filterType":"IN","values":["App"]}],"sorts":[{"fieldName":"event_type","isAscending":true}]}'
    Payload
    1234567891011121314151617181920212223242526
    {
      "from": "2022-11-04",
      "groupBys": [
        "event_source",
        "event_type",
        "event_category"
      ],
      "metrics": [
        "app_events"
      ],
      "filters": [
        {
          "dimension": "channel",
          "filterType": "IN",
          "values": [
            "App"
          ]
        }
      ],
      "sorts": [
        {
          "fieldName": "event_type",
          "isAscending": true
        }
      ]
    }

    Response

    200SUCCESS

    task.status

    404ERROR

    Response
    123456
    {
      "task": {
        "status": "RUNNING",
        "taskId": "5e286bd4-b4b1-4c04-8f6a-670dc7ce637d"
      }
    }
    Response
    123456
    {
      "type": "about:blank",
      "title": "Not Found",
      "status": 404,
      "traceId": "1-000000-000000000000000"
    }

    Get Report

    GET

    https://api.airbridge.io/reports/api/v7/apps/{app_name}/actuals/query/{task_id}

    Request status

    The status of an asynchronous request can be checked with task.status in the API request result.

    Response Notification

    If certain data was removed or masked during aggregation (masking), refer to the the reason in notification[0].code.

    Request

    Headers

    Accept-Language
    string

    You can specify the language to use for API requests and responses. It follows the ISO-639-1 format.

    Content-Type
    string

    Represents the media type of the resource. Defaults to application/json.

    Authorization
    string

    The key value to use for API requests. Instructions for getting API keys are in "how to generate API Keys".

    Path Params

    app_name
    必須string

    Airbridge App Name. (Unique ID)

    task_id
    必須string

    The task_id returned by the result of the 'Request Report' API.

    Query Params

    skip
    number

    The number of rows to be skipped.

    Get results except the first N number of rows.

    The default is 0.

    size
    number

    A limit on the number of rows to be returned.

    Get results of the next N rows after those skipped by the skip option.

    The default is 100.

    e.g.) ?skip=200&size=100

    In this case, it returns the rows 201 to 300. (skips first 200 rows, gets next 100 rows)

    keyword
    string

    The keywords to filter on GroupBy in the results.

    viewFormat
    booleannullable

    Determines whether to include format information used by the dashboard to represent values for the Actuals Report.

    If it set true, the format information (such as Meta ads masking) is included in the viewFormat field in the form of "{value}", "{value} +α", "Privacy Block", etc.

    The default is false.

    Request
    1234
    curl -X GET 'https://api.airbridge.io/reports/api/v7/apps/{app_name}/actuals/query/{task_id}?skip=0&size=100&viewFormat=false' \
      -H 'Accept-Language: ko' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}'

    Response

    200SUCCESS

    Returns the result when data aggregation is complete. If status is SUCCESS, sends it to actuals with data, metadata, messages, etc.

    200SUCCESS

    The asynchronous request is being processed.

    The API can be polled periodically to see the results, and the status of the request can be checked with task.status.

    Response
    123456789101112131415161718192021222324252627282930313233343536373839404142434445
    {
      "task": {
        "status": "SUCCESS",
        "taskId": "5e286bd4-b4b1-4c04-8f6a-670dc7ce637d",
        "endedAt": "2022-10-01T00:00:00+00:00"
      },
      "actuals": {
        "data": {
          "rows": [
            {
              "values": {
                "app_installs": {
                  "value": 100,
                  "isMasked": false,
                  "viewFormat": "{value}"
                }
              },
              "groupBys": [
                "<groupBy>"
              ]
            },
            {
              "values": {
                "app_installs": {
                  "value": 13,
                  "isMasked": true,
                  "viewFormat": "{value} +α"
                }
              },
              "groupBys": [
                "<groupBy>"
              ]
            }
          ]
        },
        "metadata": {
          "rowCount": 2
        }
      },
      "pagination": {
        "hasNext": true,
        "totalCount": 200
      },
      "notifications": []
    }
    Response
    123456
    {
      "task": {
        "status": "RUNNING",
        "taskId": "5e286bd4-b4b1-4c04-8f6a-670dc7ce637d"
      }
    }

    Get Metadata (Metric)

    GET

    https://api.airbridge.io/dataspec/v2/apps/{app_name}/actual-report/metrics

    Query the available report metrics. [Note]

    Request

    Headers

    Accept-Language
    string

    You can specify the language to use for API requests and responses. It follows the ISO-639-1 format.

    Content-Type
    string

    Represents the media type of the resource. Defaults to application/json.

    Authorization
    string

    The key value to use for API requests. Instructions for getting API keys are in "how to generate API Keys".

    Path Params

    app_name
    必須string

    Airbridge App Name. (Unique ID)

    Request
    1234
    curl -X GET 'https://api.airbridge.io/dataspec/v2/apps/{app_name}/actual-report/metrics' \
      -H 'Accept-Language: ko' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}'

    Response

    200SUCCESS

    404ERROR

    There is an error in the field you entered, or there is no such resource.

    Response
    123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
    {
      "data": [
        {
          "fields": [
            {
              "key": "touchpoints_impression_click",
              "name": "Touchpoints (Impression+click)",
              "description": "Impression 수와 Click 수의 합"
            },
            {
              "key": "impressions",
              "name": "Impressions",
              "description": "Impression 수"
            },
            {
              "key": "clicks",
              "name": "Clicks",
              "description": "Click 수"
            }
          ],
          "groupName": "Touchpoint",
          "parentGroupName": "Touchpoint"
        },
        {
          "fields": [
            {
              "key": "app_events",
              "name": "Events (App)",
              "description": "앱에서 발생한 이벤트 수"
            },
            {
              "key": "app_event_value",
              "name": "Event 값 (App)",
              "description": "앱에서 발생한 이벤트 값의 합"
            }
          ],
          "groupName": "App Event",
          "parentGroupName": "App"
        },
        {
          "fields": [
            {
              "key": "app_installs",
              "name": "Installs (App)",
              "description": "Install 수"
            },
            {
              "key": "app_first_installs",
              "name": "First Installs (App)",
              "description": "최초로 설치된 Install 수"
            }
          ],
          "groupName": "App Install",
          "parentGroupName": "App"
        },
        {
          "fields": [
            {
              "key": "app_sign_up",
              "name": "회원가입 (App)",
              "description": "앱에서 발생한 회원가입 이벤트 수"
            },
            {
              "key": "app_sign_in",
              "name": "로그인 (App)",
              "description": "앱에서 로그인 이벤트 수"
            },
            {
              "key": "app_sign_out",
              "name": "로그아웃 (App)",
              "description": "앱에서 로그아웃 이벤트 수"
            }
          ],
          "groupName": "App Standard Event",
          "parentGroupName": "App"
        }
      ]
    }
    Response
    123456
    {
      "type": "about:blank",
      "title": "Not Found",
      "status": 404,
      "traceId": "1-000000-000000000000000"
    }

    Get Metadata (GroupBy)

    GET

    https://api.airbridge.io/dataspec/v2/apps/{app_name}/actual-report/fields

    Gets a list of available report groupbys. [Note]

    Request

    Headers

    Accept-Language
    string

    You can specify the language to use for API requests and responses. It follows the ISO-639-1 format.

    Content-Type
    string

    Represents the media type of the resource. Defaults to application/json.

    Authorization
    string

    The key value to use for API requests. Instructions for getting API keys are in "how to generate API Keys".

    Path Params

    app_name
    必須string

    Airbridge App Name. (Unique ID)

    Request
    1234
    curl -X GET 'https://api.airbridge.io/dataspec/v2/apps/{app_name}/actual-report/fields' \
      -H 'Accept-Language: ko' \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}'

    Response

    200SUCCESS

    404ERROR

    There is an error in the field provided, or there is no such resource.

    Response
    123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
    {
      "data": [
        {
          "fields": [
            {
              "key": "event_date",
              "name": "Event Date",
              "example": "2019-05-31",
              "description": "이벤트 발생 날짜와 시간 (YYYY-MM-DD)",
              "serveToFilter": true
            },
            {
              "key": "event_year",
              "name": "Event Year",
              "example": "2019",
              "description": "이벤트 발생 년도",
              "serveToFilter": true
            },
            {
              "key": "event_month",
              "name": "Event Month",
              "example": "04",
              "description": "이벤트 발생 월",
              "serveToFilter": true
            }
          ],
          "groupName": "Event Datetime",
          "parentGroupName": null
        },
        {
          "fields": [
            {
              "key": "event_source",
              "name": "Event Source",
              "example": "App",
              "description": "Event가 발생한 소스",
              "serveToFilter": true
            },
            {
              "key": "event_type",
              "name": "Event Type",
              "example": "Impression",
              "description": "Event 타입",
              "serveToFilter": true
            },
            {
              "key": "event_category",
              "name": "Event Category",
              "example": "Move to App Store (Link)",
              "description": "Event 카테고리",
              "serveToFilter": true
            }
          ],
          "groupName": "Event Hierarchy",
          "parentGroupName": null
        },
        {
          "fields": [
            {
              "key": "channel",
              "name": "Channel",
              "example": "moloco",
              "description": "Touchpoints 와 Conversion이 발생한 Channel\n",
              "serveToFilter": true
            },
            {
              "key": "campaign",
              "name": "Campaign",
              "example": "2018_summer_campaign",
              "description": "Touchpoints 와 Conversion이 발생한 Campaign \n(SAN Publisher 대시보드에서 입력한 값 또는 Tracking Link의 캠페인 파라미터 값)",
              "serveToFilter": true
            }
          ],
          "groupName": "Touchpoint",
          "parentGroupName": null
        }
      ]
    }
    Response
    123456
    {
      "type": "about:blank",
      "title": "Not Found",
      "status": 404,
      "traceId": "1-000000-000000000000000"
    }