この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

Blob データを挿入または更新する

sObject Basic Information、sObject Rows、または sObject Collections REST リソースを使用して、Salesforce 標準オブジェクトの blob データを挿入または更新できます。任意の種類のファイルをアップロードできますが、MIME マルチパートコンテンツタイプ標準に準拠するマルチパートメッセージを使用する必要があります。詳細は、W3C 標準のマルチパートコンテンツタイプに関する説明を参照してください。blob 項目を含む標準オブジェクトのファイルを挿入/更新できます。

sObject Basic Information または sObject Rows API を使用する場合、アップロードの最大ファイルサイズは、ContentVersion オブジェクトの場合は 2 GB、使用可能な他の標準オブジェクトの場合は 500 MB です。sObject Collections API を使用する場合、1 回の要求の全ファイルの最大合計サイズは 500 MB です。

非マルチパートメッセージを使用して blob データを挿入/更新できますが、テキストデータは 50 MB まで、base64 で符号化されたデータは 37.5 MB までに制限されます。

メモ

リクエストメッセージボディの最初のパートには、Description または Name などの非バイナリ項目データが含まれます。メッセージの 2 つ目のパートには、アップロードするファイルのバイナリデータが含まれます。

この後のセクションでは、マルチパートコンテンツタイプを使用して blob データを挿入/更新する JSON の例を示します。

新規 Document の挿入

この構文とコードでは、新規 Document を作成します。ファイル自体のバイナリデータだけではなく、Description、Keywords、Name など、他の項目データも指定します。

新規 Document を追加すると、[ドキュメント] タブで変更の結果を確認できます。

ヒント

新規 Document を作成する例
1curl https://yourInstance.salesforce.com/services/data/v53.0/sobjects/Document/ -H "Authorization: Bearer token" -H "Content-Type: multipart/form-data; boundary=\"boundary_string\"" --data-binary @newdocument.json
新規 Document を作成する場合のリクエストボディの例
このコードは、newdocument.json のコンテンツです。ここでは、簡潔にするために PDF コンテンツのバイナリデータは省略されて「Binary data goes here.」に置き換えられています。実際の要求にはバイナリコンテンツ全体が含まれます。
1--boundary_string
2Content-Disposition: form-data; name="entity_document";
3Content-Type: application/json
4
5{  
6    "Description" : "Marketing brochure for Q1 2011",
7    "Keywords" : "marketing,sales,update",
8    "FolderId" : "005D0000001GiU7",
9    "Name" : "Marketing Brochure Q1",
10    "Type" : "pdf"
11}
12
13--boundary_string
14Content-Type: application/pdf
15Content-Disposition: form-data; name="Body"; filename="2011Q1MktgBrochure.pdf"
16
17Binary data goes here.
18
19--boundary_string--
新規 Document を作成する場合のレスポンスボディの例
成功すると、新規 Document の ID が返されます。
1{
2    "id" : "015D0000000N3ZZIA0",
3    "errors" : [ ],
4    "success" : true
5}
エラー応答の例
1{
2    "fields" : [ "FolderId" ],
3    "message" : "Folder ID: id value of incorrect type: 005D0000001GiU7",
4    "errorCode" : "MALFORMED_ID"
5}

Document の更新

この構文とコードでは、既存の Document を更新します。ファイル自体のバイナリデータだけではなく、Name や Keywords など、他の項目データも更新されます。

Document オブジェクトの項目を更新する場合の使用例
1curl https://yourInstance.salesforce.com/services/data/v53.0/Document/015D0000000N3ZZIA0 -H "Authorization: Bearer token" -H "Content-Type: multipart/form-data; boundary=\"boundary_string\"" --data-binary @UpdateDocument.json -X PATCH
Document オブジェクトの項目を更新する場合のリクエストボディの例

このコードは、UpdateDocument.json ファイルの内容です。ここでは、簡潔にするために PDF コンテンツのバイナリデータは省略されて「Updated document binary goes here.」に置き換えられています。実際の要求にはバイナリコンテンツ全体が含まれます。

1--boundary_string
2Content-Disposition: form-data; name="entity_content";
3Content-Type: application/json
4
5{  
6    "Name" : "Marketing Brochure Q1 - Sales",
7    "Keywords" : "sales, marketing, first quarter"
8}
9
10--boundary_string
11Content-Type: application/pdf
12Content-Disposition: form-data; name="Body"; filename="2011Q1MktgBrochure.pdf"
13
14Updated document binary data goes here.
15
16--boundary_string--
Document オブジェクトの項目を更新する場合のレスポンスボディの例
戻り値なし
エラー応答
「状況コードとエラー応答」を参照してください。

ContentVersion の挿入

この構文とコードでは、新規 ContentVersion を挿入します。ファイル自体のバイナリデータだけではなく、ReasonForChange や PathOnClient など、他の項目も更新されます。ContentVersion は、必ず ContentDocument に関連付けられているため、このメッセージには ContentDocumentId が含まれます。

ContentVersion オブジェクトは update をサポートしていません。したがって ContentVersion を更新することはできません。新しい ContentVersion を挿入することのみが可能です。変更の結果は、[コンテンツ] タブで確認できます。

ヒント

ContentVersion を挿入する場合の使用例
1curl https://yourInstance.salesforce.com/services/data/v53.0/sobjects/ContentVersion -H "Authorization: Bearer token" -H "Content-Type: multipart/form-data; boundary=\"boundary_string\"" --data-binary @NewContentVersion.json
ContentVersion を挿入する場合のリクエストボディの例

このコードは、NewContentVersion.json ファイルの内容です。ここでは、簡潔にするために PDF コンテンツのバイナリデータは省略されて「Binary data goes here.」に置き換えられています。実際の要求にはバイナリコンテンツ全体が含まれます。

