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

# はじめに

Oracle Cloud Infrastructure(以下OCI) では、Oracle Content and Experience Cloud(以下OCE) という名前のクラウド型コンテンツ管理が提供されています。前回の記事では、Basic 認証での REST API の実行方法をご紹介しました。Basic 認証の方法は、Document には明記されていない方法となっていて、いつ機能が削除されるか不明です。今回は、Document に記載されている、OAuth Token を使用した REST API の方法をご紹介します。



# REST API の認証方式

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

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



今回の記事では、2個目の [Resource Owner をつかった OAuth Token] を使用して、REST API を実行していきます。

https://docs.oracle.com/en/cloud/paas/content-cloud/developer/integrate-using-oauth-resource-owner.html



# IDCS の設定

OCI では、IDCS (Identity Cloud Service) と呼ばれるクラウド型ID管理サービスを提供しています。OCE の REST API を実行するためには、IDCS から OAuth Token を取得します。OAuth Token を取得するために、IDCS 上で事前の管理設定作業が必要です。

IDCS の画面を開き、メニューから Applications を選択します。

![1583274700601.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/9f29f7e9-3794-4c45-4f0a-aa0525fb911b.png)



Add をクリックします

![1583164043911.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/fd52c2a1-9d4b-c9d5-bb2b-35bc18e9f432.png)



Click Confidential Application をえらびます

![1583164091264.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/3f0761da-16ca-384d-9090-5bd0fd81a144.png)



名前を適当に入れて、Next を押します

![1583164135450.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/990247d4-da3b-731f-aea9-8d5baaab8bce.png)



Configure this application as a client now を選び、Resource Owner を選択します

![1583164180708.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/79a17882-f328-8664-4b1f-ca055c830de1.png)



下にスクロールして、Add Scope を押します

![1583164258351.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/9b45116c-755b-ae48-687e-9ddb8f738dc5.png)



OCEAUTO_xxxx と書かれている OCE インスタンスの行から、[>] を選びます

![1583164311746.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/c5478b2c-43df-5910-0e40-c20591c14002.png)



`urn:ope:cec:all` が末尾に書かれているものを選び、Add を押します

![1583164351573.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/da667dc7-c486-cbc6-f884-ca2199525b08.png)



Next を押します

![1583164392062.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/30fe72ec-08e3-a397-be22-90dca50f0403.png)



Next を押します

![1583164416371.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/9b7656ac-257b-1af0-4af3-7140796f247e.png)



Finish を押します

![1583164439958.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/a1fd3b44-fe58-3915-c359-4724a29cd2d8.png)



Client ID, and Client Secret が生成されます (記事に書いている Client Secret などは適当な文字列です。実際には使えません)

Client ID : 72a22bc1b00240b285c526dabc8d6aa1

Client Secret : 271ee84d-a511-4e2e-b870-a8c1f496b791

![1583164461912.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/1f6d91b9-bb69-3ede-fc4d-3372a7e4f38c.png)



Activate を押して、有効化します

![1583164732731.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/b037f428-20eb-2765-61f0-de98b24cb8e3.png)





# OAuth Token の取得

IDCS で生成した、Client ID と、Client Secret を使用して、Base64 でエンコードをします。

```
> echo -n "72a22bc1b00240b285c526dabc8d6aa1:271ee84d-a511-4e2e-b870-a8c1f496b791" | base64 -w 0
NzJhMjJiYzFiMDAyNDBiMjg1YzUyNmRhYmM4ZDZhYTk6MjcxZWU4NGQtYTUxMS00ZTJlLWI4NzAtYThjMWY0OTZiNzl1
```



IDCS のエンドポイント宛に、OAuth Token の取得をリクエストします。ポイントはつぎのとおりです。

- Request Header に `Authorization: Basic <エンコード後の文字列>` を追加する
- POST Request の Body に、`grant_type=password...` で始まる文字列を追加する



