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

バンドルの作成

サービス予定のバンドルを手動で作成します。このリソースは、サービス予定 ID と手動バンドルポリシー ID を受け入れます。手動バンドルポリシーはバンドルルールを指定し、手動バンドルとしてマークする必要があります。このリソースはバンドルサービス予定の ID を返します。このエンドポイントは、Salesforce API のバージョン 54.0 以降で使用できます。
URI
<host>/bundleflow/api/v1.0/bundle
形式
JSON
HTTP メソッド
POST
認証
Authorization: Bearer <token>
ヘッダー
sf_api_version — Salesforce API のバージョン。最小バージョンは 53.0 です。
Authorization — 認証トークン。
Content-Type — ファイル形式。有効な値は JSON です。
Referer — 組織のドメイン URL。

リクエストボディ

プロパティ

項目 説明
user String 省略可能。要求を送信しているユーザのユーザ名。
initiate String バンドル要求の種別。

有効な値: manual

bundlePolicyId String バンドルルールを含む関連バンドルポリシーの ID。
saRequestPayloads Array バンドルされるサービス予定の詳細。
serviceAppointmentId String バンドルされるサービス予定の ID。
action String このサービス予定に対して実行されるバンドルアクション。

有効な値: add

JSON の例

次の例は、2 つのサービス予定の手動バンドル要求を示しています。

1{
2    "user": "Misha1",
3    "initiate": "manual",
4    "bundlePolicyId": "7sTx00000000006EAA",
5    "saRequestPayloads": [
6        {
7            "serviceAppointmentId": "08px000000NzbmsAAB",
8            "action": "add"
9        },
10        {
11            "serviceAppointmentId": "08pT300000006LLIAY",
12            "action": "add"
13        }
14    ]
15}

レスポンスボディ

プロパティ

項目 説明
bundleId String 新しいバンドルの ID。バンドルが作成されていない場合、この項目は null です。
responsePayloads Array バンドルされたオブジェクトの詳細。
objectName String オブジェクトの種別。

出力: ServiceAppointment

objectId String サービス予定の ID。
action String オブジェクトに対して実行されるアクション。
status String このオブジェクトが正しくバンドルされたかどうかを指定します。

出力: SUCCESS または FAIL

messageCode Number サービス予定のバンドルの成功コードまたはエラーコード。0 は成功を意味します。エラーコードは、「エラー応答」にリストされています。
message String オブジェクトのバンドルの成功メッセージまたはエラーメッセージ。
status String 要求の状況。

出力: SUCCESS または FAIL

messageCode Number 要求の成功コードまたはエラーコード。0 は成功を意味します。エラーコードは、「エラー応答」にリストされています。
message String 要求の成功メッセージまたはエラーメッセージ。
messageAdditionalInfo String Salesforce から提供される詳細情報。

JSON の例: 成功した場合の応答

次の例は、正常にバンドルされた 2 つのサービス予定の出力を示しています。

1{
2  "bundleId": "08px000000NzdH8AAJ",
3  "responsePayloads": [
4    {
5      "objectName": "ServiceAppointment",
6      "objectId": "08px000000NzbmsAAB",
7      "action": "add",
8      "status": "SUCCESS",
9      "messageCode": "NONE",
10      "message": "Success",
11      "messageParams": [
12        
13      ]
14    },
15    {
16      "objectName": "ServiceAppointment",
17      "objectId": "08pT300000006LLIAY",
18      "action": "add",
19      "status": "SUCCESS",
20      "messageCode": "NONE",
21      "message": "Success",
22      "messageParams": [
23        
24      ]
25    }
26  ],
27  "status": "SUCCESS",
28  "messageCode": "NONE",
29  "message": "Success"
30}

JSON の例: 失敗した場合の応答

次の例は、すでにバンドルサービス予定になっているサービス予定に対してバンドルを試みている要求の出力を示しています。サービス予定を 2 つのバンドルの一部にすることはできないため、応答状況は FAIL です。

