# 캠페인 관리

> Tapjoy의 리포트 API를 사용한 광고 캠페인 관리를 통해 광고 세트 설정, 입찰가, 이벤트 설정, 앱별 설정을 검토하고 업데이트하여 캠페인 성과를 최적화할 수 있습니다.

리포트 API를 사용하여 캠페인을 관리하고 이벤트와 광고 세트의 설정 세부 정보를 검토할 수 있습니다.

## 필수 조건##prerequisites

[여기](./api-authentication.md)에 나온 단계에 따라 API로 인증해야 합니다.

* 리포트 API를 통해 리포팅 데이터 가져오기에 관한 내용을 알아보려면 [리포트 API - 광고주](./reporting-api-advertiser.md)를 참고하십시오.
* 리포트 API로 오류 처리 및 제한 사항에 관한 내용을 알아보려면 [리포트 API 베스트 프랙티스](./reporting-api-best-practices.md)를 참고하십시오.

## 광고 세트 관리##manage-your-ad-sets

입찰가, 타게팅 데이터, 캠페인 상태 등 광고 세트 설정의 세부 정보를 검토합니다.

레퍼런스: [Advertiser#adSets](https://api.tapjoy.com/graphql/docs/object/advertiser#adsets) 필드, [AdSet](https://api.tapjoy.com/graphql/docs/object/adset?category=advertisers) 유형

다음 쿼리 최대 50개의 광고 세트와 ID, 단가, 캠페인 목표를 반환합니다.

```graphql
query {
  advertiser {
    adSets(first: 50) {
      edges {
        node {
          id
          bidding {
            amount
          }
          campaign {
            objective
          }
        }
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
}
```

응답은 더 많은 결과를 사용할 수 있는지 여부를 나타내는 페이지 지정 정보가 포함된 광고 세트 노드 리스트를 반환합니다.

```graphql
{
  "data": {
    "advertiser": {
      "adSets": {
        "edges": [
          {
            "node": {
              "id": "00000000-0000-0000-0000-000000000000",
              "bidding": {
                "amount": 0.02
              },
              "campaign": {
                "objective": "VIEWS"
              }
            }
          },
          {
            "node": {
              "id": "00000000-0000-0000-0000-000000000001",
              "bidding": {
                "amount": 0.04
              },
              "campaign": {
                "objective": "VIEWS"
              }
            }
          }
        ],
        "pageInfo": {
          "endCursor": "Mg==",
          "hasNextPage": false
        }
      }
    }
  }
}
```

### 광고 세트의 단가 변경##change-the-bid-of-an-ad-set

> **Note:**
>
> 반환된 단가는 마이크로(1,000,000분의 1 - 미국 달러 기준) 단위로 표시됩니다. 자세한 내용은 현금 스칼라 유형[기술 자료](https://api.tapjoy.com/graphql/docs/scalar/money/)를 참고하십시오.

레퍼런스: [AdSetBiddingUpdateInput](https://api.tapjoy.com/graphql/docs/input_object/adsetbiddingupdateinput/) 유형

다음의 변환은 특정 광고 세트의 단가 업데이트합니다. 광고 세트 ID와 새 단가 마이크로미터 단위로 지정합니다.

```graphql
mutation {
  updateAdSetBidding(input: {
    id: "00000000-0000-0000-0000-000000000000",
    bidding: {amount: 1000000}
  }) {
    bidding {
      amount
    }
  }
}
```

응답은 업데이트된 단가 마이크로미터 단위로 확인합니다.

```graphql
{
  "data": {
    "bidding": {
      "amount": 1000000
    }
  }
}
```

## 멀티 리워드 이벤트 관리##manage-your-multi-reward-events

입찰가, 이벤트 이름, 이벤트 순차성 등 멀티 리워드 오퍼에 대한 이벤트 레벨 정보를 확인합니다.

> **Note:**
>
> 광고 세트의 모든 이벤트는 단가, 상태, 전환 횟수와 관계없이 반환됩니다.

레퍼런스: [MultiRewardEngagementEvent](https://api.tapjoy.com/graphql/docs/object/multirewardengagementevent/) 유형

다음쿼리는 이벤트 이름, 값 및 단가를 포함하여 특정 광고 세트에 대해 구성된 모든 이벤트를 반환합니다.

```graphql
{
  adSet(id: "00000000-0000-0000-0000-000000000000") {
    multiRewardEngagementSettings {
      events {
        eventName
        eventValue
        amount
      }
    }
  }
}
```

응답은 광고 세트별로 그룹화된 참여 이벤트 구성 목록을 반환합니다.

```graphql
{
  "data": {
    "adSet": {
      "multiRewardEngagementSettings": [
        {
          "events": [
            {
              "eventName": "level_#",
              "eventValue": "5",
              "amount": 0
            },
            {
              "eventName": "level_#",
              "eventValue": "10",
              "amount": 480000
            },
            }
          ]
        }
      ]
    }
  }
}
```

### 멀티 리워드 이벤트 생성 및 삭제##create-and-delete-multi-reward-events

> **Note:**
>
> *MultiRewardEngagementEvents* 생성과 삭제 작업은 한 번의 변경으로 수행됩니다. *AdSet* ID와 2개 이상의 \_MultiRewardEngagementEvents\_가 포함된 목록을 제공해야 합니다. 이벤트를 비활성화하려면 ***disable: true*** 프로퍼티를 추가합니다. \_eventName\_과 \_eventValue\_는 실수로 삭제되지 않도록 이벤트를 비활성화할 때 계속 필요합니다.

레퍼런스: [AdSetBiddingUpdateInput](https://api.tapjoy.com/graphql/docs/input_object/adsetbiddingupdateinput/) 유형, [MultiRewardEngagementEventInput](https://api.tapjoy.com/graphql/docs/input_object/multirewardengagementeventinput) 유형

다음의 변환은 단일 작업에서 특정 광고 세트에 대한 다중 보상형 참여 이벤트를 생성, 업데이트 또는 비활성화합니다.

```graphql
mutation {
  updateAdSetBidding(
    input:{
      id: "00000000-0000-0000-0000-000000000000"
      bidding: {
        multiRewardEngagementEvents: [
          {
            eventName:"TUTORIAL_COMPLETE",
            eventValue: "",
            amount: 2200000
          },
          {
            eventName:"LEVEL_ONE",
            eventValue: "",
            amount: 12200000
          },
          {
            eventName:"LEVEL_TWO",
            eventValue: "",
            disable: true
          }
        ]
      }
    }
  ) {
    bidding {
      multiRewardEngagementEvents {
        eventName
        eventValue
        amount
      }
    }
  }
}
```

응답은 비활성화된 이벤트를 제외하고, 변환 후 남은 활성 이벤트를 반환합니다.

```graphql
{
  "data": {
    "updateAdSetBidding": {
      "bidding": {
        "multiRewardEngagementEvents": [
          {
            "eventName": "TUTORIAL_COMPLETE",
            "eventValue": "",
            "amount": 2200000
          },
          {
            "eventName": "LEVEL_ONE",
            "eventValue": "",
            "amount": 12200000
          }
        ]
      }
    }
  }
}
```

## 앱별 설정 관리##manage-your-app-specific-configuration

퍼블리셔 앱별 비딩이 활성화된 멀티 리워드 오퍼에 관한 이벤트 레벨 정보를 확인합니다. 여기서는 입찰가, 이벤트 이름, 이벤트 순차성과 같은 이벤트 정보를 퍼블리셔 앱별로 구분하여 반환합니다.

> **Note:**
>
> 퍼블리셔 이외 앱별 이벤트 설정은 null 앱 아래에 나열됩니다.

레퍼런스: [MultiRewardEngagementEvent](https://api.tapjoy.com/graphql/docs/object/multirewardengagementevent/) 유형, [AppReference](https://api.tapjoy.com/graphql/docs/object/appreference) 유형

다음 쿼리 퍼블리셔 앱별로 그룹화된 특정 광고 세트의 멀티 보상 이벤트 설정을 반환합니다. 특정 앱과 연결되지 않은 이벤트는 null 앱 엔트리 아래에 나열됩니다.

```graphql
{
  adSet(id: "00000000-0000-0000-0000-000000000000") {
    multiRewardEngagementSettings {
      app {
        bundleId
      }
      events {
        eventName
        eventValue
        amount
      }
    }
  }
}
```

응답은 각 퍼블리셔 앱의 이벤트 구성을 반환하며, null 앱 아래에 나열된 앱별 구성도 반환합니다.

```graphql
{
  "data": {
    "adSet": {
      "multiRewardEngagementSettings": [
        {
          "app": null,
          "events": [
            {
              "eventName": "level_#",
              "eventValue": "5",
              "amount": 0
            },
            {
              "eventName": "level_#",
              "eventValue": "10",
              "amount": 480000
            },
          ]
        },
        {
          "app": {
            "bundleId": "com.app.example"
          },
          "events": [
            {
              "eventName": "level_#",
              "eventValue": "10",
              "amount": 520000
            },
            {
              "eventName": "level_#",
              "eventValue": "30",
              "amount": 1680000
            },
          ]
        }
      ]
    }
  }
}
```

### 앱당 이벤트 설정 생성 및 삭제##create-and-delete-per-app-event-configurations

> **Note:**
>
> \_MultiRewardEngagementEvents\_와 마찬가지로 \_AppBiddingGroups\_를 생성하고 삭제하는 작업은 한 번의 변경으로 수행됩니다. 퍼블리셔 *AppReference* ID를 1개 이상 제공하고 2개 이상의 \_MultiRewardEngagementEvents\_가 포함된 목록을 제공해야 합니다. 주어진 퍼블리셔 \_AppReference\_에서 전환이 발생할 때 이러한 이벤트의 금액은 최상위로 설정된 값 대신 사용됩니다.

이벤트나 앱별 비딩 그룹을 비활성화하려면 오브젝트에 ***disable: true***&#xB97C; 추가합니다. 앱별 비딩 그룹을 비활성화하면 해당 자식 이벤트가 자동으로 비활성화됩니다. 이벤트를 비활성화할 때 \_eventName\_과 \_eventValue\_가 필요합니다.

레퍼런스: [AdSetBiddingUpdateInput](https://api.tapjoy.com/graphql/docs/input_object/adsetbiddingupdateinput/) 유형, [AppBiddingGroupInput](https://api.tapjoy.com/graphql/docs/input_object/appbiddinggroupinput) 유형, [MultiRewardEngagementEventInput](https://api.tapjoy.com/graphql/docs/input_object/multirewardengagementeventinput) 유형, [AppReference](https://api.tapjoy.com/graphql/docs/object/appreference) 유형

다음의 변환은 단일 작업에서 특정 광고 세트에 대한 앱별 단가 그룹과 관련된 다중 보상 이벤트를 생성, 업데이트 또는 비활성화합니다.

```graphql
mutation {
  updateAdSetBidding(
    input:{
      id: "00000000-0000-0000-0000-000000000000"
      bidding: {
        perAppBidGroups: [{
          pubAppId:"<example_publisher_app_id>"
          multiRewardEngagementEvents: [
            {
              eventName:"TUTORIAL_COMPLETE",
              eventValue: "",
              amount: 5500000
            },
            {
              eventName:"LEVEL_ONE",
              eventValue: "",
              disable: true,
            }  
          ]
        },
        {
          pubAppId:"<example_publisher_app_id_2>",
          disable: true
        }],
        multiRewardEngagementEvents: [
          {
            eventName:"TUTORIAL_COMPLETE",
            eventValue: "",
            amount: 2200000
          },
          {
            eventName:"LEVEL_ONE",
            eventValue: "",
            amount: 12200000
          },
          {
            eventName:"LEVEL_TWO",
            eventValue: "",
            disable: true
          }
        ]
      }
    }
  ) {
    bidding {
      multiRewardEngagementEvents {
        eventName
        eventValue
        amount
      }
      perAppBidGroups {
          pubApp {
            id
            name
          }
        }
        multiRewardEngagementEvents {
          eventName
          eventValue
          amount
      }
    }
  }
}
```

응답은 변환 후 남은 활성 최상위 이벤트와 앱별 단가 그룹을 반환합니다.

```graphql
{
  "data": {
    "updateAdSetBidding": {
      "bidding": {
        "multiRewardEngagementEvents": [
          {
            "eventName": "TUTORIAL_COMPLETE",
            "eventValue": "",
            "amount": 2200000
          },
          {
            "eventName":"LEVEL_ONE",
            "eventValue": "",
            "amount": 12200000
          }
        ],
        "perAppBidGroups": [
          {
            "pubApp": {
              "id": "example_publisher_app_id",
              "name": "Example Publisher App"
            },
            "multiRewardEngagementEvents": [
              {
                "eventName": "TUTORIAL_COMPLETE",
                "eventValue": "",
                "amount": 5500000
              },
              {
                "eventName": "LEVEL_ONE",
                "eventValue": "",
                "amount": 15500000
              }
            ]
          }
        ]
      }
    }
  }
}
```