POST Request の Body に記載するパラメータは次の物を入れます

- grant_type : password
- scope : IDCS の Select Scope で指定した文字列を入力  

![1583275402434.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/104247/a680c37f-51e3-64fc-0b88-d614ed33cb89.png)



- username : OCE にログインする時に使用する、IDCS 上の ID を指定。 `yourname@address.com` のようにメールアドレスであることが多いです
- password : 上記の ID に紐づく、IDCS 上のパスワードを指定します。注意点として、パスワードの中に % のようなパース出来ない文字列が有る場合は、エスケープする必要があります。もし記号に不安があるときは、パスワードを変更して、パースが出来なさそうな記号を含めないパスワードとすると良いでしょう。



コマンド例

```
curl -v -i \
-H 'Authorization: Basic NzJhMjJiYzFiMDAyNDBiMjg1YzUyNmRhYmM4ZDZhYTk6MjcxZWU4NGQtYTUxMS00ZTJlLWI4NzAtYThjMWY0OTZiNzl1' \
-d 'grant_type=password&scope=https://712C77D006504F58821E88AC6ECC03A6.cec.ocp.oraclecloud.com:443/urn:opc:cec:all&username=yourname@address.com&password=yourpassword' \
-X POST https://<your-idcs-instance>.identity.oraclecloud.com/oauth2/v1/token
```



実行例

末尾に access_token が返ってきます。これを使用して、REST API を実行します

