マーケットプレイス版Oracle WebCenter Content For OCIのREST APIを試してみた

# マーケットプレイス版Oracle WebCenter Content For OCI

Oracle WebCenter Content(WCC)は、様々な種類のコンテンツの保管・管理を目的とした統合コンテンツ管理アプリケーションです。

マーケットプレイス版のOracle WebCenter Content(**WCC on MP**)は、Oracle Cloud Infrastructure上のVMベースのソリューションとして提供されます。WCC on MPを使用すると、顧客は数回クリックするだけで環境をプロビジョニング/セットアップでき、クラウド上でコンテンツ・ソリューションを提供できるようになります。

詳細は製品ドキュメントおよび概要紹介資料をご確認ください

**製品ドキュメント**

https://docs.oracle.com/en/cloud/paas/webcenter-content/webcenter-content-marketplace/index.html

**概要紹介資料(SpeakerDeck)**

https://speakerdeck.com/oracle4engineer/oracle-webcenter-content-for-oci-on-marketplace


# この記事で紹介すること、しないこと

これまでソフトウェア・ライセンスとして提供されていたWCCは、外部システムからWCC内のコンテンツを操作するAPIとして、WebサービスAPIとRIDC(Remote IntraDoc Client)の2つをサポートしていました。
WCC on MPは、これら2つのAPIに加えて、**REST API** をサポートしました。この記事では、WCC on MPが提供するREST APIの基本的な操作方法を説明します。

:::note info
~~2024年12月1日時点、REST APIはWCC on MPのみ利用可能です。ソフトウェア版(バージョン12.2.1.4.0)は利用できません。~~
[Oracle WebCenter Content12c (12.2.1.4.0) — October 2024](https://docs.oracle.com/en/middleware/webcenter/content/12.2.1.4/content-new/#GUID-7A1A8A72-F1AA-4361-A798-D521360CE598)のアップデートより、ソフトウェア版でもREST APIが利用可能です。訂正させていただきます
:::

なお、WCC on MPのプロビジョニング手順の紹介は割愛します。具体的なプロビジョニング手順は、上記の製品ドキュメントや以下Qiita記事を参考にしてください。

https://qiita.com/shinwata/items/d7b478031ea45f0a3565

https://qiita.com/nakasato310/items/5c45f761fd61c7976832


# WCC on MPのREST API

WCC on MPとして新しくリリースされたREST APIを利用すると、フロントエンドがバックエンドのリポジトリやストレージから独立して動作する「ヘッドレスCMS」のように、WCC on MPを『ヘッドレス・ドキュメント管理システム』として利用できるようになります。

これにより、ドキュメントの保管・管理はWCC on MPに任せ、開発者はフロントエンドの実装に注力することができます。

## 製品ドキュメント

WCC on MPのREST APIに関するドキュメントは既に公開済です。最新情報はこちらをご確認ください。

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

**リソースURI**

```
https://{WCCHost}[:WCCPort]/documents/wcc/api/version/resourcePath
```

**REST API実行例**

~~~
https://www.example.com/documents/wcc/api/v1.1/xxx
~~~

**認証**
RESTコール時は、**ベーシック認証(Basic Auth)** を利用します。匿名コール（anonymous calls）もサポートします。

## REST APIの実行

今回は、Mac環境をRESTクライアントとし、OCI上のWCC on MP環境にcurlコマンドを実行します。

### 1. PING Server

`GET /documents/wcc/api/v1.1/system/ping`

https://docs.oracle.com/en/cloud/paas/webcenter-content/webcenter-content-api/index.html#ping-server

WCC on MPサーバーが実行中であることを確認します。実行中の場合、**204 No Content**が帰ってきます。

**curlコマンド実行**
```common-lisp
curl -k -I "https://<WCCHost>:<WCCPort>/documents/wcc/api/v1.1/system/ping" -u username:password
```

**実行結果**
```common-lisp
HTTP/1.1 204 No Content
Date: Tue, 03 Dec 2024 07:56:48 GMT
Connection: keep-alive
Set-Cookie: X-Oracle-OCI-WCC-CS-Route=4e1753bd199c61d84ac0c8654a71e4183dcb1023; Path=/; Secure; HttpOnly
X-ORACLE-DMS-ECID: c6f9ee97-4db7-4a85-a0aa-ea99d7f4dca2-0000068e
X-ORACLE-DMS-RID: 0
```

### 2. Get File Information（ファイル情報の取得）

`GET /documents/wcc/api/v1.1/files/{dDocName}`

https://docs.oracle.com/en/cloud/paas/webcenter-content/webcenter-content-api/index.html#get-document-information

WCC on MPに登録されたドキュメントの情報を取得します。取得時のパラメータとして`dDocName`（コンテンツID）を指定します。
なお、今回WCC on MPから取得するドキュメントは以下スクリーンショットの通りです。**Standard Fields**の一番上のコンテンツIDの`WCC000367`を指定して情報を取得します。なお、最新リビジョンは**2**です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/b1e4afbc-5294-dc8b-a5ab-e5e51431d9c6.png)

