[Oracle Cloud]REST APIでOCMにアセットを登録する

# はじめに

この記事では、Oracle Content Management(OCM)が提供するREST APIを利用し、アセットを登録・作成する方法を紹介します。今回は**REST API for Content Management**を利用します。

https://docs.oracle.com/en/cloud/paas/content-cloud/rest-api-manage-content/index.html

なお、RESTクライアントは**Postman**を利用します

https://www.postman.com/

:::note info
この記事は2023年8月時点の情報に基づき作成しました。最新の情報については、製品ドキュメントなどをご確認ください
:::

# 準備
## 環境構築

以下チュートリアルを参考に、OCMインスタンスを作成します

https://oracle-japan.github.io/ocitutorials/content-management/create_ocm_instance_IdentityDomain/

続けて、コンテンツ・タイプ（ここでは`sampleNewsType`）を定義し、アセット・リポジトリ内で利用できるように設定します。詳細は以下チュートリアルを参考にしてください

https://oracle-japan.github.io/ocitutorials/content-management/41_asset_headless/

## リポジトリIDを確認する

REST APIで操作するアセット・リポジトリの **リポジトリID(repositoryId)** を確認し、メモします。確認方法は2つあります

- WebブラウザでOCMインスタンスにアクセスし、アセット・リポジトリを開きます。その時のURLに含まれる`q={"repositoryId":"xxxxxxxxxxxxxx"}`の`xxxxxxxxxxxxxx`がリポジトリIDとなります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/e70f023e-5b8f-f58e-38ce-cf9cdde116d8.png)

- リポジトリ管理者権限を付与されたユーザーでOCMインスタンスにアクセスし、`ADMINISTRATION:コンテンツ→リポジトリ`から、アセット・リポジトリの編集画面を開きます。右サイトパネルを開き、`API`タブを選択すると、リポジトリIDを確認できます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/cbea74c6-e0ba-f09b-3d5b-a04d80a24dcc.png)

## OAuthトークンを取得する

REST API for Content Managementを利用時の認証方式はいくつか提供されています。今回は**OAuthトークン**を利用します。OAuthトークンの取得方法は、以下製品ドキュメントをご確認ください。

https://docs.oracle.com/en/cloud/paas/content-cloud/solutions/integrate-oracle-content-management-using-oauth.html#GUID-AC061A7E-6488-4BCB-AAB6-C9928AF23EE0

また、具体的な方法は以下のQiita記事に詳しく書かれていますので、参考にしてください

https://qiita.com/sugimount/items/8f47bb1a8931e1365e0d

:::note info
2021年6月に、サービス名称が *Oracle Content and Experience(略称:OCE)* から **Oracle Content Management(略称:OCM)** に変更されました。上記Qiita記事を確認する際は、旧サービス名称を現在のサービス名称である **Oracle Content Management(OCM)** に読み替えてご利用ください
:::


# REST APIでアセットを登録する

## デジタル・アセットを登録する

画像ファイルをデジタル・アセットとして登録します。今回は事前定義済のデジタル・アセット・タイプ`Image`タイプとして登録します

利用するREST APIはこちら（↓）

https://docs.oracle.com/en/cloud/paas/content-cloud/rest-api-manage-content/op-management-api-v1.1-items-post-2.html

Postmanを起動し、以下の通りに設定します

- メソッド: **`POST`**
- URI: `https://<OCMインスタンスのドメイン名>/content/management/api/v1.1/items`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/9b006257-24fb-2af7-6371-8eff896d9c87.png)

**Authorization**タブ
- Type: **`OAuth2.0`** 
- Token: **[事前に取得](#oauthトークンを取得する)したOAuthトークンを指定**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/a07c8db5-61b5-1066-53c2-ef20ec294ab6.png)

**Headers**タブ
- Content-Type: **`multipart/form-data`**
- X-Requested-With: **`XMLHttpRequest`**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/81992d11-8d22-41d7-2412-b746856312f8.png)

**Body**タブ
- Key: **`file`**
- Value: (アセットリポジトリに登録する画像ファイルを指定)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/51fbaa95-4521-150a-44ff-8b19a253d2ab.png)

- Key: **`item`**
- Value: (以下記述例参照)