```
> curl -v -i \
  -H 'Authorization: Basic NzJhMjJiYzFiMDAyNDBiMjg1YzUyNmRhYmM4ZDZhYTk6MjcxZWU4NGQtYTUxMS00ZTJlLWI4NzAtYThjMWY0OTZiNzl1' \
  -d 'grant_type=password&scope=https://712C77D006504F58821E88AC6ECC03A6.cec.ocp.oraclecloud.com:443/urn:opc:cec:all&username=yourname@address.com&password=yourpassword' \
  -X POST https://<your-idcs-instance>.identity.oraclecloud.com/oauth2/v1/token
Note: Unnecessary use of -X or --request, POST is already inferred.
*   Trying 192.29.38.183...
* TCP_NODELAY set
* Connected to <your-idcs-instance>.identity.oraclecloud.com (192.29.38.183) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/certs/ca-certificates.crt
  CApath: /etc/ssl/certs
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Client hello (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: C=US; ST=California; L=Redwood City; O=Oracle Corporation; OU=Oracle PAASCS AMER-CS; CN=*.identity.oraclecloud.com
*  start date: Oct 10 00:00:00 2019 GMT
*  expire date: Jan  8 12:00:00 2021 GMT
*  subjectAltName: host "<your-idcs-instance>.identity.oraclecloud.com" matched cert's "*.identity.oraclecloud.com"
*  issuer: C=US; O=DigiCert Inc; CN=DigiCert SHA2 Secure Server CA
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
* Using Stream ID: 1 (easy handle 0x55ba72224580)
> POST /oauth2/v1/token HTTP/2
> Host: <your-idcs-instance>.identity.oraclecloud.com
> User-Agent: curl/7.58.0
> Accept: */*
> Authorization: Basic NzJhMjJiYzFiMDAyNDBiMjg1YzUyNmRhYmM4ZDZhYTk6MjcxZWU4NGQtYTUxMS00ZTJlLWI4NzAtYThjMWY0OTZiNzl1
> Content-Length: 169
> Content-Type: application/x-www-form-urlencoded
>
* Connection state changed (MAX_CONCURRENT_STREAMS updated)!
* We are completely uploaded and fine
< HTTP/2 200 
HTTP/2 200
< cache-control: no-store
cache-control: no-store
< content-type: application/json;charset=UTF-8
content-type: application/json;charset=UTF-8
< date: Tue, 03 Mar 2020 22:47:21 GMT
date: Tue, 03 Mar 2020 22:47:21 GMT
< pragma: no-cache
pragma: no-cache
< server: Oracle Identity Cloud Service
server: Oracle Identity Cloud Service
< strict-transport-security: max-age=315360000; includeSubdomains
strict-transport-security: max-age=315360000; includeSubdomains
< vary: Accept-Encoding
vary: Accept-Encoding
< via: 1.1 net-idcs-config
via: 1.1 net-idcs-config
< x-content-type-options: nosniff
x-content-type-options: nosniff
< x-oracle-dms-ecid: XSl_F0zkD00000000
x-oracle-dms-ecid: XSl_F0zkD00000000
< x-oracle-dms-rid: 0:1
x-oracle-dms-rid: 0:1
< x-xss-protection: 1; mode=block
x-xss-protection: 1; mode=block
< content-length: 2239
content-length: 2239

<
{"access_token":"eyJ4NXQjUzI1NiI6Ik9oNktOanV5OUZwbThZa1BCN2Q0SjlfcHB1NmI1VlRpOUVlM3g5RFc4ZWciLCJ4NXQiOiJLV3FmcW5vNTRENUk2ZVhGVFNGejdNY2ozNUUiLCJraWQiOiJTSUdOSU5HX0tFWSIsImFsZyI6IlJTMjU2In1.eyJ1c2VyX3R6IjoiQW1lcmljYVwvQ2hpY2FnbyIsInN1YiI6InN1Z3VydS5zdWdpeWFtYUBvcmFjbGUuY29tIiwidXNlcl9sb2NhbGUiOiJlbiIsInVzZXIudGVuYW50Lm5hbWUiOiJpZGNzLWEyMmQyMWM3YmIyYjRkYjBiZDU3YmQ1OGU3ZDQ4MjMzIiwiaXNzIjoiaHR0cHM6XC9cL2lkZW50aXR5Lm9yYWNsZWNsb3VkLmNvbVwvIiwidXNlcl90ZW5hbnRuYW1lIjoiaWRjcy1hMjJkMjFjN2JiMmI0ZGIwYmQ1N2JkNThlN2Q0ODIzMyIsImNsaWVudF9pZCI6IjcyYTIyYmMxYjAwMjQwYjI4NWM1MjZkYWJjOGQ2YWE5Iiwic3ViX3R5cGUiOiJ1c2VyIiwic2NvcGUiOiJ1cm46b3BjOmNlYzphbGwiLCJjbGllbnRfdGVuYW50bmFtZSI6ImlkY3MtYTIyZDIxYzdiYjJiNGRiMGJkNTdiZDU4ZTdkNDgyMzMiLCJ1c2VyX2xhbmciOiJlbiIsImV4cCI6MTU4Mzg4MDQ0MSwiaWF0IjoxNTgzMjc1NjQxLCJjbGllbnRfZ3VpZCI6ImE4NzljYjRlODFjMTQ3OTY5NTg4NzYzMzBjMDVjODJjIiwiY2xpZW50X25hbWUiOiJvY2VhcGl0ZXN0MyIsInRlbmFudCI6ImlkY3MtYTIyZDIxYzdiYjJiNGRiMGJkNTdiZDU4ZTdkNDgyMzMiLCJqdGkiOiIxZTNmZTk0My0zZGQxLTRmNzktODA5Yi1mMmExMGNhYWQzNTQiLCJ1c2VyX2Rpc3BsYXluYW1lIjoiU3VndXJ1IFN1Z2l5YW1hIiwic3ViX21hcHBpbmdhdHRyIjoidXNlck5hbWUiLCJwcmltVGVuYW50Ijp0cnVlLCJ0b2tfdHlwZSI6IkFUIiwiY2FfZ3VpZCI6ImNhY2N0LTAxOWI0NDhkNThkYzQ5MjBhMWJiNjg3MmYxYjRhZmFmIiwiYXVkIjpbInVybjpvcGM6bGJhYXM6bG9naWNhbGd1aWQ9NzEyQzc3RDAwNjUwNEY1ODgyMUU4OEFDNkVDQzAzQTYiLCJodHRwczpcL1wvNzEyQzc3RDAwNjUwNEY1ODgyMUU4OEFDNkVDQzAzQTYuY2VjLm9jcC5vcmFjbGVjbG91ZC5jb206NDQzXC8iLCJodHRwczpcL1wvNzEyQzc3RDAwNjUwNEY1ODgyMUU4OEFDNkVDQzAzQTYuY2VjLm9jcC5vcmFjbGVjbG91ZC5jb206NDQzXC9kb2N1bWVudHNcL2ludGVncmF0aW9uXC9zb2NpYWwiLCJodHRwczpcL1wvNzEyQzc3RDAwNjUwNEY1ODgyMUU4OEFDNkVDQzAzQTYuY2VjLm9jcC5vcmFjbGVjbG91ZC5jb206NDQzXC9vc25cL3NvY2lhbFwvYXBpIl0sInVzZXJfaWQiOiI2YjE4ZTE5ZDUwNzA0ODdmYmQyZjYxMDdjYTc0MDEwYiIsInRlbmFudF9pc3MiOiJodHRwczpcL1wvaWRjcy1hMjJkMjFjN2JiMmI0ZGIwYmQ1N2JkNThlN2Q0ODIzMy5pZGVudGl0eS5vcmFjbGVjbG91ZC5jb206NDQzIn0.XbmPc5qxjCBlFOP2y_wlNJ_gRkEHAtQUASqaeDzEnjuXimNRRt5AxZoAgnQs67EK5oi4A0cpAxz4b8kOPcTSWYg9UCS63E7dEWDb-yeF5AP_bLG-nQvetTgeEUsEUyCHowDAAzcvsj04qLhjuFCAKQJOz3jPWlHZFmiQ5OX0hX_6Z0PtkM-6v2B5cNhMa5EKTy_* Connection #0 to host <your-idcs-instance>.identity.oraclecloud.com left intact
g6nqI146-di9LavqqkcUkrtes3zhvGozDDzOThTYxq-I7qW7h0UyjV-H5ZwlC9sY202-aJLAgtib-IUAIEB2023du8j1Ru0OPhMUu7rO_iEKHraerQk1689yg30Tb41v-Sx1pY6eyUH_7YcGWWQ","token_type":"Bearer","expires_in":604800}
```