**curlコマンド実行**

```common-lisp
curl -k "https://<WCCHost>:<WCCPort>/documents/wcc/api/v1.1/files/WCC000367" -u username:password
```

**実行結果**

```json
{
	"dDocName": "WCC000367",
	"dID": 605,
	"dDocType": "DigitalMedia",
	"dDocTitle": "Collaboration",
	"dRevLabel": "2",
	"dSecurityGroup": "Public",
	"dDocAuthor": "weblogic",
	"dStatus": "RELEASED",
	"dOriginalName": "Collaboration.png",
	"dFormat": "image/png",
	"dFileSize": 3179650,
	"dDocCreatedDate": "2024-11-19 06:17:00Z",
	"dDocCreator": "weblogic",
	"dDocLastModifiedDate": "2024-11-22 02:53:00Z",
	"dDocLastModifier": "weblogic",
	"dDocOwner": "weblogic",
	"xIPMSYS_SCKEY": null,
	"xIPMSYS_BATCH_ID1": 0,
	"xIsACLReadOnlyOnUI": 0,
	"dCharacterSet": null,
	"xComments": "コメント",
	"xDocumentTags": "Boating,Recreation,Outdoor recreation,Boat,Illustration,Paddle,Person,Vehicle,Watercraft,Canoeing,Boating,Recreation,Canoeing,Watercraft,Vehicle,Person,Paddle,Illustration,Boat,Outdoor recreation",
	"dRendition1": "P",
	"dRendition2": "D",
	"xPackagedConversions": "BasicRenditions",
	"xClbraRoleList": null,
	"dDocClass": null,
	"dMessage": "!csStepSuccess",
	"dWebExtension": "jpg",
	"dCheckoutUser": null,
	"dIsPrimary": 1,
	"dExtension": "png",
	"xStorageRule": "DispByContentId",
	"dProcessingState": "Y",
	"dWorkflowState": null,
	"dIndexerState": null,
	"xProducts_category": null,
	"xIPMSYS_REDACTION": 0,
	"dReleaseDate": "2024-11-26 05:18:00Z",
	"dDocFunction": null,
	"xVideoRenditions": null,
	"dOutDate": null,
	"dRevClassID": 367,
	"dLanguage": null,
	"dIsCheckedOut": 0,
	"dIndexedID": 605,
	"xIdcProfile": null,
	"dIsWebFormat": 0,
	"xIPMSYS_BATCH_SEQ": null,
	"dPublishType": null,
	"xClbraUserList": null,
	"xIPMSYS_PARENT_ID": 0,
	"dInDate": "2024-11-22 02:52:00Z",
	"dRevRank": 0,
	"dDocID": 631,
	"xClbraAliasList": null,
	"dLocation": null,
	"xIPMSYS_APP_ID": null,
	"xIPMSYS_STATUS": null,
	"xPartitionId": null,
	"xWebFlag": null,
	"dReleaseState": "Y",
	"xTemplateType": null,
	"xAnnotationDetails": 0,
	"dFlag1": null,
	"dCreateDate": "2024-11-22 02:53:00Z",
	"xExternalDataSet": null,
	"dRevisionID": 2,
	"dDocAccount": null,
	"dPublishState": null,
	"xDamConversionType": "graphic",
	"xLibraryGUID": "F90BE509B4D43386B3A8D860E676E215"
}
```

