[Oracle Cloud] クラウド型コンテンツ管理サービス OCE で REST API を実行してみた (Basic認証編)

# はじめに

Oracle Cloud Infrastructure(以下OCI) では、Oracle Content and Experience Cloud(以下OCE) という名前のクラウド型コンテンツ管理が提供されています。OCE では、Webブラウザを使用した GUI の操作はもちろん、REST API が提供されています。

REST API を実行するための方法が若干わかりにくかったので、備忘録として記事にします。

**※ 注意事項 : Basic 認証は、Documentに書かれていない方法となり、いつこの機能が削除されるかわかりません。IDCS の OAuth Token を使用した認証を推奨いたします。IDCS の OAuth Token を使った記事は、別の記事をアップロードします。**

OAuth Token の記事を書きました。こちらを使うのがお勧めです。
https://qiita.com/sugimount/items/8f47bb1a8931e1365e0d


# REST API の認証方式

OCE で REST API を実行するには、大きくわけて3つの方式があります。

- OAuth Token の取得 (Webブラウザベースで、手動取得)
- Resource Owner をつかった OAuth Token
- ID, Password を使用した Basic 認証



今回の記事では、3個目の ID, Password を使用した Basic 認証方式を使用して、REST API を実行していきます。

https://docs.oracle.com/en/cloud/paas/content-cloud/developer/authentication-oracle-content-and-experience-rest-apis.html



# Basic 認証の実行方法

OCE にログインする時に使う、ID と Password を使います。IDCS と連携している場合は、IDCS 上の ID と Password でも問題ありません。base64 で ID と Password を encode します。

Linux でのコマンドを使用しています。

```console
> echo -n "userid:yourpassword" | base64 -w 0
dXNlcmlkOnlvdXJwYXNzd29yZA==
```

 

`dXNlcmlkOnlvdXJwYXNzd29yZA==` が REST API に必要な文字列です。メモっておきます。



# REST API 実行

ドキュメント用 REST API を実行して、自分自身のフォルダからファイルを見つけて、ダウンロードを行います。

https://docs.oracle.com/cd/E83857_01/paas/content-cloud/rest-api-documents/index.html



まず、自分自身の Home Directory に含まれる情報を取得します。ポイントは、HTTP Request の Header に、`Authorization: Basic <your_secret>` を入れている箇所です。ID, Password を Base64 でエンコードした文字列を入れて認証を行っています。

また、JSON を見やすくするための jq コマンドも使っています。jq コマンドが入っていない場合は、適当にぐぐってインストールするのが便利でお勧めです。

URL と Basic 認証の部分を適宜環境に合わせて変更してください。

```sh
curl -s -H 'Authorization: Basic dXNlcmlkOnlvdXJwYXNzd29yZA==' \
-H "Content-Type: application/json" \
-X GET 'https://<your_cec_host>.cec.ocp.oraclecloud.com/documents/api/1.2/folders/items?orderby=name:asc&limit=100&offset=0' | jq .
```



実行例
自分自身の Home Directory に有るアイテムを取得しています。2個の Folder が存在していることが分かりますね。

```json
{
  "count": "2",
  "errorCode": "0",
  "hasMore": "0",
  "limit": "100",
  "offset": "0",
  "ownerFolderID": "self",
  "totalResults": "2",
  "items": [
    {
      "type": "folder",
      "id": "F8776D0D2E82E51A8E6FBB47768FA1867BE0DD00F1D9",
      "parentID": "self",
      "name": "dir1",
      "ownedBy": {
        "displayName": "your name",
        "id": "U8CE9A14D7A76CE864E70F82D472DB0DD1C9",
        "loginName": "your login id",
        "type": "user"
      },
      "createdBy": {
        "displayName": "your name",
        "id": "U8CE9A14D7A76CE864E70F82D472DB0DD1C9",
        "loginName": "your login id",
        "type": "user"
      },
      "modifiedBy": {
        "displayName": "your name",
        "id": "U8CE9A14D7A76CE864E70F82D472DB0DD1C9",
        "loginName": "your login id",
        "type": "user"
      },
      "createdTime": "2020-02-29T16:09:39Z",
      "modifiedTime": "2020-02-29T16:09:39Z",
      "size": "65427",
      "childItemsCount": "2"
    },
    {
      "type": "folder",
      "id": "FBBFB80770D60CAC84906C67D777999E1C4C95B392E4",
      "parentID": "self",
      "name": "dir2",
      "ownedBy": {
        "displayName": "your name",
        "id": "U8CE9A14D7A76CE864E70F82D472DB0DD1C9",
        "loginName": "your login id",
        "type": "user"
      },
      "createdBy": {
        "displayName": "your name",
        "id": "U8CE9A14D7A76CE864E70F82D472DB0DD1C9",
        "loginName": "your login id",
        "type": "user"
      },
      "modifiedBy": {
        "displayName": "your name",
        "id": "U8CE9A14D7A76CE864E70F82D472DB0DD1C9",
        "loginName": "your login id",
        "type": "user"
      },
      "createdTime": "2020-03-01T14:53:07Z",
      "modifiedTime": "2020-03-01T14:53:07Z",
      "size": "0",
      "childItemsCount": "0"
    }
  ]
}
```