# 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: Bearer <access_token>` を入れている箇所です。IDCS から取得した OAuth Token を文字列を入れて認証を行っています。

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

環境に合わせて変更してください。

```
curl -s -H 'Authorization: Bearer eyJ4NXQjUzI1NiI6Ik9oNktOanV5OUZwbThZa1BCN2Q0SjlfcHB1NmI1VlRpOUVlM3g5RFc4ZWciLCJ4NXQiOiJLV3FmcW5vNTRENUk2ZVhGVFNGejdNY2ozNUUiLCJraWQiOiJTSUdOSU5HX0tFWSIsImFsZyI6IlJTMjU2In1.eyJ1c2VyX3R6IjoiQW1lcmljYVwvQ2hpY2FnbyIsInN1YiI6InN1Z3VydS5zdWdpeWFtYUBvcmFjbGUuY29tIiwidXNlcl9sb2NhbGUiOiJlbiIsInVzZXIudGVuYW50Lm5hbWUiOiJpZGNzLWEyMmQyMWM3YmIyYjRkYjBiZDU3YmQ1OGU3ZDQ4MjMzIiwiaXNzIjoiaHR0cHM6XC9cL2lkZW50aXR5Lm9yYWNsZWNsb3VkLmNvbVwvIiwidXNlcl90ZW5hbnRuYW1lIjoiaWRjcy1hMjJkMjFjN2JiMmI0ZGIwYmQ1N2JkNThlN2Q0ODIzMyIsImNsaWVudF9pZCI6IjcyYTIyYmMxYjAwMjQwYjI4NWM1MjZkYWJjOGQ2YWE5Iiwic3ViX3R5cGUiOiJ1c2VyIiwic2NvcGUiOiJ1cm46b3BjOmNlYzphbGwiLCJjbGllbnRfdGVuYW50bmFtZSI6ImlkY3MtYTIyZDIxYzdiYjJiNGRiMGJkNTdiZDU4ZTdkNDgyMzMiLCJ1c2VyX2xhbmciOiJlbiIsImV4cCI6MTU4MzgyMDY3NywiaWF0IjoxNTgzMjE1ODc3LCJjbGllbnRfZ3VpZCI6ImE4NzljYjRlODFjMTQ3OTY5NTg4NzYzMzBjMDVjODJjIiwiY2xpZW50X25hbWUiOiJvY2VhcGl0ZXN0MyIsInRlbmFudCI6ImlkY3MtYTIyZDIxYzdiYjJiNGRiMGJkNTdiZDU4ZTdkNDgyMzMiLCJqdGkiOiIxZTZkNjI4Yy0xMmIyLTRiYzUtOTk2Mi02ZmU2M2FmNDQxMzciLCJ1c2VyX2Rpc3BsYXluYW1lIjoiU3VndXJ1IFN1Z2l5YW1hIiwic3ViX21hcHBpbmdhdHRyIjoidXNlck5hbWUiLCJwcmltVGVuYW50Ijp0cnVlLCJ0b2tfdHlwZSI6IkFUIiwiY2FfZ3VpZCI6ImNhY2N0LTAxOWI0NDhkNThkYzQ5MjBhMWJiNjg3MmYxYjRhZmFmIiwiYXVkIjpbInVybjpvcGM6bGJhYXM6bG9naWNhbGd1aWQ9NzEyQzc3RDAwNjUwNEY1ODgyMUU4OEFDNkVDQzAzQTYiLCJodHRwczpcL1wvNzEyQzc3RDAwNjUwNEY1ODgyMUU4OEFDNkVDQzAzQTYuY2VjLm9jcC5vcmFjbGVjbG91ZC5jb206NDQzXC8iLCJodHRwczpcL1wvNzEyQzc3RDAwNjUwNEY1ODgyMUU4OEFDNkVDQzAzQTYuY2VjLm9jcC5vcmFjbGVjbG91ZC5jb206NDQzXC9kb2N1bWVudHNcL2ludGVncmF0aW9uXC9zb2NpYWwiLCJodHRwczpcL1wvNzEyQzc3RDAwNjUwNEY1ODgyMUU4OEFDNkVDQzAzQTYuY2VjLm9jcC5vcmFjbGVjbG91ZC5jb206NDQzXC9vc25cL3NvY2lhbFwvYXBpIl0sInVzZXJfaWQiOiI2YjE4ZTE5ZDUwNzA0ODdmYmQyZjYxMDdjYTc0MDEwYiIsInRlbmFudF9pc3MiOiJodHRwczpcL1wvaWRjcy1hMjJkMjFjN2JiMmI0ZGIwYmQ1N2JkNThlN2Q0ODIzMy5pZGVudGl0eS5vcmFjbGVjbG91ZC5jb206NDQzIn0.g3szQzufb8wH2Yxwrq-K0tTlNuFPge6SCkarC87zDARKf_SbyAOBYBBIzlytH92DgzlF-XCNOEbg4EJoaZs3vdkiMdhVP0SHzf5-SVywIzK0ZHhne2iEDZEqIzUVjWDVThJzJBDOFTKURTqjnRpYNfxJfv4YPExs4iYdfir-ozQUJo6wdRZCUHmmTp23msm0URfLQVdxZBNZSbVAaXcx_o3c9V4ZnRDuIPDYwxtm3Ys0BI3GR-0fQZuEGcRdObjBLJJHilvfO9ybkb9A-d7XxXY2PYg2-8qlt6gV5TRiIwXxus_wpIk9BNUxMsmdqEMXLT4Xc-PmoJmriWTX5qxzbQ' \
-H "Content-Type: application/json" \
-X GET 'https://<your_oce_instance>.cec.ocp.oraclecloud.com/documents/api/1.2/folders/items?orderby=name:asc&limit=100&offset=0' | jq .
```



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