ドキュメントID(dID)=605、最新リビジョン(dRevLabel)=2のドキュメントの情報が取得できました。

パラメータを追加することで、取得する情報の取捨選択ができます。例えば、古いリビジョンの情報の情報を取得するには、取得するリビジョンを **version=1** のように指定します。

**curlコマンド実行(version=1を指定)**
```common-lisp
curl -k "https://<WCCHost>:<WCCPort>/documents/wcc/api/v1.1/files/WCC000367?version=1" -u username:password
```

**実行結果**
```json
{
	"dDocName": "WCC000367",
	"dID": 586,
	"dDocType": "DigitalMedia",
	"dDocTitle": "Collaboration",
	"dRevLabel": "1",
	"dSecurityGroup": "Public",
	"dDocAuthor": "weblogic",
	"dStatus": "RELEASED",
	"dOriginalName": "Collaboration.png",
	"dFormat": "image/png",
	"dFileSize": 3179650,
	"dDocCreatedDate": "2024-11-19 06:17:00Z",
	"dDocCreator": "weblogic",
	"dDocLastModifiedDate": "2024-11-22 02:53:00Z",
	"dDocLastModifier": "weblogic",
	"dDocOwner": "weblogic",
	"xIPMSYS_SCKEY": null,
	"xIPMSYS_BATCH_ID1": 0,
	"xIsACLReadOnlyOnUI": 0,
	"dCharacterSet": null,
	"xComments": null,
	"xDocumentTags": "Boating,Recreation,Canoeing,Watercraft,Vehicle,Person,Paddle,Illustration,Boat,Outdoor recreation",
	"dRendition1": "P",
	"dRendition2": "D",
	"xPackagedConversions": "BasicRenditions",
	"xClbraRoleList": null,
	"dDocClass": null,
	"dMessage": "!csStepSuccess",
	"dWebExtension": "jpg",
	"dCheckoutUser": null,
	"dIsPrimary": 1,
	"dExtension": "png",
	"xStorageRule": "DispByContentId",
	"dProcessingState": "Y",
	"dWorkflowState": null,
	"dIndexerState": null,
	"xProducts_category": null,
	"xIPMSYS_REDACTION": 0,
	"dReleaseDate": "2024-11-22 02:53:00Z",
	"dDocFunction": null,
	"xVideoRenditions": null,
	"dOutDate": null,
	"dRevClassID": 367,
	"dLanguage": null,
	"dIsCheckedOut": 0,
	"dIndexedID": 605,
	"xIdcProfile": null,
	"dIsWebFormat": 0,
	"xIPMSYS_BATCH_SEQ": null,
	"dPublishType": null,
	"xClbraUserList": null,
	"xIPMSYS_PARENT_ID": 0,
	"dInDate": "2024-11-19 06:16:00Z",
	"dRevRank": 1,
	"dDocID": 598,
	"xClbraAliasList": null,
	"dLocation": null,
	"xIPMSYS_APP_ID": null,
	"xIPMSYS_STATUS": null,
	"xPartitionId": null,
	"xWebFlag": null,
	"dReleaseState": "O",
	"xTemplateType": null,
	"xAnnotationDetails": 0,
	"dFlag1": null,
	"dCreateDate": "2024-11-19 06:17:00Z",
	"xExternalDataSet": null,
	"dRevisionID": 1,
	"dDocAccount": null,
	"dPublishState": null,
	"xDamConversionType": "graphic",
	"xLibraryGUID": "F90BE509B4D43386B3A8D860E676E215"
}
```

ドキュメントID(dID)=586、リビジョン(dRevLabel)=1のドキュメントの情報が取得できました。**dInDate（登録日）** などの日付が古くなっていることをあわせて確認します。

### 3. Browse a folder（フォルダのブラウズ）

`GET /documents/wcc/api/v1.1/folders/browse/{fFolderGUID} `