```json:itemパラメータ(json形式)の記述例
{
    "name": "web2.jpeg",
    "type": "Image",
    "repositoryId": "3416C33BDD9E40E7ACE44310584DDF03"
}
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/b36f1e4d-1725-1362-2e7a-26f2489dd7bb.png)

**`Send`** をクリックします。REST APIが実行され、画像ファイルがImageタイプのデジタル・アセットとして登録されます。レスポンスに含まれる **`"id":"xxxxxxxxxx"`** の`xxxxxxxxxx`をメモします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/0aae671a-547d-1435-e769-12ea83129846.png)


アセット・リポジトリをWebブラウザで開きます。先ほどREST APIで登録した画像ファイル（ここではweb2.jpeg）が表示されることを確認します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/0ad71646-9b81-aaa7-cab8-4157f13f5001.png)


## コンテンツ・アイテムを登録する

REST APIを利用し、コンテンツ・アイテムを登録します。今回は[事前準備](#環境構築)で作成したコンテンツ・タイプ **`sampleNewsType`** から、コンテンツ・アイテムを作成します。また、メディア属性フィールドには、[前の手順](#デジタルアセットを登録する)で登録したに画像アセットを指定します

利用するREST APIはこちら（↓）

https://docs.oracle.com/en/cloud/paas/content-cloud/rest-api-manage-content/op-management-api-v1.1-items-post.html

以下の通りに設定します

- メソッド: **`POST`**
- URI: `https://<OCMインスタンスのURL>/content/management/api/v1.1/items`

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/9b006257-24fb-2af7-6371-8eff896d9c87.png)

**Authorization**タブ
- Type: **`OAuth2.0`** 
- Token: **[事前に取得](#oauthトークンを取得する)したOAuthトークンを指定**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/a07c8db5-61b5-1066-53c2-ef20ec294ab6.png)

**Headers**タブ
- Content-Type: **`application/json`**
- X-Requested-With: **`XMLHttpRequest`**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/5c2d768b-2199-1101-bf82-3d08aa121f0d.png)


**Body**タブ
以下の入力例を参考に、json形式で入力します。なお、`fields > image > id`には、[前の手順](#デジタルアセットを登録する)でメモした画像アセットの **`id`** をそのまま入力します

```json
{
    "name": "sample news content from REST API",
    "type": "sampleNewsType",
    "repositoryId": "3416C33BDD9E40E7ACE44310584DDF03",
    "language": "ja",
    "translatable": true,
    "fields":{
        "title": "RESTAPIから作成したサンプルニュースのタイトル",
        "image":{
            "id": "CONT2C7212F692C8485F9D7227688DCDE2AD"
        },
        "body": "RESTAPIから作成したサンプルニュースの本文です"
    }
}
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/bda2ae34-4935-2420-0343-7f355aafebb4.png)

**`Send`** をクリックします。REST APIが実行され、コンテンツ・アイテムが作成されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/d24e1779-40df-506a-8a8d-9d2845944899.png)


アセット・リポジトリをWebブラウザで開きます。先ほどREST APIで登録したsampleNewsTypeのコンテンツ・アイテムが表示されることを確認します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/d85c4d50-a28f-b30b-2c5a-c15321c58b32.png)

コンテンツ・アイテムを編集します。REST API実行時に`fields`で指定した**タイトル(title)**、**画像(image)**、**本文(body)** がそれぞれ設定されていることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/3f0bcb5d-c46b-7686-a06d-4bbe2008dea0.png)

# まとめ

この記事では、OCMの[REST API for Content Management](https://docs.oracle.com/en/cloud/paas/content-cloud/rest-api-manage-content/index.html)を利用し、REST API経由でデジタル・アセットとコンテンツ・アイテムを登録・作成する方法を紹介しました。

引き続き、こちら（↓）のQiita記事も併せてご確認いただけると幸いです

https://qiita.com/nakasato310/items/aafee42625c65583290c


##（参考）OCMの製品ドキュメント

- [Oracle Content Management 製品ドキュメント(英語)](https://docs.oracle.com/en/cloud/paas/content-cloud/books.html)
- [Oracle Content Management 製品ドキュメント（日本語翻訳版）](https://docs.oracle.com/cd/E83857_01/paas/content-cloud/books.html)  
    `製品ドキュメントの英語原本と日本語翻訳版です。翻訳されるまでに時差がありますので、最新情報の確認は 英語版のドキュメントをご利用ください`