```
{
  "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` を使用します。

```
curl -s -H 'Authorization: Bearer eyJ4NXQjUzI1NiI6Ik9oNktOanV5OUZwbThZa1BCN2Q0SjlfcHB1NmI1VlRpOUVlM3g5RFc4ZWciLCJ4NXQiOiJLV3FmcW5vNTRENUk2ZVhGVFNGejdNY2ozNUUiLCJraWQiOiJTSUdOSU5HX0tFWSIsImFsZyI6IlJTMjU2In1.eyJ1c2VyX3R6IjoiQW1lcmljYVwvQ2hpY2FnbyIsInN1YiI6InN1Z3VydS5zdWdpeWFtYUBvcmFjbGUuY29tIiwidXNlcl9sb2NhbGUiOiJlbiIsInVzZXIudGVuYW50Lm5hbWUiOiJpZGNzLWEyMmQyMWM3YmIyYjRkYjBiZDU3YmQ1OGU3ZDQ4MjMzIiwiaXNzIjoiaHR0cHM6XC9cL2lkZW50aXR5Lm9yYWNsZWNsb3VkLmNvbVwvIiwidXNlcl90ZW5hbnRuYW1lIjoiaWRjcy1hMjJkMjFjN2JiMmI0ZGIwYmQ1N2JkNThlN2Q0ODIzMyIsImNsaWVudF9pZCI6IjcyYTIyYmMxYjAwMjQwYjI4NWM1MjZkYWJjOGQ2YWE5Iiwic3ViX3R5cGUiOiJ1c2VyIiwic2NvcGUiOiJ1cm46b3BjOmNlYzphbGwiLCJjbGllbnRfdGVuYW50bmFtZSI6ImlkY3MtYTIyZDIxYzdiYjJiNGRiMGJkNTdiZDU4ZTdkNDgyMzMiLCJ1c2VyX2xhbmciOiJlbiIsImV4cCI6MTU4MzgyMDY3NywiaWF0IjoxNTgzMjE1ODc3LCJjbGllbnRfZ3VpZCI6ImE4NzljYjRlODFjMTQ3OTY5NTg4NzYzMzBjMDVjODJjIiwiY2xpZW50X25hbWUiOiJvY2VhcGl0ZXN0MyIsInRlbmFudCI6ImlkY3MtYTIyZDIxYzdiYjJiNGRiMGJkNTdiZDU4ZTdkNDgyMzMiLCJqdGkiOiIxZTZkNjI4Yy0xMmIyLTRiYzUtOTk2Mi02ZmU2M2FmNDQxMzciLCJ1c2VyX2Rpc3BsYXluYW1lIjoiU3VndXJ1IFN1Z2l5YW1hIiwic3ViX21hcHBpbmdhdHRyIjoidXNlck5hbWUiLCJwcmltVGVuYW50Ijp0cnVlLCJ0b2tfdHlwZSI6IkFUIiwiY2FfZ3VpZCI6ImNhY2N0LTAxOWI0NDhkNThkYzQ5MjBhMWJiNjg3MmYxYjRhZmFmIiwiYXVkIjpbInVybjpvcGM6bGJhYXM6bG9naWNhbGd1aWQ9NzEyQzc3RDAwNjUwNEY1ODgyMUU4OEFDNkVDQzAzQTYiLCJodHRwczpcL1wvNzEyQzc3RDAwNjUwNEY1ODgyMUU4OEFDNkVDQzAzQTYuY2VjLm9jcC5vcmFjbGVjbG91ZC5jb206NDQzXC8iLCJodHRwczpcL1wvNzEyQzc3RDAwNjUwNEY1ODgyMUU4OEFDNkVDQzAzQTYuY2VjLm9jcC5vcmFjbGVjbG91ZC5jb206NDQzXC9kb2N1bWVudHNcL2ludGVncmF0aW9uXC9zb2NpYWwiLCJodHRwczpcL1wvNzEyQzc3RDAwNjUwNEY1ODgyMUU4OEFDNkVDQzAzQTYuY2VjLm9jcC5vcmFjbGVjbG91ZC5jb206NDQzXC9vc25cL3NvY2lhbFwvYXBpIl0sInVzZXJfaWQiOiI2YjE4ZTE5ZDUwNzA0ODdmYmQyZjYxMDdjYTc0MDEwYiIsInRlbmFudF9pc3MiOiJodHRwczpcL1wvaWRjcy1hMjJkMjFjN2JiMmI0ZGIwYmQ1N2JkNThlN2Q0ODIzMy5pZGVudGl0eS5vcmFjbGVjbG91ZC5jb206NDQzIn0.g3szQzufb8wH2Yxwrq-K0tTlNuFPge6SCkarC87zDARKf_SbyAOBYBBIzlytH92DgzlF-XCNOEbg4EJoaZs3vdkiMdhVP0SHzf5-SVywIzK0ZHhne2iEDZEqIzUVjWDVThJzJBDOFTKURTqjnRpYNfxJfv4YPExs4iYdfir-ozQUJo6wdRZCUHmmTp23msm0URfLQVdxZBNZSbVAaXcx_o3c9V4ZnRDuIPDYwxtm3Ys0BI3GR-0fQZuEGcRdObjBLJJHilvfO9ybkb9A-d7XxXY2PYg2-8qlt6gV5TRiIwXxus_wpIk9BNUxMsmdqEMXLT4Xc-PmoJmriWTX5qxzbQ' \
-H "Content-Type: application/json" \
-X GET 'https://<your_oce_instance>.cec.ocp.oraclecloud.com/documents/api/1.2/folders/F8776D0D2E82E51A8E6FBB47768FA1867BE0DD00F1D9/items' | jq .
```



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