https://docs.oracle.com/en/cloud/paas/webcenter-content/webcenter-content-api/index.html#browse-a-folder

WCC on MPに作成されたフォルダの内容を取得します。取得時のパラメータとして**fFolderGUID（フォルダID）** を指定します。

なお、今回取得するフォルダは以下スクリーンショットの通りです。フォルダ名は`動物`で、フォルダ内には動物の画像ファイルが2つ、子フォルダが1つ、それぞれ登録（作成）されています。また、`動物`フォルダのフォルダIDはフォルダプロパティのFolder IDの `4910098D6E34BE6E21A46C90B79928C9` を指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/5cc5e82d-d933-ff38-c8cf-ac0f40a151ac.png)

**curlコマンド実行例**
```common-lisp
curl -k "https://<WCCHost>:<WCCPort>/documents/wcc/api/v1.1/folders/browse/4910098D6E34BE6E21A46C90B79928C9" -u username:password
```

**実行結果**
```json
{
	"numFolders": 1,
	"hasMoreChildFolders": 0,
	"numFiles": 2,
	"totalChildFoldersCount": 1,
	"totalChildFilesCount": 2,
	"hasMoreChildFiles": 0,
	"hasMoreChildItems": 0,
	"folderPath": "/Enterprise Libraries/デモライブラリ/03画像/動物",
	"folderInfo": {
		"fFolderGUID": "4910098D6E34BE6E21A46C90B79928C9",
		"fParentGUID": "00CFEFE618C4A4B4F91885945B8FB06D",
		"fFolderName": "動物",
		"fFolderType": "owner",
		"fInhibitPropagation": 0,
		"fPromptForMetadata": 0,
		"fIsContribution": 1,
		"fIsInTrash": 0,
		"fRealItemGUID": null,
		"fLibraryType": null,
		"fIsLibrary": 0,
		"fDocClasses": null,
		"fTargetGUID": null,
		"fApplication": "framework",
		"fOwner": "weblogic",
		"fCreator": "weblogic",
		"fLastModifier": "weblogic",
		"fCreateDate": "2024-09-27 04:31:30Z",
		"fLastModifiedDate": "2024-09-27 04:31:30Z",
		"fSecurityGroup": "Public",
		"fDocAccount": null,
		"fClbraUserList": null,
		"fClbraAliasList": null,
		"fClbraRoleList": null,
		"fFolderDescription": null,
		"fChildFoldersCount": 1,
		"fChildFilesCount": 2,
		"fFolderSize": 0,
		"fAllocatedFolderSize": -1,
		"fAllocatorParentFolderGUID": null,
		"fApplicationGUID": null,
		"fIsReadOnly": 0,
		"fIsACLReadOnlyOnUI": 0,
		"fDisplayName": "動物",
		"fDisplayDescription": null,
		"fIsBrokenShortcut": null,
		"isLeaf": "0",
		"itemType": "1",
		"folderPermissions": "RWD"
	},
	"childFolders": [
		{
			"fFolderGUID": "5446CB7590579800FDF4159B27E405BA",
			"fParentGUID": "4910098D6E34BE6E21A46C90B79928C9",
			"fFolderName": "子フォルダ",
			"fFolderType": "owner",
			"fInhibitPropagation": 0,
			"fPromptForMetadata": 0,
			"fIsContribution": 1,
			"fIsInTrash": 0,
			"fRealItemGUID": null,
			"fLibraryType": null,
			"fIsLibrary": 0,
			"fDocClasses": null,
			"fTargetGUID": null,
			"fApplication": "framework",
			"fOwner": "weblogic",
			"fCreator": "weblogic",
			"fLastModifier": "weblogic",
			"fCreateDate": "2024-11-21 07:48:21Z",
			"fLastModifiedDate": "2024-11-21 07:48:21Z",
			"fSecurityGroup": "Public",
			"fDocAccount": null,
			"fClbraUserList": null,
			"fClbraAliasList": null,
			"fClbraRoleList": null,
			"fFolderDescription": null,
			"fChildFoldersCount": 0,
			"fChildFilesCount": 0,
			"fFolderSize": 0,
			"fAllocatedFolderSize": -1,
			"fAllocatorParentFolderGUID": null,
			"fApplicationGUID": null,
			"fIsReadOnly": 0,
			"fIsACLReadOnlyOnUI": 0,
			"fDisplayName": "子フォルダ",
			"fDisplayDescription": null
		}
	],
	"childFiles": [
		{
			"fFileGUID": "C91F13D82D986F3523D154FF0C94D426",
			"fParentGUID": "4910098D6E34BE6E21A46C90B79928C9",
			"fTargetGUID": null,
			"fFileName": "4460_IMGP4368-2.jpg",
			"fPublishedFileName": "4460_IMGP4368-2.jpg",
			"fFileType": "owner",
			"fIsInTrash": 0,
			"fRealItemGUID": null,
			"fDocClass": "Base",
			"fInhibitPropagation": 0,
			"dDocName": "WCC000275",
			"dRevisionID": 1,
			"dPublishedRevisionID": 1,
			"fApplication": "framework",
			"fOwner": "weblogic",
			"fCreator": "weblogic",
			"fLastModifier": "weblogic",
			"fCreateDate": "2024-10-10 05:42:04Z",
			"fLastModifiedDate": "2024-10-10 05:42:04Z",
			"fSecurityGroup": "Public",
			"fDocAccount": null,
			"fClbraUserList": null,
			"fClbraAliasList": null,
			"fClbraRoleList": null,
			"fIsACLReadOnlyOnUI": "0",
			"dRevLabel": "1",
			"dDocTitle": "4460_IMGP4368-2",
			"dID": 481,
			"dDocAuthor": "weblogic",
			"dDocType": "DigitalMedia",
			"dRevClassID": 275,
			"dIsCheckedOut": 0,
			"dCheckoutUser": null,
			"dSecurityGroup": "Public",
			"dCreateDate": "2024-10-10 05:42:04Z",
			"dInDate": "2024-10-10 05:41:50Z",
			"dOutDate": null,
			"dStatus": "RELEASED",
			"dReleaseState": "Y",
			"dFlag1": null,
			"dWebExtension": "jpg",
			"dProcessingState": "Y",
			"dMessage": "!csStepSuccess",
			"dDocAccount": null,
			"dReleaseDate": "2024-11-26 05:18:15Z",
			"dRendition1": "P",
			"dRendition2": "D",
			"dIndexerState": null,
			"dPublishType": null,
			"dPublishState": null,
			"dWorkflowState": null,
			"dRevRank": 0,
			"dDocID": 387,
			"dIsPrimary": 1,
			"dIsWebFormat": 0,
			"dLocation": null,
			"dOriginalName": "4460_IMGP4368-2.jpg",
			"dFormat": "image/jpeg",
			"dExtension": "jpg",
			"dFileSize": 1519752,
			"dLanguage": null,
			"dCharacterSet": null,
			"xComments": "コメント",
			"xExternalDataSet": null,
			"xIdcProfile": null,
			"xTemplateType": null,
			"xAnnotationDetails": 0,
			"xLibraryGUID": "F90BE509B4D43386B3A8D860E676E215",
			"xPartitionId": null,
			"xWebFlag": null,
			"xStorageRule": "DispByContentId",
			"xIsACLReadOnlyOnUI": 0,
			"xIPMSYS_APP_ID": null,
			"xIPMSYS_BATCH_ID1": 0,
			"xIPMSYS_BATCH_SEQ": null,
			"xIPMSYS_PARENT_ID": 0,
			"xIPMSYS_REDACTION": 0,
			"xIPMSYS_SCKEY": null,
			"xIPMSYS_STATUS": null,
			"xDocumentTags": "Mammal,Grass,Vertebrate,Terrestrial animal,Green,Plant,Eastern Grey Kangaroo,Nature,Marsupial,Kangaroo",
			"xDamConversionType": "graphic",
			"xPackagedConversions": "BasicRenditions",
			"xVideoRenditions": null,
			"xClbraUserList": null,
			"xClbraAliasList": null,
			"xClbraRoleList": null,
			"xProducts_category": null,
			"dIndexedID": 481,
			"dDocCreatedDate": "2024-10-10 05:42:04Z",
			"dDocCreator": "weblogic",
			"dDocLastModifiedDate": "2024-10-10 05:42:00Z",
			"dDocLastModifier": "weblogic",
			"dDocOwner": "weblogic",
			"dDocFunction": null,
			"dDocClass": null,
			"fDisplayName": "4460_IMGP4368-2.jpg",
			"fIsInWorkflowQueue": "0"
		},
		{
			"fFileGUID": "4F133B4671FE8835838DE8748AFD1773",
			"fParentGUID": "4910098D6E34BE6E21A46C90B79928C9",
			"fTargetGUID": null,
			"fFileName": "Koala.jpg",
			"fPublishedFileName": "Koala.jpg",
			"fFileType": "owner",
			"fIsInTrash": 0,
			"fRealItemGUID": null,
			"fDocClass": "Base",
			"fInhibitPropagation": 0,
			"dDocName": "WCC000238",
			"dRevisionID": 1,
			"dPublishedRevisionID": 1,
			"fApplication": "framework",
			"fOwner": "weblogic",
			"fCreator": "weblogic",
			"fLastModifier": "weblogic",
			"fCreateDate": "2024-09-17 04:57:34Z",
			"fLastModifiedDate": "2024-09-27 04:31:37Z",
			"fSecurityGroup": "Public",
			"fDocAccount": null,
			"fClbraUserList": null,
			"fClbraAliasList": null,
			"fClbraRoleList": null,
			"fIsACLReadOnlyOnUI": "0",
			"dRevLabel": "1",
			"dDocTitle": "Koala.jpg",
			"dID": 440,
			"dDocAuthor": "weblogic",
			"dDocType": "DigitalMedia",
			"dRevClassID": 238,
			"dIsCheckedOut": 0,
			"dCheckoutUser": null,
			"dSecurityGroup": "Public",
			"dCreateDate": "2024-09-17 04:57:34Z",
			"dInDate": "2024-09-17 04:57:20Z",
			"dOutDate": null,
			"dStatus": "RELEASED",
			"dReleaseState": "Y",
			"dFlag1": null,
			"dWebExtension": "jpg",
			"dProcessingState": "Y",
			"dMessage": "!csStepSuccess",
			"dDocAccount": null,
			"dReleaseDate": "2024-11-26 05:18:15Z",
			"dRendition1": "P",
			"dRendition2": "D",
			"dIndexerState": null,
			"dPublishType": null,
			"dPublishState": null,
			"dWorkflowState": null,
			"dRevRank": 0,
			"dDocID": 305,
			"dIsPrimary": 1,
			"dIsWebFormat": 0,
			"dLocation": null,
			"dOriginalName": "Koala.jpg",
			"dFormat": "image/jpeg",
			"dExtension": "jpg",
			"dFileSize": 780831,
			"dLanguage": null,
			"dCharacterSet": null,
			"xComments": "コメント",
			"xExternalDataSet": null,
			"xIdcProfile": null,
			"xTemplateType": null,
			"xAnnotationDetails": 0,
			"xLibraryGUID": "F90BE509B4D43386B3A8D860E676E215",
			"xPartitionId": null,
			"xWebFlag": null,
			"xStorageRule": "DispByContentId",
			"xIsACLReadOnlyOnUI": 0,
			"xIPMSYS_APP_ID": null,
			"xIPMSYS_BATCH_ID1": 0,
			"xIPMSYS_BATCH_SEQ": null,
			"xIPMSYS_PARENT_ID": 0,
			"xIPMSYS_REDACTION": 0,
			"xIPMSYS_SCKEY": null,
			"xIPMSYS_STATUS": null,
			"xDocumentTags": "Snout,Terrestrial animal,Human nose,Koala,Mammal,Vertebrate,Human head,Marsupial,Organ (Biology),Organism",
			"xDamConversionType": "graphic",
			"xPackagedConversions": "BasicRenditions",
			"xVideoRenditions": null,
			"xClbraUserList": null,
			"xClbraAliasList": null,
			"xClbraRoleList": null,
			"xProducts_category": null,
			"dIndexedID": 440,
			"dDocCreatedDate": "2024-09-17 04:57:34Z",
			"dDocCreator": "weblogic",
			"dDocLastModifiedDate": "2024-09-17 04:57:00Z",
			"dDocLastModifier": "weblogic",
			"dDocOwner": "weblogic",
			"dDocFunction": null,
			"dDocClass": null,
			"fDisplayName": "Koala.jpg",
			"fIsInWorkflowQueue": "0"
		}
	]
}
```