では次に、2個のフォルダから、1個選んで、そのフォルダに含まれるアイテムを表示します。Folder の ID `F8776D0D2E82E51A8E6FBB47768FA1867BE0DD00F1D9` を使用します。

```sh
curl -s -H 'Authorization: Basic dXNlcmlkOnlvdXJwYXNzd29yZA==' \
-H "Content-Type: application/json" \
-X GET 'https://<your_cec_host>.cec.ocp.oraclecloud.com/documents/api/1.2/folders/F8776D0D2E82E51A8E6FBB47768FA1867BE0DD00F1D9/items' | jq .
```



実行例
`1582820400987.png` というファイルが items 配下に存在しています。

```json
{
  "childItemsCount": "2",
  "count": "2",
  "createdBy": {
    "displayName": "your name",
    "id": "U8CE9A14D7A76CE864E70F82D472DB0DD1C9",
    "loginName": "your login id",
    "type": "user"
  },
  "createdTime": "2020-02-29T16:09:39Z",
  "errorCode": "0",
  "hasMore": "0",
  "id": "F8776D0D2E82E51A8E6FBB47768FA1867BE0DD00F1D9",
  "limit": "100",
  "modifiedBy": {
    "displayName": "your name",
    "id": "U8CE9A14D7A76CE864E70F82D472DB0DD1C9",
    "loginName": "your login id",
    "type": "user"
  },
  "modifiedTime": "2020-02-29T16:09:39Z",
  "name": "dir1",
  "offset": "0",
  "ownedBy": {
    "displayName": "your name",
    "id": "U8CE9A14D7A76CE864E70F82D472DB0DD1C9",
    "loginName": "your login id",
    "type": "user"
  },
  "parentID": "self",
  "size": "65427",
  "totalResults": "2",
  "type": "folder",
  "items": [
    {
      "type": "folder",
      "id": "FEF11D701F221746F510F7D7B091BBE332B6F43FC835",
      "parentID": "F8776D0D2E82E51A8E6FBB47768FA1867BE0DD00F1D9",
      "name": "mydir1",
      "ownedBy": {
        "displayName": "your name",
        "id": "U8CE9A14D7A76CE864E70F82D472DB0DD1C9",
        "loginName": "your login id",
        "type": "user"
      },
      "createdBy": {
        "displayName": "Web-2020-03-01",
        "id": "LWeb-2020-03-01|10.244.10.6",
        "type": "user"
      },
      "modifiedBy": {
        "displayName": "Web-2020-03-01",
        "id": "LWeb-2020-03-01|10.244.10.6",
        "type": "user"
      },
      "createdTime": "2020-03-01T03:51:58Z",
      "modifiedTime": "2020-03-01T03:51:58Z",
      "size": "0",
      "childItemsCount": "0"
    },
    {
      "type": "file",
      "id": "D0467C615FB6092011B2EA8A2F44E6D8201637EF5D5E",
      "parentID": "F8776D0D2E82E51A8E6FBB47768FA1867BE0DD00F1D9",
      "name": "1582820400987.png",
      "ownedBy": {
        "displayName": "your name",
        "id": "U8CE9A14D7A76CE864E70F82D472DB0DD1C9",
        "loginName": "your login id",
        "type": "user"
      },
      "createdBy": {
        "displayName": "your name",
        "id": "U8CE9A14D7A76CE864E70F82D472DB0DD1C9",
        "loginName": "your login id",
        "type": "user"
      },
      "modifiedBy": {
        "displayName": "your name",
        "id": "U8CE9A14D7A76CE864E70F82D472DB0DD1C9",
        "loginName": "your login id",
        "type": "user"
      },
      "createdTime": "2020-02-29T16:13:36Z",
      "modifiedTime": "2020-02-29T16:13:36Z",
      "version": "1",
      "mimeType": "image/png",
      "size": "65427"
    }
  ]
```



では、次にそのファイルをダウンロードしてみます。
実行したディレクトリに、`donwloadfile.jpeg` ファイルがダウンロードされます。

```sh
curl -s -H 'Authorization: Basic dXNlcmlkOnlvdXJwYXNzd29yZA==' \
-H "Content-Type: application/json" \
-X GET 'https://<your_cec_host>.cec.ocp.oraclecloud.com/documents/api/1.2/files/D0467C615FB6092011B2EA8A2F44E6D8201637EF5D5E/data' \
-o downloadfile.jpg
```



# 参考URL

Quick Start
https://docs.oracle.com/cd/E83857_01/paas/content-cloud/rest-api-documents/QuickStart.html

Top Page
https://docs.oracle.com/cd/E83857_01/paas/content-cloud/rest-api-documents/index.html