1{
2   "bundleId":null,
3   "responsePayloads":[
4      {
5         "objectName":"ServiceAppointment",
6         "objectId":"08px000000NzdH8AAJ",
7         "action":"add",
8         "status":"FAIL",
9         "messageCode":"SA_ALREADY_BUNDLED",
10         "message":"Is already a bundle service appointment.",
11         "messageParams":[
12            
13         ]
14      }
15   ],
16   "status":"FAIL",
17   "messageCode":"ERROR_CREATING_BUNDLE",
18   "message":"We couldn't bundle the service appointment.",
19   "messageAdditionalInfo": ""
20}
表 1. エラー応答
コード 名前 メッセージ
0 NONE <Service Appointment ID#>: Success. (<サービス予定 ID#>: 成功。)
1 UNSUPPORTED_VERSION Ask your admin to check the API version, then try again. (システム管理者に API バージョンを確認するように依頼してから、もう一度お試しください。)
2 SA_PAYLOAD_SHOULD_CONTAIN_ADD_ACTIONS_ONLY Create bundles using add actions only. (アクションの追加のみを使用してバンドルを作成してください。)
3 EMPTY_BUNDLE_POLICY Enter an ID for the bundlePolicyId. (bundlePolicyId の ID を入力してください。)
4 EMPTY_BUNDLE_INITIATE Specify manual or auto for the initiate entry. (initiate エントリに手動または自動を指定してください。)
5 EMPTY_BUNDLE_SERVICE_APPOINTMENT Add a bundle service appointment. (バンドルサービス予定を追加してください。)
6 SA_PAYLOAD_DUPLICATED_SAS Remove duplicate service appointment IDs. (重複しているサービス予定 ID を削除してください。)
7 SA_IS_BUNDLE <Service Appointment ID#>: Is already a bundle service appointment. (<サービス予定 ID#>: すでにバンドルサービス予定です。)
8 SA_ALREADY_BUNDLED <Service Appointment ID#>: Is a bundle member service appointment in another bundle. (<サービス予定 ID#>: 別のバンドルのバンドルメンバーサービス予定です。)
9 STATUS_FORBIDDEN <Service Appointment ID#>: Can’t be bundled in the current status. (<サービス予定 ID#>: 現在の状況でバンドルすることはできません。)
10 SA_PAYLOAD_SHOULD_NOT_CONTAIN_MIX_ACTIONS Send separate requests for add and remove actions. (追加アクションと削除アクションの要求は別々に送信してください。)
11 SA_IS_NOT_BUNDLE Select a bundle service appointment and try again. (バンドルサービス予定を選択して、もう一度お試しください。)
12 EXCEEDED_BUNDLE_MEMBERS_LIMIT You reached the maximum number of service appointments for this bundle.Remove some of them and try again. (このバンドルのサービス予定の最大数に達しました。いくつかのサービス予定を削除して、もう一度お試しください。)
13 SA_PAYLOAD_SHOULD_CONTAIN_ONLY_BUNDLE_MEMBERS To remove bundle members from a bundle, include only service appointments that are bundle members. (バンドルからバンドルメンバーを削除するには、バンドルメンバーであるサービス予定のみを含めてください。)
14 ERROR_IN_BASIC_VALIDATIONS We couldn’t bundle the service appointments. (サービス予定をバンドルできませんでした。)
15 ERROR_IN_LIMIT_VALIDATIONS なし
16 ERROR_IN_CRITERIA_VALIDATIONS なし
17 ERROR_IN_SERVICE_TERRITORY_VALIDATIONS Confirm or revise the service territories of the selected service appointments.Or ask your admin for help. (選択したサービス予定のサービステリトリーを確認または修正してください。または、システム管理者にサポートを依頼してください。)
18 ERROR_IN_RESTRICTION_VALIDATIONS Confirm or revise the selected service appointments. (選択したサービス予定を確認または修正してください。)Or ask your admin to check the restriction policies. (または、システム管理者に制限ポリシーの確認を依頼してください。)
19 EXCEEDED_BUNDLE_DURATION_LIMIT なし
20 EMPTY_BODY Fill in the request. (要求を入力してください。)
21 SA_IS_NOT_BUNDLED <Service Appointment ID#>: Can’t remove a service appointment that isn’t in the bundle. (<サービス予定 ID#>: バンドルに含まれていないサービス予定は削除できません。)
22 ERROR_IN_AGGREGATION Confirm or revise the selected service appointments. (選択したサービス予定を確認または修正してください。)Or ask your admin to check the aggregation policies. (または、システム管理者に集計ポリシーの確認を依頼してください。)
23 ERROR_IN_PROPAGATION Confirm or revise the selected service appointments. (選択したサービス予定を確認または修正してください。)Or ask your admin to check the propagation policies. (または、システム管理者に伝達ポリシーの確認を依頼してください。)
24 GET_POLICY_FAILURE Ask your admin to check the bundle policies, then try again. (システム管理者にバンドルポリシーを確認するように依頼してから、もう一度お試しください。)
25 GET_CONFIG_FAILURE Ask your admin to check the bundle config, then try again. (システム管理者にバンドル設定を確認するように依頼してから、もう一度お試しください。)
26 GET_BUNDLE_INFO_FAILURE Try again later. (しばらくしてからもう一度お試しください。)
27 ERROR_IN_LOGIC We couldn’t bundle the service appointments. (サービス予定をバンドルできませんでした。)
28 EMPTY_BUNDLE_MEMBERS Add bundle member service appointments. (バンドルメンバーのサービス予定を追加してください。)
29 EMPTY_BUNDLE_PARENT_WORK_ORDER_ID Add the work order ID for the bundle service appointment. (バンドルサービス予定の作業指示 ID を追加してください。)
30 UNBUNDLE_REQUEST_ASSIGNED_RESOURCES_NOT_COMPATiBLE To unbundle a scheduled bundle, send assigned resources for each service appointment. (スケジュール済みのバンドルをバンドル解除するには、サービス予定ごとに割り当て済みのリソースを送信してください。)
31 EMPTY_OLD_VALUES To update a bundle, send the current values. (バンドルを更新するには、現在の値を送信してください。)
32 EMPTY_NEW_VALUES To update a bundle, send the new values. (バンドルを更新するには、新しい値を送信してください。)
33 SA_PAYLOAD_SHOULD_CONTAIN_AT_LEAST_ONE_ADD_OR_REMOVE_ACTION To update a bundle, send at least one add or remove action. (バンドルを更新するには、1 つ以上の追加アクションまたは削除アクションを送信してください。)
34 FORBIDDEN_FIELDS_IN_POLICY_OBJECT Confirm or revise the selected service appointments. (選択したサービス予定を確認または修正してください。)Or ask your admin to check the field names selected in the related policies. (または、関連ポリシーで選択された項目名の確認をシステム管理者に依頼してください。)
35 EMPTY_SERVICE_TERRITORY Add a Service Territory ID. (サービステリトリー ID を追加してください。)
36 EMPTY_START_TIME Add the interval’s start time. (期間の開始時間を追加してください。)
37 EMPTY_END_TIME Add the interval’s end time. (期間の終了時間を追加してください。)
38 ERROR_IN_BUNDLE_POLICY_RFC Confirm or revise the selected service appointments. (選択したサービス予定を確認または修正してください。)Or ask your admin to check the recordset filter criteria in the bundle policy. (または、システム管理者にバンドルポリシーのレコードセット検索条件を確認するように依頼してください。)
39 ERROR_IN_TIME_ZONE_VALIDATION Select service appointments that are in the same time zone. (同じタイムゾーンのサービス予定を選択してください。)Or ask your admin for help. (選択したサービス予定のサービステリトリーを確認または修正してください。または、システム管理者にサポートを依頼してください。)
40 ERROR_IN_LOGIC_UNBUNDLE We couldn’t unbundle the service appointment. (サービス予定をバンドル解除できませんでした。)
41 ERROR_CREATING_BUNDLE We couldn’t bundle the service appointments. (サービス予定をバンドルできませんでした。)
42 ERROR_ADDING_TO_BUNDLE We couldn’t add the service appointment to the bundle. (バンドルにサービス予定を追加できませんでした。)
43 ERROR_REMOVING_FROM_BUNDLE We couldn’t remove the service appointment from the bundle. (バンドルからサービス予定を削除できませんでした。)
44 ERROR_UNBUNDLING We couldn’t unbundle the service appointment. (サービス予定をバンドル解除できませんでした。)
58 ERROR_IN_MSW_VALIDATIONS サービス予定を連動関係にバンドルすることはできません。連動関係を削除して、もう一度お試しください。
-500 http error (http エラー) Hmm… Something went wrong. (問題が発生しました。)Try again. (もう一度お試しください。)