指定したフォルダの情報`folderInfo`、および指定フォルダに格納される子フォルダの情報1件`childFolders`と、ファイルの情報2件`childFiles`、をまとめて取得することができました。

### 4. Document Search（ドキュメントの検索）

`GET /documents/wcc/api/v1.1/files/search/items`

https://docs.oracle.com/en/cloud/paas/webcenter-content/webcenter-content-api/index.html#document-search

WCC on MP内のドキュメントを検索し、その結果を返します

なお、今回検索するのは以下スクリーンショットの通りです。検索条件は、タイトル`dDocTitle`が`Collaboration`と一致する`Matches`です。検索結果として、`Collaboration.png`の画像ファイルが1つ表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/10558797-3212-74c2-d6ec-86cf476b0367.png)


なお、検索条件は`q=xxx`のパラメータとして指定します。今回の場合は
```
q=dDocTitle <matches> `Collaboration`
```
になりますが、curlで実行するため、実際は
```
q=dDocTitle%20%3Cmatches%3E%20\`Collaboration\`
```
と指定します。

**curlコマンド実行例**
```common-lisp
curl -k "https://<WCCHost>:<WCCPort>/documents/wcc/api/v1.1/files/search/items?q=dDocTitle%20%3Cmatches%3E%20\`Collaboration\`" -u username:password
```
**実行結果**
```json
{
	"count": 1,
	"hasMore": false,
	"totalResults": 1,
	"offset": null,
	"q": "dDocTitle <matches> `Collaboration`",
	"limit": 20,
	"orderBy": "dInDate:Desc",
	"numPages": 1,
	"pageNumber": 1,
	"totalRows": 1,
	"startRow": 1,
	"endRow": 1,
	"items": [
		{
			"dDocName": "WCC000367",
			"dID": 605,
			"dDocType": "DigitalMedia",
			"dDocTitle": "Collaboration",
			"dRevLabel": "2",
			"dSecurityGroup": "Public",
			"dDocAuthor": "weblogic",
			"dOriginalName": "Collaboration.png",
			"dFormat": "image/png",
			"dDocCreatedDate": "2024-11-19 06:17:21Z",
			"dDocCreator": "weblogic",
			"dDocLastModifiedDate": "2024-11-22 02:53:00Z",
			"dDocLastModifier": "weblogic",
			"dDocOwner": "weblogic",
			"AlternateFormat": null,
			"xIdcProfile": null,
			"SCORE": 3,
			"xIPMSYS_BATCH_ID1": 0,
			"xComments": "コメント",
			"xDocumentTags": "Boating,Recreation,Outdoor recreation,Boat,Illustration,Paddle,Person,Vehicle,Watercraft,Canoeing,Boating,Recreation,Canoeing,Watercraft,Vehicle,Person,Paddle,Illustration,Boat,Outdoor recreation",
			"dRendition1": "P",
			"xIPMSYS_BATCH_SEQ": null,
			"dPublishType": null,
			"URL": "/cs/groups/public/documents/digitalmedia/d2nj/mdaw/~edisp/wcc000367.jpg",
			"xPackagedConversions": "BasicRenditions",
			"xClbraUserList": null,
			"dRendition2": "D",
			"xClbraRoleList": null,
			"dFullTextFormat": null,
			"dDocClass": null,
			"VaultFileSize": 3179650,
			"WebFileSize": 96475,
			"dInDate": "2024-11-22 02:52:51Z",
			"dWebExtension": "jpg",
			"xClbraAliasList": null,
			"xIPMSYS_APP_ID": null,
			"otsFormat": null,
			"xPartitionId": null,
			"xWebFlag": null,
			"srfDocSnippet": null,
			"dExtension": "png",
			"xStorageRule": "DispByContentId",
			"xProducts_category": null,
			"dGif": "ucm_digital_asset.png",
			"dDocFunction": null,
			"xVideoRenditions": null,
			"dCreateDate": "2024-11-22 02:53:33Z",
			"dOutDate": null,
			"dRevClassID": 367,
			"dRevisionID": 2,
			"otsCharset": null,
			"xDamConversionType": "graphic",
			"dDocAccount": null,
			"otsLanguage": null,
			"xLibraryGUID": "F90BE509B4D43386B3A8D860E676E215"
		}
	]
} 
```