```
{
  "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` ファイルがダウンロードされます。

```
curl -s -H 'Authorization: Bearer eyJ4NXQjUzI1NiI6Ik9oNktOanV5OUZwbThZa1BCN2Q0SjlfcHB1NmI1VlRpOUVlM3g5RFc4ZWciLCJ4NXQiOiJLV3FmcW5vNTRENUk2ZVhGVFNGejdNY2ozNUUiLCJraWQiOiJTSUdOSU5HX0tFWSIsImFsZyI6IlJTMjU2In0.eyJ1c2VyX3R6IjoiQW1lcmljYVwvQ2hpY2FnbyIsInN1YiI6InN1Z3VydS5zdWdpeWFtYUBvcmFjbGUuY29tIiwidXNlcl9sb2NhbGUiOiJlbiIsInVzZXIudGVuYW50Lm5hbWUiOiJpZGNzLWEyMmQyMWM3YmIyYjRkYjBiZDU3YmQ1OGU3ZDQ4MjMzIiwiaXNzIjoiaHR0cHM6XC9cL2lkZW50aXR5Lm9yYWNsZWNsb3VkLmNvbVwvIiwidXNlcl90ZW5hbnRuYW1lIjoiaWRjcy1hMjJkMjFjN2JiMmI0ZGIwYmQ1N2JkNThlN2Q0ODIzMyIsImNsaWVudF9pZCI6IjcyYTIyYmMxYjAwMjQwYjI4NWM1MjZkYWJjOGQ2YWE5Iiwic3ViX3R5cGUiOiJ1c2VyIiwic2NvcGUiOiJ1cm46b3BjOmNlYzphbGwiLCJjbGllbnRfdGVuYW50bmFtZSI6ImlkY3MtYTIyZDIxYzdiYjJiNGRiMGJkNTdiZDU4ZTdkNDgyMzMiLCJ1c2VyX2xhbmciOiJlbiIsImV4cCI6MTU4MzgyMDY3NywiaWF0IjoxNTgzMjE1ODc3LCJjbGllbnRfZ3VpZCI6ImE4NzljYjRlODFjMTQ3OTY5NTg4NzYzMzBjMDVjODJjIiwiY2xpZW50X25hbWUiOiJvY2VhcGl0ZXN0MyIsInRlbmFudCI6ImlkY3MtYTIyZDIxYzdiYjJiNGRiMGJkNTdiZDU4ZTdkNDgyMzMiLCJqdGkiOiIxZTZkNjI4Yy0xMmIyLTRiYzUtOTk2Mi02ZmU2M2FmNDQxMzciLCJ1c2VyX2Rpc3BsYXluYW1lIjoiU3VndXJ1IFN1Z2l5YW1hIiwic3ViX21hcHBpbmdhdHRyIjoidXNlck5hbWUiLCJwcmltVGVuYW50Ijp0cnVlLCJ0b2tfdHlwZSI6IkFUIiwiY2FfZ3VpZCI6ImNhY2N0LTAxOWI0NDhkNThkYzQ5MjBhMWJiNjg3MmYxYjRhZmFmIiwiYXVkIjpbInVybjpvcGM6bGJhYXM6bG9naWNhbGd1aWQ9NzEyQzc3RDAwNjUwNEY1ODgyMUU4OEFDNkVDQzAzQTYiLCJodHRwczpcL1wvNzEyQzc3RDAwNjUwNEY1ODgyMUU4OEFDNkVDQzAzQTYuY2VjLm9jcC5vcmFjbGVjbG91ZC5jb206NDQzXC8iLCJodHRwczpcL1wvNzEyQzc3RDAwNjUwNEY1ODgyMUU4OEFDNkVDQzAzQTYuY2VjLm9jcC5vcmFjbGVjbG91ZC5jb206NDQzXC9kb2N1bWVudHNcL2ludGVncmF0aW9uXC9zb2NpYWwiLCJodHRwczpcL1wvNzEyQzc3RDAwNjUwNEY1ODgyMUU4OEFDNkVDQzAzQTYuY2VjLm9jcC5vcmFjbGVjbG91ZC5jb206NDQzXC9vc25cL3NvY2lhbFwvYXBpIl0sInVzZXJfaWQiOiI2YjE4ZTE5ZDUwNzA0ODdmYmQyZjYxMDdjYTc0MDEwYiIsInRlbmFudF9pc3MiOiJodHRwczpcL1wvaWRjcy1hMjJkMjFjN2JiMmI0ZGIwYmQ1N2JkNThlN2Q0ODIzMy5pZGVudGl0eS5vcmFjbGVjbG91ZC5jb206NDQzIn0.g3szQzufb8wH2Yxwrq-K0tTlNuFPge6SCkarC87zDARKf_SbyAOBYBBIzlytH92DgzlF-XCNOEbg4EJoaZs3vdkiMdhVP0SHzf5-SVywIzK0ZHhne2iEDZEqIzUVjWDVThJzJBDOFTKURTqjnRpYNfxJfv4YPExs4iYdfir-ozQUJo6wdRZCUHmmTp23msm0URfLQVdxZBNZSbVAaXcx_o3c9V4ZnRDuIPDYwxtm3Ys0BI3GR-0fQZuEGcRdObjBLJJHilvfO9ybkb9A-d7XxXY2PYg2-8qlt6gV5TRiIwXxus_wpIk9BNUxMsmdqEMXLT4Xc-PmoJmriWTX5qxzbQ' \
-H "Content-Type: application/json" \
-X GET 'https://sugitest1-ocetest1.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