1--boundary_string
2Content-Disposition: form-data; name="entity_content";
3Content-Type: application/json
4
5{
6    "ContentDocumentId" : "069D00000000so2",
7    "ReasonForChange" : "Marketing materials updated",
8    "PathOnClient" : "Q1 Sales Brochure.pdf"
9}
10
11--boundary_string
12Content-Type: application/octet-stream
13Content-Disposition: form-data; name="VersionData"; filename="Q1 Sales Brochure.pdf"
14
15Binary data goes here.
16
17--boundary_string--
ContentVersion を挿入する場合のレスポンスボディの例
1{
2    "id" : "068D00000000pgOIAQ",
3    "errors" : [ ],
4    "success" : true
5}
ContentVersion を挿入した場合のエラー応答
「状況コードとエラー応答」を参照してください。

sObject コレクションを使用した blob レコードのコレクションの挿入

この構文とコードでは、新規 Document のコレクションを挿入します。ファイル自体のバイナリデータだけではなく、コレクションの各レコードの Description や Name など、他の項目データも指定します。

新規 Document を追加すると、[ドキュメント] タブで変更の結果を確認できます。

ヒント

属性
blob データに sObject コレクションを使用する場合は、リクエストボディの属性の対応付けで type 以外にも特定の属性値を指定する必要があります。
パラメータ 説明
binaryPartName blob データでは必須です。バイナリパートの一意の識別子です。
binaryPartNameAlias blob データでは必須です。バイナリデータが挿入または更新される項目の名前です。
新規 Document を作成する例
1curl https://yourInstance.salesforce.com/services/data/v53.0/composite/sobjects/ -H "Authorization: Bearer token" -H "Content-Type: multipart/form-data; boundary=\"boundary_string\"" --data-binary @newdocuments.json
新規 Document を作成する場合のリクエストボディの例
このコードは、newdocuments.json のコンテンツです。ここでは、簡潔にするために PDF コンテンツのバイナリデータは省略されて「Binary data goes here.」に置き換えられています。実際の要求にはバイナリコンテンツ全体が含まれます。
1--boundary_string
2Content-Disposition: form-data; name="collection"
3Content-Type: application/json
4
5{
6    "allOrNone" : false,
7    "records" :
8    [
9        {
10            "attributes" :
11            {
12                "type" : "Document",
13                "binaryPartName": "binaryPart1",
14                "binaryPartNameAlias": "Body"
15            },
16            "Description" : "Marketing Brochure",
17            "FolderId" : "005xx000001Svs4AAC",
18            "Name" : "Brochure",
19            "Type" : "pdf"
20        },
21        {
22            "attributes" :
23            {
24                "type" : "Document",
25                "binaryPartName": "binaryPart2",
26                "binaryPartNameAlias": "Body"
27            },
28            "Description" : "Pricing Overview",
29            "FolderId" : "005xx000001Svs4AAC",
30            "Name" : "Pricing",
31            "Type" : "pdf"
32        }
33    ]
34}
35
36--boundary_string
37Content-Disposition: form-data; name="binaryPart1"; filename="Brochure.pdf"
38Content-Type: application/pdf
39
40Binary data goes here.
41
42--boundary_string
43Content-Disposition: form-data; name="binaryPart2"; filename="Pricing.pdf"
44Content-Type: application/pdf
45
46Binary data goes here.
47
48--boundary_string--
新規 Document を作成する場合のレスポンスボディの例
成功すると、新規 Document の ID が返されます。
1[
2    {
3        "id": "015xx00000013QjAAI",
4        "errors": [],
5        "success": true
6    },
7    {
8        "id": "015xx00000013QkAAI",
9        "errors": [],
10        "success": true
11    }
12]

詳細は、「sObject コレクション」を参照してください。

マルチパートメッセージの考慮事項

blob データを挿入/更新するときの、マルチパートメッセージの形式に関するいくつかの考慮事項を次に示します。

境界文字列
  • マルチパートメッセージの各パートを区分します。
  • マルチパートコンテンツタイプで必須です。
  • 70 文字まで入力できます。
  • メッセージパートのどの部分にも出現しない文字列値である必要があります。
  • 最初の境界文字列には、2 つのハイフン (--) をプレフィックスとして使用する必要があります。
  • 最後の境界文字列には、2 つのハイフン (--) をポストフィックスとして使用する必要があります。
Content-Disposition ヘッダー
  • 各メッセージパートで必須です。
  • 値は form-data であり、name 属性が必要です。
    • 非バイナリのメッセージパートでは、name 属性に任意の値を使用できます。
    • 1 つの Document の場合、バイナリのメッセージパートで、name 属性にバイナリデータを含むオブジェクト項目の名前を含めます。新規 Document を追加した前の例では、ファイルを含むバイナリ項目の名前は「Body」です。
    • sObject コレクションを使用して Document を挿入または更新する場合、name 属性にパートの一意の識別子を含めます。この識別子は、非バイナリのメッセージパートによって参照されます。
  • バイナリのメッセージパートには、ローカルファイルの名前を表す filename 属性が必要です。
Content-Type ヘッダー
  • 各メッセージパートで必須です。
  • 非バイナリのメッセージパートでサポートされているコンテンツタイプは、application/jsonapplication/xml です。
  • バイナリのメッセージパートの Content-Type ヘッダーには、任意の値を使用できます。
改行
メッセージパートのヘッダーとそのパートのデータの間に、改行が必要です。コード例で示されているとおり、Content-Type ヘッダーおよび Content-Disposition ヘッダーと JSON または XML の間に改行が必要です。バイナリパートでは、Content-Type ヘッダーおよび Content-Disposition ヘッダーとバイナリデータの間に改行が必要です。