検索結果として、`count`=1で、`Collaboration.png`の画像ファイルが返ってくることが確認できます。またその画像ファイルのメタデータ情報あわせて取得できました。

ちなみに、検索結果として取得するドキュメントのメタデータの情報を指定する場合は、`fields`パラメータを利用します。
例えば、コンテンツID`dDocName`、タイトル`dDocTitle`、オリジナルのファイル名`dOriginalName`の3つのメタデータ情報だけを検索結果として取得したい場合は、`fields=dDocName,dDocTitle,dOriginalName`をパラメータとして追加します

**curlコマンド実行例(fieldsパラメータを追加)**
```common-lisp
curl -k "https://<WCCHost>:<WCCPort>/documents/wcc/api/v1.1/files/search/items?q=dDocTitle%20%3Cmatches%3E%20\`Collaboration\`&fields=dDocName,dDocTitle,dOriginalName" -u username:password
```

**実行結果**

```json
{
	"count": 1,
	"hasMore": false,
	"totalResults": 1,
	"offset": null,
	"q": "dDocTitle <matches> `Collaboration`",
	"limit": 20,
	"orderBy": "dInDate:Desc",
	"numPages": 1,
	"pageNumber": 1,
	"totalRows": 1,
	"startRow": 1,
	"endRow": 1,
	"items": [
		{
			"dDocName": "WCC000367",
			"dDocTitle": "Collaboration",
			"dOriginalName": "Collaboration.png"
		}
	]
}
```

