Chilkat Online Tools

DataFlex / Salesforce Platform APIs / Bulk Create Batch

Back to Collection Items

Use ChilkatAx-win32.pkg

Procedure Test
    Handle hoHttp
    Boolean iSuccess
    Variant vBdRequestBody
    Handle hoBdRequestBody
    Variant vResp
    Handle hoResp
    Variant vSbResponseBody
    Handle hoSbResponseBody
    Handle hoXmlResponse
    String sBatchInfo_xmlns
    String sId
    String sJobId
    String sState
    String sCreatedDate
    String sSystemModstamp
    Integer iNumberRecordsProcessed
    Integer iNumberRecordsFailed
    Integer iTotalProcessingTime
    Integer iApiActiveProcessingTime
    Integer iApexProcessingTime
    String sTemp1
    Boolean bTemp1

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    Get Create (RefClass(cComChilkatBinData)) To hoBdRequestBody
    If (Not(IsComObjectCreated(hoBdRequestBody))) Begin
        Send CreateComObject of hoBdRequestBody
    End
    Get ComLoadFile Of hoBdRequestBody "file" To iSuccess
    If (iSuccess <> True) Begin
        Showln "Failed to load file"
        Procedure_Return
    End

    Send ComSetRequestHeader To hoHttp "X-SFDC-Session" "{{_accessToken}}"
    Send ComSetRequestHeader To hoHttp "Accept-Encoding" "gzip"
    // Adds the "Authorization: Bearer <access_token>" header.
    Set ComAuthToken Of hoHttp To "<access_token>"
    Send ComSetRequestHeader To hoHttp "charset" "UTF-8"
    Send ComSetRequestHeader To hoHttp "Content-Encoding" "gzip"

    Get pvComObject of hoBdRequestBody to vBdRequestBody
    Get ComPBinaryBd Of hoHttp "POST" "https://domain.com/services/async/{{version}}/job/{{_jobId}}/batch" vBdRequestBody "zip/csv" False False To vResp
    If (IsComObject(vResp)) Begin
        Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
        Set pvComObject Of hoResp To vResp
    End
    Get ComLastMethodSuccess Of hoHttp To bTemp1
    If (bTemp1 = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbResponseBody
    If (Not(IsComObjectCreated(hoSbResponseBody))) Begin
        Send CreateComObject of hoSbResponseBody
    End
    Get pvComObject of hoSbResponseBody to vSbResponseBody
    Get ComGetBodySb Of hoResp vSbResponseBody To iSuccess
    Send Destroy of hoResp

    Get Create (RefClass(cComChilkatXml)) To hoXmlResponse
    If (Not(IsComObjectCreated(hoXmlResponse))) Begin
        Send CreateComObject of hoXmlResponse
    End
    Get pvComObject of hoSbResponseBody to vSbResponseBody
    Get ComLoadSb Of hoXmlResponse vSbResponseBody True To iSuccess
    Get ComGetXml Of hoXmlResponse To sTemp1
    Showln sTemp1

    // Sample XML response:
    // (Sample code for parsing the XML response is shown below)

    // <?xml version="1.0" encoding="UTF-8"?>
    // <batchInfo xmlns="http://www.force.com/2009/06/asyncapi/dataload">
    //     <id>751...</id>
    //     <jobId>750...</jobId>
    //     <state>Queued</state>
    //     <createdDate>datetime</createdDate>
    //     <systemModstamp>datetime</systemModstamp>
    //     <numberRecordsProcessed>0</numberRecordsProcessed>
    //     <numberRecordsFailed>0</numberRecordsFailed>
    //     <totalProcessingTime>0</totalProcessingTime>
    //     <apiActiveProcessingTime>0</apiActiveProcessingTime>
    //     <apexProcessingTime>0</apexProcessingTime>
    // </batchInfo>

    // Sample code for parsing the XML response...
    // Use this online tool to generate parsing code from sample XML: Generate XML Parsing Code

    Get ComGetAttrValue Of hoXmlResponse "xmlns" To sBatchInfo_xmlns
    Get ComGetChildContent Of hoXmlResponse "id" To sId
    Get ComGetChildContent Of hoXmlResponse "jobId" To sJobId
    Get ComGetChildContent Of hoXmlResponse "state" To sState
    Get ComGetChildContent Of hoXmlResponse "createdDate" To sCreatedDate
    Get ComGetChildContent Of hoXmlResponse "systemModstamp" To sSystemModstamp
    Get ComGetChildIntValue Of hoXmlResponse "numberRecordsProcessed" To iNumberRecordsProcessed
    Get ComGetChildIntValue Of hoXmlResponse "numberRecordsFailed" To iNumberRecordsFailed
    Get ComGetChildIntValue Of hoXmlResponse "totalProcessingTime" To iTotalProcessingTime
    Get ComGetChildIntValue Of hoXmlResponse "apiActiveProcessingTime" To iApiActiveProcessingTime
    Get ComGetChildIntValue Of hoXmlResponse "apexProcessingTime" To iApexProcessingTime


End_Procedure

Curl Command

curl -X POST
	-H "Authorization: Bearer <access_token>"
	-H "X-SFDC-Session: {{_accessToken}}"
	-H "Content-Type: text/csv"
	-H "Content-Type: zip/csv"
	-H "charset: UTF-8"
	-H "Accept-Encoding: gzip"
	-H "Content-Encoding: gzip"
	--data-binary '@file'
https://domain.com/services/async/{{version}}/job/{{_jobId}}/batch

Postman Collection Item JSON

{
  "name": "Bulk Create Batch",
  "event": [
    {
      "listen": "test",
      "script": {
        "exec": [
          "const context = pm.environment.name ? pm.environment : pm.collectionVariables;",
          "",
          "var xmlTree = xml2Json(pm.response.text());",
          "console.log(xmlTree);",
          "context.set(\"_batchId\", xmlTree['batchInfo']['id']);"
        ],
        "type": "text/javascript"
      }
    }
  ],
  "request": {
    "method": "POST",
    "header": [
      {
        "key": "X-SFDC-Session",
        "value": "{{_accessToken}}"
      },
      {
        "key": "Content-Type",
        "value": "text/csv"
      },
      {
        "key": "Content-Type",
        "value": "zip/csv",
        "disabled": true
      },
      {
        "key": "charset",
        "value": "UTF-8"
      },
      {
        "key": "Accept-Encoding",
        "value": "gzip",
        "disabled": true
      },
      {
        "key": "Content-Encoding",
        "value": "gzip",
        "disabled": true
      }
    ],
    "body": {
      "mode": "file",
      "file": {
        "src": ""
      }
    },
    "url": {
      "raw": "{{_endpoint}}/services/async/{{version}}/job/{{_jobId}}/batch",
      "host": [
        "{{_endpoint}}"
      ],
      "path": [
        "services",
        "async",
        "{{version}}",
        "job",
        "{{_jobId}}",
        "batch"
      ]
    }
  },
  "response": [
    {
      "name": "Successful Bulk Create Batch",
      "originalRequest": {
        "method": "POST",
        "header": [
          {
            "key": "X-SFDC-Session",
            "value": "{{_accessToken}}"
          },
          {
            "key": "Content-Type",
            "value": "text/csv"
          },
          {
            "key": "Content-Type",
            "value": "zip/csv",
            "disabled": true
          },
          {
            "key": "charset",
            "value": "UTF-8"
          },
          {
            "key": "Accept-Encoding",
            "value": "gzip",
            "disabled": true
          },
          {
            "key": "Content-Encoding",
            "value": "gzip",
            "disabled": true
          }
        ],
        "body": {
          "mode": "file",
          "file": {
            "src": "/Users/username/Downloads/account.csv"
          }
        },
        "url": {
          "raw": "{{_endpoint}}/services/async/{{version}}/job/{{_jobId}}/batch",
          "host": [
            "{{_endpoint}}"
          ],
          "path": [
            "services",
            "async",
            "{{version}}",
            "job",
            "{{_jobId}}",
            "batch"
          ]
        }
      },
      "status": "Created",
      "code": 201,
      "_postman_previewlanguage": "xml",
      "header": [
        {
          "key": "Date",
          "value": "Thu, 16 Nov 2023 16:16:10 GMT"
        },
        {
          "key": "Strict-Transport-Security",
          "value": "max-age=63072000; includeSubDomains"
        },
        {
          "key": "X-Content-Type-Options",
          "value": "nosniff"
        },
        {
          "key": "X-XSS-Protection",
          "value": "1; mode=block"
        },
        {
          "key": "X-Robots-Tag",
          "value": "none"
        },
        {
          "key": "Cache-Control",
          "value": "no-cache,must-revalidate,max-age=0,no-store,private"
        },
        {
          "key": "Location",
          "value": "/services/async/58.0/job/7502o00000kjNCsAAM/batch/7512o00001DSJWnAAP"
        },
        {
          "key": "Content-Type",
          "value": "application/xml"
        },
        {
          "key": "Content-Encoding",
          "value": "gzip"
        },
        {
          "key": "Transfer-Encoding",
          "value": "chunked"
        }
      ],
      "cookie": [
      ],
      "body": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<batchInfo\n   xmlns=\"http://www.force.com/2009/06/asyncapi/dataload\">\n    <id>751...</id>\n    <jobId>750...</jobId>\n    <state>Queued</state>\n    <createdDate>datetime</createdDate>\n    <systemModstamp>datetime</systemModstamp>\n    <numberRecordsProcessed>0</numberRecordsProcessed>\n    <numberRecordsFailed>0</numberRecordsFailed>\n    <totalProcessingTime>0</totalProcessingTime>\n    <apiActiveProcessingTime>0</apiActiveProcessingTime>\n    <apexProcessingTime>0</apexProcessingTime>\n</batchInfo>"
    }
  ]
}