Blob データを挿入または更新する
sObject Basic Information または sObject Rows API を使用する場合、アップロードの最大ファイルサイズは、ContentVersion オブジェクトの場合は 2 GB、使用可能な他の標準オブジェクトの場合は 500 MB です。sObject Collections API を使用する場合、1 回の要求の全ファイルの最大合計サイズは 500 MB です。
リクエストメッセージボディの最初のパートには、Description または Name などの非バイナリ項目データが含まれます。メッセージの 2 つ目のパートには、アップロードするファイルのバイナリデータが含まれます。
新規 Document の挿入
この構文とコードでは、新規 Document を作成します。ファイル自体のバイナリデータだけではなく、Description、Keywords、Name など、他の項目データも指定します。
- 新規 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 を挿入する場合の使用例
-
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 など、他の項目データも指定します。
- 属性
- 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/json と application/xml です。
- バイナリのメッセージパートの Content-Type ヘッダーには、任意の値を使用できます。
- 改行
- メッセージパートのヘッダーとそのパートのデータの間に、改行が必要です。コード例で示されているとおり、Content-Type ヘッダーおよび Content-Disposition ヘッダーと JSON または XML の間に改行が必要です。バイナリパートでは、Content-Type ヘッダーおよび Content-Disposition ヘッダーとバイナリデータの間に改行が必要です。