### 5. Download Document（ドキュメントのダウンロード）

`GET /documents/wcc/api/v1.1/files/{dDocName}/data`

https://docs.oracle.com/en/cloud/paas/webcenter-content/webcenter-content-api/index.html#download-document

WCC on MPに登録されたドキュメントをダウンロードします。取得時のパラメータとして`dDocName`（コンテンツID）を指定します。

なお、今回WCC on MPから取得するドキュメントは前の手順で検索を実行した`Collaboration.png`で、コンテンツIDは**WCC000367**で、ファイルサイズは**3.2MB** です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120110/629942b5-b297-f249-3243-071d4f690386.png)


**curlコマンドと実行結果**
```common-lisp
curl -k -o Collaboration.png "https://<WCCHost>:<WCCPort>/documents/wcc/api/v1.1/files/WCC000367/data" -u username:password

  % Total    % Received % Xferd  Average Speed   Time      Time     Time  Current
                                 Dload   Upload  Total     Spent    Left  Speed
100 3105k    0 3105k    0     0   148k      0 --:--:--    0:00:20 --:--:--  162k

% ls -l
-rw-r--r--  1 USER  staff  3179650 12  4 13:15 Collaboration.png
```
約3.2MBの画像ファイルのダウンロードができました

# おわりに

マーケットプレイス版WebCenter Content For OCI（WCC on MP）が提供するREST APIの基本的な操作方法について説明しました。このREST APIは適時アップデートされていますので、[What is New in Oracle WebCenter Content on Marketplace](https://docs.oracle.com/en/cloud/paas/webcenter-content/webcenter-content-marketplace/index.html#what-is-new-in-oracle-webcenter-content-on-marketplace)をご確認いただけますようよろしくお願いいたします。