# コンテンツ管理

> Tapjoy Offerwall Reporting API を使用して、アプリ、コンテンツカード、プレースメント、ゲーム内通貨などの Offerwall の設定を効率的に管理できます。

Reporting API を使用して、コンテンツを管理し、イベントと広告セットの設定の詳細を確認できます。

## 前提条件##prerequisites

API を使用して認証する必要があります。[API の認証](/grow/offerwall/monetization/api/api-authentication.md) を参照してください。

* Reporting API によるレポートデータの取得については、[Reporting API - パブリッシャー](/grow/offerwall/monetization/api/reporting-api-publisher.md) を参照してください。
* Reporting API のエラー処理と制限事項については、[Reporting API のベストプラクティス](/grow/offerwall/monetization/api/reporting-api-best-practices.md) を参照してください。

## アプリの管理##manage-your-apps

### アプリの追加##add-your-apps

これは、Offerwallで収益化するアプリケーションです。ダッシュボードでアプリを追加することもできます。詳細については、[Offerwall 設定ガイド](/grow/offerwall/monetization/getting-started/offerwall-setup-guide.md) を参照してください。

> **Note:**
>
> このステップを実行するために、アプリがアプリストアや Google Play ストアで公開されている必要はありません (*storeUrl* パラメーターは任意です)。

