> ## Documentation Index
> Fetch the complete documentation index at: https://help.airbridge.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 리포트 가져오기

###### 비동기 요청 상태 정의

비동기 요청 상태는 API 요청 결과의 `task.status`로 확인할 수 있습니다.

<div style={{ overflowX: 'auto' }}>
  <table style={{ display: 'table' }}>
    <tbody>
      <tr>
        <td style={{"minWidth":"130px"}}>
          `PENDING`
        </td>

        <td>
          데이터 집계를 위한 준비를 하고 있습니다
        </td>
      </tr>

      <tr>
        <td>
          `RUNNING`
        </td>

        <td>
          데이터를 집계중입니다
        </td>
      </tr>

      <tr>
        <td>
          `SUCCESS`
        </td>

        <td>
          집계가 완료되어 결과값을 반환합니다
        </td>
      </tr>

      <tr>
        <td>
          `FAILURE`
        </td>

        <td>
          알 수 없는 이유로 요청이 실패하였습니다
        </td>
      </tr>

      <tr>
        <td>
          `CANCELED`
        </td>

        <td>
          요청이 취소되었습니다
        </td>
      </tr>
    </tbody>
  </table>
</div>

###### 안내 메세지(Notification) 정의

집계 과정에서 일부 데이터를 제거하거나 가려졌을 경우(마스킹), `notification[0].code`에 해당 사유를 확인할 수 있습니다.

<div style={{ overflowX: 'auto' }}>
  <table style={{ display: 'table' }}>
    <tbody>
      <tr>
        <td style={{"minWidth":"310px"}}>
          `MEDIA_PARTNER_DATA_FILTERED_BY_CHANNEL`
        </td>

        <td>
          미디어 파트너 권한으로 요청을 하여, 데이터 중 볼 수 없는 매체의 데이터를 제외하였습니다.
        </td>
      </tr>

      <tr>
        <td>
          `AGG_DATA_MASKING_BY_FACEBOOK`
        </td>

        <td>
          페이스북 개인정보 보호 정책으로 인해 일부 데이터가 제거되거나 가려졌습니다.
        </td>
      </tr>

      <tr>
        <td>
          `EXCEEDED_LIMIT_ON_MAX_ROW_COUNT`
        </td>

        <td>
          요청에 해당하는 결과값이 10,000건을 넘습니다. Raw Data Export를 사용해 데이터를 추출하는 것을 권장합니다.
        </td>
      </tr>

      <tr>
        <td>
          `SAN_PERIOD_LIMIT`
        </td>

        <td>
          페이스북 등 Self-Attributed Network에 기여된 데이터 중 175일 이전의 데이터를 제거하였습니다.
        </td>
      </tr>
    </tbody>
  </table>
</div>

<div id="메타-개인정보보호정책" />

<Note>
  **메타 개인정보보호정책**

  메타 개인정보보호정책에 따라 에어브릿지 리포트에 설정한 조회 기간 동안 발생한 일부 메타 비즈니스(facebook.business) 데이터가 마스킹됩니다. `isMasked`가 true면 마스킹된 데이터입니다.

  메타 개인정보보호정책에 대한 자세한 내용은 [에어브릿지 가이드](/ko/guides/meta-business-channel-integration#메타-개인정보-보호-정책)를 참고해 주세요.
</Note>

<Card title="Try API Request" icon="rectangle-api" horizontal href="https://www.postman.com/airbridge-engineering/workspace/airbridge-api/request/22395869-eb9b62ad-0eb2-4e7c-8ac7-5eb8221e53fe" />

```text GET theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
https://api.airbridge.io/reports/api/v7/apps/{app_name}/actuals/query/{task_id}
```

<h2 id="리포트-가져오기-request">
  Request
</h2>

***

<h3 id="리포트-가져오기-headers">
  Headers
</h3>

<ParamField header="Accept-Language" type="string">
  API 요청 및 결과 반환에 사용할 언어를 지정할 수 있습니다. ISO-639-1 포맷을 따릅니다.
</ParamField>

<ParamField header="Content-Type" type="string">
  리소스의 미디어 타입을 나타냅니다. 기본값으로 `application/json`을 사용합니다.
</ParamField>

<ParamField header="Authorization" type="string">
  API 요청에 사용하는 키값입니다. [키값 생성 및 조회 방법](/ko/references/introduction)을 확인하여 획득할 수 있습니다.
</ParamField>

<h3 id="리포트-가져오기-path-params">
  Path Params
</h3>

<ParamField path="app_name" type="string" required>
  에어브릿지 앱 이름(App Name)
</ParamField>

<ParamField path="task_id" type="string" required>
  '리포트 생성하기' API의 결과값에서 반환한 `task_id`입니다.
</ParamField>

<h3 id="리포트-가져오기-query-params">
  Query Params
</h3>

<ParamField query="skip" type="number">
  결과값에서 건너뛸 Row의 수.

  결과값에서 처음 N개의 Row를 제외하고 가져옵니다.

  기본값은 0 입니다.
</ParamField>

<ParamField query="size" type="number">
  반환할 Row 수.

  `skip`으로 건너뛴 결과의 다음부터 N개의 Row를 가져옵니다.

  기본값은 100입니다.

  예시) `?skip=200&size=100`

  이면 처음 200개를 건너뛰고 201번쨰부터 300번째 까지의 Row를 가져옵니다.
</ParamField>

<ParamField query="keyword" type="string">
  GroupBy에서 필터링할 검색 키워드.
</ParamField>

<ParamField query="viewFormat" type="boolean">
  대시보드에서 Actuals Report에 대한 값을 표현해 줄 때 사용하는 포맷 정보를 포함할지 여부를 결정합니다.

  true일 경우 `viewFormat` 필드에 (메타 애즈 마스킹과 같은) 포맷 정보가 "\{value}", "\{value} +α", "Privacy Block" 등 과 같은 형태로 추가됩니다.

  기본값은 false 입니다.
</ParamField>

<RequestExample>
  ```shellscript Request theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
  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}'
  ```
</RequestExample>

<h2 id="리포트-가져오기-response">
  Response
</h2>

***

### 200

비동기 요청을 처리하는 중입니다.

해당 API를 주기적으로 폴링(Polling)하여 결과를 확인할 수 있으며, 요청 상태는 요청 상태는 `task.status`로 확인할 수 있습니다.

### 200

데이터 집계가 완료된 결과를 반환합니다. `status` 가 `SUCCESS`일 경우,  `actuals`에 데이터 및 메타데이터, 메세지 등을 담아 전송합니다.

<ResponseExample>
  ```json 200 theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
  {
    "task": {
      "status": "RUNNING",
      "taskId": "5e286bd4-b4b1-4c04-8f6a-670dc7ce637d"
    }
  }
  ```

  ```json 200 theme={"theme":{"light":"github-dark-dimmed","dark":"github-dark-dimmed"}}
  {
    "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": []
  }
  ```
</ResponseExample>