Apex のコードサンプル

1public static Map<String, String> createSABundle() {
2    String apiVersion = '54.0'; // Spring '22
3    String bundleApi = '/bundleflow/api/v1.0/bundle';
4    String host = {Namespace}.BundleLogic.getBundlerFalconEnvironment();
5    String ref = URL.getOrgDomainUrl().toExternalForm();
6
7    String bundleService = host + bundleApi;
8    
9    // Create HTTP request
10    HttpRequest request = new HttpRequest();
11    request.setEndpoint(bundleService);
12    request.setMethod('POST');
13    request.setHeader('sf_api_version', apiVersion);
14    request.setHeader('Content-Type', 'application/json' );
15    // NOTE: This user must have 'Field Service Integration' permissions.
16    request.setHeader('Authorization', 'Bearer ' + UserInfo.getSessionId()); 
17    request.setHeader('Referer', ref);
18    request.setTimeout(120000);
19    
20    // Create the body
21    Map<String, Object> body = new Map<String, Object>();
22    body.put('initiate','manual');
23    body.put('bundlePolicyId','7sT9A0000004DX6UAM'); // NOTE: Use a real bundle policy ID.
24
25    Map<String, Object> saList = new Map<String, Object>(); 
26    saList.put('serviceAppointmentId', '08p9A0000005LEGQA2'); // NOTE: Use a real Service Appointment ID.
27    saList.put('action', 'add');
28
29    List<Object> objectsList =  new List<Object>();
30    objectsList.add(saList);
31
32    body.put('saRequestPayloads', objectsList);
33
34    String reqBody = JSON.serialize(body);
35    System.debug(body);
36    request.setBody(reqBody);
37
38    HttpResponse response = new Http().send(request);
39
40    // Parse the JSON response
41    
42    // Handle a redirect message
43    while (response.getStatusCode() == 302) {
44        request.setEndpoint(response.getHeader('Location'));
45        response = new Http().send(request);
46    }
47
48    Map<String, String> returnValue = new Map<String, String>();
49    returnValue.put('statusCode', String.valueOf(response.getStatusCode()));
50
51    // Return value when we don't get a success response
52    if (response.getStatusCode() != 200) {
53        returnValue.put('message', 'The status code returned was not expected: ' + response.getStatusCode() + ' ' + response.getStatus());
54        System.debug(returnValue.get('message'));
55        return (returnValue);
56        
57    // Return value when we do get a success response
58    } else {
59        returnValue.put('message', response.getBody());
60        System.debug(response.getBody());
61        return (returnValue);
62    }
63}
64
65Map<String, String> response = createSABundle();
66System.debug(response);