参照情報: [createPublisherApp](https://api.tapjoy.com/graphql/docs/mutation/createpublisherapp?category=publishers) ミューテーション

以下の変異により、ストア URL ありとなしで新しいパブリッシャーアプリケーションが作成されます。

```graphql
mutation createPublisherAppWithStoreUrl {
  createPublisherApp(input: {
    name: "App Created With Store URL",
    platform: ANDROID,
    storeUrl: "https://play.google.com/store/apps/details?id=com.tapjoy.tapout&gl=us",
    orientation: PORTRAIT
  }) {
    app {
      id
      name
      timezone
      realWorldCurrency
    }
  }
}

mutation createPublisherAppWithoutStoreUrl {
  createPublisherApp(input: {
    name: "App Created WithOUT Store URL",
    platform: ANDROID,
    orientation: PORTRAIT,
    currency: KRW,
    timezone: TOKYO_SEOUL
  }) {
    app {
      id
      name
	  timezone
      realWorldCurrency
    }
  }
}
```

### アプリとプレースメント情報の検索##look-up-app-and-placement-information

プレースメント ID、コンテンツ、説明など、アプリのプレースメント情報を確認します。

参照情報: [Publisher#apps](https://api.tapjoy.com/graphql/docs/object/publisher#apps) フィールド、[PublisherApp](https://api.tapjoy.com/graphql/docs/object/publisherapp/) タイプ

以下のクエリは、最大 50 個のアプリケーションとその ID、名前、および関連する配置の詳細を返します。

```graphql
query {
  publisher{
    apps(first: 50){
      edges{
        node{
          id
          name
          placements{
            id
            name
            mediationName
          }
        }
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
}
```

反応は、アプリケーションとそのプレースメントのリストと、使用可能な結果が多いかどうかを示すページ処理情報を返します。

```graphql
{
  "data": {
    "publisher": {
      "apps": {
        "edges": [
          {
            "node": {
              "id": "00000000-0000-0000-0000-000000000000",
              "name": "XXX YYY ZZZ",
              "placements": [
                {
                  "id": "00000000-0000-0000-0000-000000000000",
                  "name": "XXX YYY ZZZ",
                  "mediationName": null
                },
                {
                  "id": "00000000-0000-0000-0000-000000000000",
                  "name": "XXX YYY ZZZ",
                  "mediationName": null
                },
                {
                  "id": "00000000-0000-0000-0000-000000000000",
                  "name": "XXX YYY ZZZ",
                  "mediationName": "ironsource"
                },
                {
                  "id": "00000000-0000-0000-0000-000000000000",
                  "name": "XXX YYY ZZZ",
                  "mediationName": null
                }
              ]
            }
          },
          {
            "node": {
              "id": "00000000-0000-0000-0000-000000000000",
              "name": "XXX YYY ZZZ",
              "placements": []
            }
          }
        ],
        "pageInfo": {
          "endCursor": "Mg",
          "hasNextPage": true
        }
      }
    }
  }
}
```

### 特定のアプリ ID のプレースメント情報の検索##look-up-placement-information-for-a-specific-app-id

参照情報: [Publisher#placements](https://api.tapjoy.com/graphql/docs/object/publisher#placements) フィールド、[Placement](https://api.tapjoy.com/graphql/docs/object/placement/) タイプ

以下のクエリは、ID、名前、メディエーション名など、特定のアプリケーションのすべてのプレースメントを返します。

```graphql
query {
  publisher{
    placements(appId: "00000000-0000-0000-0000-000000000000"){
      id
      name
      mediationName
    }
  }
}
```

反応は、指定されたアプリケーション用に設定されたプレースメントのリストを返します。

```graphql
{
  "data": {
    "publisher": {
      "placements": [
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "name": "AppLaunch",
          "mediationName": null
        },
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "name": "InsufficientCurrency",
          "mediationName": null
        },
      ]
    }
  }
}
```

## プレースメントとコンテンツカードの管理##manage-your-placements-and-content-cards

プレースメントは、アプリ内でオファーウォールを表示可能な特定のエリアです。コンテンツカードは、特定のプレースメントに表示する広告の種類を定義します。

### プレースメントとコンテンツカードの作成##create-placements-and-content-cards

プレースメントとコンテンツカードはダッシュボードで作成できます。詳細については、[プレースメント](/grow/offerwall/monetization/dashboard/placements.md) と [Offerwall カードの設定](/grow/offerwall/monetization/dashboard/offerwall-cards.md) をそれぞれ参照してください。

参照情報: [createPlacementsAndContents](https://api.tapjoy.com/graphql/docs/mutation/createplacementsandcontents?category=publishers) ミューテーション

以下の変換により、指定されたアプリケーション用の新しい配置とそれに関連付けられたコンテンツ カードが作成されます。

```graphql
mutation createPlacementAndContent {
  createPlacementsAndContents(input: {entries: [
    {
      appId: "<PASTE_YOUR_APP_ID_HERE>",
      placementName: "Placement from API"
    }
  ]}) {
    placements {
      id
      name
      description
      contents {
        id
        name
        type
        isSkippable
      }
    }
  }
}
```

### コンテンツカード設定の検索##look-up-content-card-configuration

コンテンツカード ID、タイプ、設定されている A/B テストの状態などの情報を確認できます。

参照情報: [Placement#contents](https://api.tapjoy.com/graphql/docs/object/placement#contents) フィールド、[ContentCard](https://api.tapjoy.com/graphql/docs/object/contentcard/) タイプ

以下のクエリは、特定のアプリケーションのすべてのプレースメントとそれらに関連するコンテンツ カードを返します。

```graphql
query {
  publisher {
    placements (appId:"00000000-0000-0000-0000-000000000000") {
      id
      name
      contents {
        id
        name
      }
    }
  }
}
```

反応は、各配置とその設定済みコンテンツ カードを返します。

```graphql
{
  "data": {
    "publisher": {
      "placements": [
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "name": "AppLaunch",
          "contents": [
            {
              "id": "00000000-0000-0000-0000-000000000000",
              "name": "Content for AppLaunch testing by Tapjoy"
            },
            {
              "id": "00000000-0000-0000-0000-000000000000",
              "name": "Content for testing placement by Tapjoy"
            }
          ]
        },
        {
          "id": "00000000-0000-0000-0000-000000000000",
          "name": "InsufficientCurrency",
          "contents": [
            {
              "id": "00000000-0000-0000-0000-000000000000",
              "name": "Content for InsufficientCurrency testing by Tapjoy"
            },
            {
              "id": "00000000-0000-0000-0000-000000000000",
              "name": "Content for testing placement by Tapjoy"
            }
          ]
        }
      ]
    }
  }
}
```

## ゲーム内通貨の管理##manage-your-virtual-currency

Tapjoy で収益化するためにはゲーム内通貨が必要です。アプリ ID、通貨名、交換レート、成熟度を指定する必要があります。

詳細については、[ゲーム内通貨の概要](/grow/offerwall/monetization/virtual-currency/virtual-currency-overview.md) を参照してください。

### ゲーム内通貨の作成##create-virtual-currency

API でこのアクションを実行するには、アプリ ID、通貨名、交換レート、成熟度を指定する必要があります。ダッシュボードでゲーム内通貨を作成することもできます。

参照情報: [createCurrency](https://api.tapjoy.com/graphql/docs/mutation/createcurrency?category=publishers) ミューテーション

以下の変換では、指定されたアプリケーションに新しいゲーム内通貨を作成し、その為替レートと成熟度レベルを設定します。

```graphql
mutation createCurrency {
  createCurrency(input: {
    appId: "<PASTE_YOUR_APP_ID_HERE>",
    name: "New Virtual Currency",
    exchangeRate: 100,
    maturity: MEDIUM
  }) {
    currency {
      id
      name
      exchangeRate
      initialBalance
      maturity
    }
  }
}
```

### ゲーム内通貨の更新##update-a-virtual-currency

以下のミューテーションを使用してゲーム内通貨を更新することもできます。
参照情報: [updateCurrency](https://api.tapjoy.com/graphql/docs/mutation/updatecurrency?category=publishers) ミューテーション

以下の変換は、既存のゲーム内通貨の名前、満期レベル、および初期残高を更新します。

```graphql
mutation updateCurrency {
  updateCurrency(input: {
    id: "<CURRENCY_ID>",
    maturity: HIGH,
    name: "Shell Bells",
    initialBalance:100
  }) {
    currency {
      id
      name
      exchangeRate
      initialBalance
      maturity
      callbackUrl
    }
  }
}
```
