Skip to main content

Process Bulk Job with JSON-lines in Data Loader

Zuora

Process Bulk Job with JSON-lines in Data Loader

Do not upload any files containing PCI sensitive data, such as credit card numbers, IP addresses, and Bank Account Numbers, as Data Loader is not designed for PCI compliance.

Data Loader supports uploading JSON-line files only for API jobs to perform bulk imports, updates, deletes, and cancellations.

The document guides through the process of creating an Import bulk job as a sample.

A JSON-line file is a plain text file where each line is a JSON object. The file has a .jsonl extension and would look something like this:

{ "name": "Sam", "firstName": "Sam", "lastName": "Jones"}
{ "name": "Joe", "firstName": "Joe", "lastName": "Smith"} 
{ "name": "Jill", "firstName": "Jill", "lastName": "Jackson"} 

You will need to create the .jsonl file for your specific object type and job. This document provides instructions on the required JSON structure for each object in the file, depending on the job type (Import, Update, Delete, etc.). You can generate the .jsonl file manually or programmatically using your preferred tools and programming languages.

This new.jsonl file primarily supports eliminating the need for manual mapping between CSV file headers and target object fields. This is particularly useful for complex or deeply nested objects like invoices, orders, and product rate plan charges, where creating and managing mappings can become very difficult.

Note: Unlike CSV support, this feature is available only through the API, not the user interface.

  1. Retrieve the list of object types compatible with JSON-line uploads.
    • To create a bulk job via API, identify the supported object types. Use the provided API to get a list of supported objectName, objectType, and the various actions supported for those objects. This objectType is required for the Create Job API request, and the objectName is used to retrieve field metadata for the object.
    curl --request GET \
      --url https://rest.zuora.com/data-loader/metadata/json/objects \
      --header 'Authorization: Bearer 0c918fd4865b447bbc83fbaf86ae8f12' 
    {
    "metadata": [
    {
    "objectName": "accounting-code",
    "objectType": "accountingcode",
    "actionsSupported": [
    "import",
    "update",
    "delete"
    ]
    },
    {
    "objectName": "accounting-period",
    "objectType": "AccountingPeriod",
    "actionsSupported": [
    "import",
    "delete"
    ]
    },
    {
    "objectName": "accounts-and-contacts",
    "objectType": "Account",
    "actionsSupported": [
    "import",
    "update",
    "delete"
    ]
    },
    {
    "objectName": "amendment",
    "objectType": "Amendment",
    "actionsSupported": [
    "import",
    "delete"
    ]
    },
    ...
    ]
    } 
    
  2. Retrieve object field metadata.
    • Once you have the objectName from the previous step, use it to retrieve the JSON field metadata. This metadata is crucial as it defines how to structure the JSON objects within your JSON-line file for that specific object.
      For example, make a specific API call to get the metadata for the objectType “Account" and objectName “accounts-and-contacts” for “Import" action. The API's response shows how to structure your JSON objects for this specific objectType and action. For instance, the response indicates that name is a top-level string field, while additionalEmailAddresses is a top-level array of strings. The response can also describe nested JSON structures.
      By understanding this structure, you can correctly create your JSON-line files, ensuring each row adheres to the specified format. Note that the field metadata for a given objectName changes depending on the action type (e.g., Import, Update, Cancel, and Delete).
      The API response is truncated for documentation purposes.

    curl --request GET \
      --url 'https://rest.zuora.com/data-loader/metadata/json/objects/accounts-and-contacts/fields?action=Import' \
      --header 'Authorization: Bearer 0c918fd4865b447bbc83fbaf86ae8f12' 
      {
    "name": {
    "type": "string",
    "regex": "(^(?!\\s*$).{1,255})$",
    "required": true
    },
    "billCycleDay": {
    "type": "number",
    "regex": "^(0|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31)$",
    "required": true
    },
    "currency": {
    "type": "string",
    "regex": "^(AUD|USD|EUR|GBP|JPY|CAD)$",
    "required": true
    },
    "notes": {
    "type": "string",
    "regex": "^.{0,65535}$",
    "required": false
    },
    "accountNumber": {
    "type": "string",
    "regex": "^.{0,50}$",
    "required": false
    },
    "additionalEmailAddresses": [
    {
    "type": "string",
    "regex": "^(|([a-zA-Z0-9_.%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,})(|[a-zA-Z0-9_.%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,})*)$",
    "required": false
    }
    ],
    "autoPay": {
    "type": "boolean",
    "regex": "^(|([Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee]))$",
    "required": false
    },
    "batch": {
    "type": "string",
    "regex": "^(|(Batch1|Batch2|Batch3|Batch4|Batch5|Batch6|Batch7|Batch8|Batch9|Batch10|Batch11|Batch12|Batch13|Batch14|Batch15|Batch16|Batch17|Batch18|Batch19|Batch20|Batch21|Batch22|Batch23|Batch24|Batch25|Batch26|Batch27|Batch28|Batch29|Batch30|Batch31|Batch32|Batch33|Batch34|Batch35|Batch36|Batch37|Batch38|Batch39|Batch40|Batch41|Batch42|Batch43|Batch44|Batch45|Batch46|Batch47|Batch48|Batch49|Batch50))$",
    "required": false
    }
    ...
    }
    
  3. Create a JSON-line bulk job. 
    • Once you have the desired objectType and your JSON-line file is structured correctly, you can submit a bulk job.
      The following API call initiates this process. In this request, you need to create a bulk job with the jobType of Import (other options include update, Delete, and Cancel),  the fileType of JSON, and the objectType of Account. The API then creates a bulk job Id for you, which is needed for all subsequent API calls. The response also includes an uploadRequest field for uploading your JSON file. 
    curl --request POST \
      --url 'https://rest.zuora.com/bulk-data/bulk-jobs?=' \
      --header 'Authorization: Bearer 6854a463ca4a41029eead2a41306d769' \
      --header 'Content-Type: application/json' \
      --data '{
        "name": "Import Accounts",
        "description": "A test jsonl Import file",
        "objectType": "Account",
        "jobType": "Import",
        "fileType": "jsonl"
    }'
    {
    "id": "dd447e38-6d9e-418d-9e61-6b553479727a",
    "uploadRequest": {
    "uri": "https://bulk-data-uploads-prod.s3.us-west-2.amazonaws.com",
    "fields": {
    "bucket": "bulk-data-uploads-stg",
    "Policy": "eyJleHBpcmF0aW9uIjoiMjAyNS0wMS0yOVQwMzoxMjoxNC44OTU5MzdaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMjA5NzE1MjAwMF0seyJ4LWFtei1hbGdvcml0aG0iOiJBV1M0LUhNQUMtU0hBMjU2In0seyJ4LWFtei1jcmVkZW50aWFsIjoiQVNJQVJVUFE1R09DU0NTM1RFRVgvMjAyNTAxMjkvdXMtd2VzdC0yL3MzL2F3czRfcmVxdWVzdCJ9LHsieC1hbXotZGF0ZSI6IjIwMjUwMTI5VDAzMDIxNFoifSx7ImJ1Y2tldCI6ImJ1bGstZGF0YS11cGxvYWRzLXN0ZyJ9LHsia2V5IjoiZGQ0NDdlMzgtNmQ5ZS00MThkLTllNjEtNmI1NTM0Nzk3MjdhIn0seyJ4LWFtei1zZWN1cml0eS10b2tlbiI6IklRb0piM0pwWjJsdVgyVmpFSHNhQ1hWekxYZGxjM1F0TWlKR01FUUNJQjRraUY1ZmhlSE1BTHNqYU5rTVY3UUNhaG5LeEUxS2dDczF6VFk3VVIwZUFpQW5GRzJ5aHJNdzRxQ3VVajdsS0srbGU5VHJDakVsWXpkN3JOTnkwWG4vVlNxQUJRaUUvLy8vLy8vLy8vOEJFQUlhRERFeE1qY3hNVEkxTURneU1TSU1obXhTQ2ZXUGFSMEFaU1NMS3RRRS83T2lKdXFFcDE3UUtOanloSFhQa0pwT2orSVNVYXpTbk1DbWZTczZuYzNSWUZRdW1LVk1HcGdHNnFUUGx4aE9BQ1czUTlkTVpYRTAvWTZ2WWNwT3FOcGZsVTZtWkJJbVZLa08zYlhRdkIzNnZYMEdKaXB0NCtpajNaM2t5N3d3cVdCei9XS2kyTCtEc2VEekE4UExUK0lFd0J0T08xZUNJZGREcUVvNnMyRDh5YXVSRzJLbUlDWGhYMDdaSWcraXpRM3IvQTV6eHhZNXhzWEVudnUzK3docDUrYlBYRTlBOVZWWGVISElLcytGcjd1S3VqUUFGNTdDRjdPUlBtY0ViY2pHS2lyVW9aSzloZzQyUU9XL0xZQ2Z1QW5CUzAxcTJKdnhVejNKSEVuZE1rODB2Y2hQaEhNelU3MFVuV0dkTkNOdHlxcW4zM0lJOVdGbE5ST2M0clRXbmZlZzYxcEl5TE9jZjVqSE1jNVdCaHBEbjFPSS9VRU5HWHJicE1mSWtEUCswcGtIOFRQb29nWGVmOVZ6QWtzNVcvQ0hNNVRvcktwYU4yVFlRNm5ObmdDZEtya2I2WmJ5WDBxREc5dnp2T0w3TXJhY3ppNFo5OG9oZFBuOUJGeWx6TmlWdlUyazhEc3lsSGdJY2RrdjhScVUvSFlRRWdDU1BURklicFVzWHdrN3BjeTkrTk9jTitXS1BNNVg4VVVVcVdKMXVUbzZEYXV5a0dzcG5hdDMyT3Z1RndMUTZoY1pGSHRKQnpOaCszNklMN3VkR1lwbVJ3UDJoNFc0NDhSZHVyNHlCM2FBay80N3FPdkNRTVNBcmRLY1h4K214bnVjOTk5a3JNbjRMT1ZUdlZ5L1pFSHRVS0d0MXFUTkR1ZTlMSVVuNGpJcU14SUJlcjZDSllySXBhdFhlMzdHYThFU1RWMzZHQ2pqSFBOOHZyb1ZaaXBtcXByMVdmS1lYUTFuVTVXanluZkcya2RMSVdseWVhd0JKdnNvS3EwOWhCT2J4VzNscGY4R2pIa3JySktHRmlUTCt3c1pMVlZxcGNnak9zTXcxNmZtdkFZNm13SENLcWcvZ1Y1KyswZ0psVmt3MlRrRGRSZVdRU3p5YWpWVWVRcTkxdllxclJzemwyWmN1bUZnQTJQTTVXbUEwdUxDeFVydXBXaHFCc2I0TmVFMk9OMTd1OFVtNW4xWHBKckRTcXBZbE54Y0dCS0FvdVIxaFJ3ZGFWNDlzOW90TFBOQkV4QzhVa0cvZGJYZEVIaE1SR3h5NkJBa1ZVSXZEUVZNRERXZG9KUjc1UnBSNWFXNnFmSDhXR1d2UjhTcStQaWcySDJoT3c5NmJ6bjdFUT09In1dfQ==",
    "x-amz-date": "20250129T030214Z",
    "x-amz-signature": "5bd022e12b168afa26de76103098161a75458d3169cf12266976119e0b5bd4bd",
    "x-amz-security-token": "IQoJb3JpZ2luX2VjEHsaCXVzLXdlc3QtMiJGMEQCIB4kiF5fheHMALsjaNkMV7QCahnKxE1KgCs1zTY7UR0eAiAnFG2yhrMw4qCuUj7lKK+le9TrCjElYzd7rNNy0Xn/VSqABQiE//////////8BEAIaDDExMjcxMTI1MDgyMSIMhmxSCfWPaR0AZSSLKtQE/7OiJuqEp17QKNjyhHXPkJpOj+ISUazSnMCmfSs6nc3RYFQumKVMGpgG6qTPlxhOACW3Q9dMZXE0/Y6vYcpOqNpflU6mZBImVKkO3bXQvB36vX0GJipt4+ij3Z3ky7wwqWBz/WKi2L+DseDzA8PLT+IEwBtOO1eCIddDqEo6s2D8yauRG2KmICXhX07ZIg+izQ3r/A5zxxY5xsXEnvu3+whp5+bPXE9A9VVXeHHIKs+Fr7uKujQAF57CF7ORPmcEbcjGKirUoZK9hg42QOW/LYCfuAnBS01q2JvxUz3JHEndMk80vchPhHMzU70UnWGdNCNtyqqn33II9WFlNROc4rTWnfeg61pIyLOcf5jHMc5WBhpDn1OI/UENGXrbpMfIkDP+0pkH8TPoogXef9VzAks5W/CHM5TorKpaN2TYQ6nNngCdKrkb6ZbyX0qDG9vzvOL7Mraczi4Z98ohdPn9BFylzNiVvU2k8DsylHgIcdkv8RqU/HYQEgCSPTFIbpUsXwk7pcy9+NOcN+WKPM5X8UUUqWJ1uTo6DauykGspnat32OvuFwLQ6hcZFHtJBzNh+36IL7udGYpmRwP2h4W448Rdur4yB3aAk/47qOvCQMSArdKcXx+mxnuc999krMn4LOVTvVy/ZEHtUKGt1qTNDue9LIUn4jIqMxIBer6CJYrIpatXe37Ga8ESTV36GCjjHPN8vroVZipmqpr1WfKYXQ1nU5WjynfG2kdLIWlyeawBJvsoKq09hBObxW3lpf8GjHkrrJKGFiTL+wsZLVVqpcgjOsMw16fmvAY6mwHCKqg/gV5++0gJlVkw2TkDdReWQSzyajVUeQq91vYqrRszl2ZcumFgA2PM5WmA0uLCxUrupWhqBsb4NeE2ON17u8Um5n1XpJrDSqpYlNxcGBKAouR1hRwdaV49s9otLPNBExC8UkG/dbXdEHhMRGxy6BAkVUIvDQVMDDWdoJR75RpR5aW6qfH8WGWvR8Sq+Pig2H2hOw96bzn7EQ==",
    "x-amz-algorithm": "AWS4-HMAC-SHA256",
    "key": "dd447e38-6d9e-418d-9e61-6b553479727a",
    "x-amz-credential": "ASIARUPQ5GOCSCS3TEEX/20250129/us-west-2/s3/aws4_request"
    }
    },
    "status": "Created",
    "jobType": "Import"
    }  
    
  4. Upload the JSON-line file for the bulk job. 
    • After creating the bulk job, you must upload the JSON-line file before you can submit it for processing. To do this, use the information from the previous API call to perform a pre-signed S3 POST. The request must use the exact parameters provided in the create bulk job API response, with one exception: the file parameter. This parameter must point to the location of the JSON-line file on your system.
    curl --request POST \
      --url 'https://bulk-data-uploads-prod.s3.us-west-2.amazonaws.com/?=' \
      --header 'Content-Type: multipart/form-data' \
      --form bucket=bulk-data-uploads-stg \
      --form Policy=eyJleHBpcmF0aW9uIjoiMjAyNS0wMS0yOVQwMzoxMjoxNC44OTU5MzdaIiwiY29uZGl0aW9ucyI6W1siY29udGVudC1sZW5ndGgtcmFuZ2UiLDAsMjA5NzE1MjAwMF0seyJ4LWFtei1hbGdvcml0aG0iOiJBV1M0LUhNQUMtU0hBMjU2In0seyJ4LWFtei1jcmVkZW50aWFsIjoiQVNJQVJVUFE1R09DU0NTM1RFRVgvMjAyNTAxMjkvdXMtd2VzdC0yL3MzL2F3czRfcmVxdWVzdCJ9LHsieC1hbXotZGF0ZSI6IjIwMjUwMTI5VDAzMDIxNFoifSx7ImJ1Y2tldCI6ImJ1bGstZGF0YS11cGxvYWRzLXN0ZyJ9LHsia2V5IjoiZGQ0NDdlMzgtNmQ5ZS00MThkLTllNjEtNmI1NTM0Nzk3MjdhIn0seyJ4LWFtei1zZWN1cml0eS10b2tlbiI6IklRb0piM0pwWjJsdVgyVmpFSHNhQ1hWekxYZGxjM1F0TWlKR01FUUNJQjRraUY1ZmhlSE1BTHNqYU5rTVY3UUNhaG5LeEUxS2dDczF6VFk3VVIwZUFpQW5GRzJ5aHJNdzRxQ3VVajdsS0srbGU5VHJDakVsWXpkN3JOTnkwWG4vVlNxQUJRaUUvLy8vLy8vLy8vOEJFQUlhRERFeE1qY3hNVEkxTURneU1TSU1obXhTQ2ZXUGFSMEFaU1NMS3RRRS83T2lKdXFFcDE3UUtOanloSFhQa0pwT2orSVNVYXpTbk1DbWZTczZuYzNSWUZRdW1LVk1HcGdHNnFUUGx4aE9BQ1czUTlkTVpYRTAvWTZ2WWNwT3FOcGZsVTZtWkJJbVZLa08zYlhRdkIzNnZYMEdKaXB0NCtpajNaM2t5N3d3cVdCei9XS2kyTCtEc2VEekE4UExUK0lFd0J0T08xZUNJZGREcUVvNnMyRDh5YXVSRzJLbUlDWGhYMDdaSWcraXpRM3IvQTV6eHhZNXhzWEVudnUzK3docDUrYlBYRTlBOVZWWGVISElLcytGcjd1S3VqUUFGNTdDRjdPUlBtY0ViY2pHS2lyVW9aSzloZzQyUU9XL0xZQ2Z1QW5CUzAxcTJKdnhVejNKSEVuZE1rODB2Y2hQaEhNelU3MFVuV0dkTkNOdHlxcW4zM0lJOVdGbE5ST2M0clRXbmZlZzYxcEl5TE9jZjVqSE1jNVdCaHBEbjFPSS9VRU5HWHJicE1mSWtEUCswcGtIOFRQb29nWGVmOVZ6QWtzNVcvQ0hNNVRvcktwYU4yVFlRNm5ObmdDZEtya2I2WmJ5WDBxREc5dnp2T0w3TXJhY3ppNFo5OG9oZFBuOUJGeWx6TmlWdlUyazhEc3lsSGdJY2RrdjhScVUvSFlRRWdDU1BURklicFVzWHdrN3BjeTkrTk9jTitXS1BNNVg4VVVVcVdKMXVUbzZEYXV5a0dzcG5hdDMyT3Z1RndMUTZoY1pGSHRKQnpOaCszNklMN3VkR1lwbVJ3UDJoNFc0NDhSZHVyNHlCM2FBay80N3FPdkNRTVNBcmRLY1h4K214bnVjOTk5a3JNbjRMT1ZUdlZ5L1pFSHRVS0d0MXFUTkR1ZTlMSVVuNGpJcU14SUJlcjZDSllySXBhdFhlMzdHYThFU1RWMzZHQ2pqSFBOOHZyb1ZaaXBtcXByMVdmS1lYUTFuVTVXanluZkcya2RMSVdseWVhd0JKdnNvS3EwOWhCT2J4VzNscGY4R2pIa3JySktHRmlUTCt3c1pMVlZxcGNnak9zTXcxNmZtdkFZNm13SENLcWcvZ1Y1KyswZ0psVmt3MlRrRGRSZVdRU3p5YWpWVWVRcTkxdllxclJzemwyWmN1bUZnQTJQTTVXbUEwdUxDeFVydXBXaHFCc2I0TmVFMk9OMTd1OFVtNW4xWHBKckRTcXBZbE54Y0dCS0FvdVIxaFJ3ZGFWNDlzOW90TFBOQkV4QzhVa0cvZGJYZEVIaE1SR3h5NkJBa1ZVSXZEUVZNRERXZG9KUjc1UnBSNWFXNnFmSDhXR1d2UjhTcStQaWcySDJoT3c5NmJ6bjdFUT09In1dfQ== \
      --form x-amz-date=20250129T030214Z \
      --form x-amz-signature=5bd022e12b168afa26de76103098161a75458d3169cf12266976119e0b5bd4bd \
      --form x-amz-credential=ASIARUPQ5GOCSCS3TEEX/20250129/us-west-2/s3/aws4_request \
      --form x-amz-algorithm=AWS4-HMAC-SHA256 \
      --form key=dd447e38-6d9e-418d-9e61-6b553479727a \
      --form 'x-amz-security-token=IQoJb3JpZ2luX2VjEHsaCXVzLXdlc3QtMiJGMEQCIB4kiF5fheHMALsjaNkMV7QCahnKxE1KgCs1zTY7UR0eAiAnFG2yhrMw4qCuUj7lKK+le9TrCjElYzd7rNNy0Xn/VSqABQiE//////////8BEAIaDDExMjcxMTI1MDgyMSIMhmxSCfWPaR0AZSSLKtQE/7OiJuqEp17QKNjyhHXPkJpOj+ISUazSnMCmfSs6nc3RYFQumKVMGpgG6qTPlxhOACW3Q9dMZXE0/Y6vYcpOqNpflU6mZBImVKkO3bXQvB36vX0GJipt4+ij3Z3ky7wwqWBz/WKi2L+DseDzA8PLT+IEwBtOO1eCIddDqEo6s2D8yauRG2KmICXhX07ZIg+izQ3r/A5zxxY5xsXEnvu3+whp5+bPXE9A9VVXeHHIKs+Fr7uKujQAF57CF7ORPmcEbcjGKirUoZK9hg42QOW/LYCfuAnBS01q2JvxUz3JHEndMk80vchPhHMzU70UnWGdNCNtyqqn33II9WFlNROc4rTWnfeg61pIyLOcf5jHMc5WBhpDn1OI/UENGXrbpMfIkDP+0pkH8TPoogXef9VzAks5W/CHM5TorKpaN2TYQ6nNngCdKrkb6ZbyX0qDG9vzvOL7Mraczi4Z98ohdPn9BFylzNiVvU2k8DsylHgIcdkv8RqU/HYQEgCSPTFIbpUsXwk7pcy9+NOcN+WKPM5X8UUUqWJ1uTo6DauykGspnat32OvuFwLQ6hcZFHtJBzNh+36IL7udGYpmRwP2h4W448Rdur4yB3aAk/47qOvCQMSArdKcXx+mxnuc999krMn4LOVTvVy/ZEHtUKGt1qTNDue9LIUn4jIqMxIBer6CJYrIpatXe37Ga8ESTV36GCjjHPN8vroVZipmqpr1WfKYXQ1nU5WjynfG2kdLIWlyeawBJvsoKq09hBObxW3lpf8GjHkrrJKGFiTL+wsZLVVqpcgjOsMw16fmvAY6mwHCKqg/gV5++0gJlVkw2TkDdReWQSzyajVUeQq91vYqrRszl2ZcumFgA2PM5WmA0uLCxUrupWhqBsb4NeE2ON17u8Um5n1XpJrDSqpYlNxcGBKAouR1hRwdaV49s9otLPNBExC8UkG/dbXdEHhMRGxy6BAkVUIvDQVMDDWdoJR75RpR5aW6qfH8WGWvR8Sq+Pig2H2hOw96bzn7EQ==' \
      --form file=@/Users/asadadekar/Downloads/accounts.jsonl
    
  5. Submit the bulk job for processing.
    • After creating the bulk job and uploading the file, the next step is to submit it for processing. Note that theIdreturned from the create job API response is included in the URL path to submit the job.
    curl --request POST \
      --url https://rest.zuora.com/bulk-data/bulk-jobs/dd447e38-6d9e-418d-9e61-6b553479727a/submissions \
      --header 'Authorization: Bearer e970cc57b54246c79dc44934fa30bb69'
    
  6. Query the bulk job status.
    • After submitting the job, you can monitor its progress by calling this API. Note that theId returned from the create job API response is included in the URL path to query the job. The sample response payload depicted below shows the job has completed, with 15 rows successfully imported and 5  failures. You may query this API until your status shows completed. For larger jobs, it is a good idea to wait for a few seconds/minutes before querying again.
    curl --request GET \
      --url https://rest.zuora.com/bulk-data/bulk-jobs/dd447e38-6d9e-418d-9e61-6b553479727a/summary \
      --header 'Authorization: Bearer 1c5e8844694144e0b5034a2a1b3068e6'
    {
    "id": "dd447e38-6d9e-418d-9e61-6b553479727a",
        "name": "Import Accounts",
        "description": "A test jsonl Import file",
    "createdAt": "2025-01-29T03:02:14Z",
    "createdBy": "cf7c39bb-8233-428e-99c2-94cee427d04e",
    "submittedAt": "2025-01-29T03:02:26Z",
    "submittedBy": "cf7c39bb-8233-428e-99c2-94cee427d04e",
    "status": "Completed",
    "rowCount": 20,
    "rowsSucceeded": 15,
    "rowsFailed": 5,
    "lastUpdatedAt": "2025-01-29T03:02:35Z",
    "objectType": "accounts-and-contacts",
    "jobType": "Import",
    "isCustomObject": false,
    "customObjectNamespace": "default",
    "dataSourceType": "UserUpload",
    "systemType": "Billing",
    "fileType": "jsonl"
    }
    
  7. Download job results.    
    • Once the job has completed processing, you can download the files that show which rows were successfully processed and which ones failed. To do this, call the following API to fetch the file URLs. The API response returns a link to:

      • sourceFile- JSON-lines source file

      • errorRowsFile- JSON-lines file containing the rows that failed, along with the reasons for failure

      • successRowsFile- JSON-lines file containing the rows that were successfully processed

        You can then use these URLs to download the files directly with an HTTP GET request. Note that the job Id returned by the create job API must be included in the URL path to retrieve the download links.

    curl --request GET \
      --url https://rest.zuora.com/bulk-data/bulk-jobs/dd447e38-6d9e-418d-9e61-6b553479727a/downloads \
      --header 'Authorization: Bearer 1c5e8844694144e0b5034a2a1b3068e6'
    {
    "jobId": "dd447e38-6d9e-418d-9e61-6b553479727a",
    "status": "Completed",
    "sourceFile": "https://bulk-data-uploads-prod.s3.us-west-2.amazonaws.com/dd447e38-6d9e-418d-9e61-6b553479727a?X-Amz-Security-Token=IQoJb3JpZ2luX2VjEH4aCXVzLXdlc3QtMiJHMEUCIQDry5rKinnyANIf4nLJlc4olwaenX58cN1%2FnfXvOZQr1AIgOBWpEFyDXdJBFR5r74o5TZnbYxrryP15HZ5e5EDd1RgqgAUIh%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARACGgwxMTI3MTEyNTA4MjEiDOZ9k%2FWXHkXSGKd8fSrUBCsdq%2B0z1qAAkDDLVXqZUwHgJ5Pf0X6Qy99F18eOdGftYNQtc3VofCZl9IXBBBj%2F%2FhOrtd0TTT%2FAU5JdhHEiPacwb6UqqtGcuHaM5hbbRoDafSuKzDEy7yQuNVbgg6XRyUVqQjNsLevfpySCVAi8zNDY55Pz7EcJ4%2BozAoc9vZ%2BSAEi74QrGg0%2BJRbzSaLjjaXPIEBS1LoBPEo87Mp4ZeFM22rfgMXe70hfGwundIRIM%2BzNplGx1qrm7OJOoMQoeTYlfhrheXsy6WwwAUyxEL6IaPPI26J%2FGBD8dWCOUXF0uAgNYwd5%2B%2FnZLqy3cSxkCtddv9UqRSA4L8wFUzBV3plIwbxIKlNwn1ovGYq3sUr0rVbMUDTldL1cuo4jrAleUSDNHbhB5cPJ3e1Qtr1l5Vc84QnLOVOUbt7JrZzoxT1gMgj6sT%2Fo3XK6EakINjkIGCe9rMj%2BYJBZ%2FgiCZFdgqr%2BrhsPDD8K8lbgbyfFlUyofU2vIgjPww6nSqJ5j7y3M58oEp5lPZ9wjH47Q%2FBPbuhSYUVjTjVyTzljJu8LghAci8Icoc9Qrk3n0OXPmgLNSjzl9LVnjGtF%2FZ59c5Zblfu%2FlMtFaUZmASeAYATi2FXp46abgWV9KaI%2FUkAPSaXqJZR792lTKu%2Fqi5yzMOQ7Y7%2Bi9w%2FnxzuNokaejr7sfOAFisXjwa23ACJXeSp46cn6WObExj5nvJt6Nh6j5qdx9QIfYYHpiNovJ98HCH4OWYD1F7s2KStXKxhhxX%2F2KlSMC84zMNOMPyAuyfBcpCUehr3XBqNlJAMOj35rwGOpoBN3UR03iIynmFFggWOH%2B0bYPbquiYZvVFxd21Pv7d0hUYZcHOsjB%2BH%2Bp%2FrXsq%2BsiBJnKGDfZwXASASlouXZgPZrZhsc%2BePXoMeuohbXBfN1cG0%2FSzV6w02Qqvj0inCKRYEJ8leY%2FzD5kFiqt5AT3jammS3ZQaEF0UMs4D3fn7pX8Ts5NxhKcvZZkaGIxGodwkWBdFGLml3FyvNw%3D%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20250129T052600Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=ASIARUPQ5GOC6N473QJL%2F20250129%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=01f71b1442187695613904b6471413867dad15e3d5ec5cb28cb0482c1b46e647",
    "errorRowsFile": "https://bulk-data-job-details-prod.s3.us-west-2.amazonaws.com/dd447e38-6d9e-418d-9e61-6b553479727a.error_rows.jsonl?X-Amz-Security-Token=IQoJb3JpZ2luX2VjEH4aCXVzLXdlc3QtMiJHMEUCIQDry5rKinnyANIf4nLJlc4olwaenX58cN1%2FnfXvOZQr1AIgOBWpEFyDXdJBFR5r74o5TZnbYxrryP15HZ5e5EDd1RgqgAUIh%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARACGgwxMTI3MTEyNTA4MjEiDOZ9k%2FWXHkXSGKd8fSrUBCsdq%2B0z1qAAkDDLVXqZUwHgJ5Pf0X6Qy99F18eOdGftYNQtc3VofCZl9IXBBBj%2F%2FhOrtd0TTT%2FAU5JdhHEiPacwb6UqqtGcuHaM5hbbRoDafSuKzDEy7yQuNVbgg6XRyUVqQjNsLevfpySCVAi8zNDY55Pz7EcJ4%2BozAoc9vZ%2BSAEi74QrGg0%2BJRbzSaLjjaXPIEBS1LoBPEo87Mp4ZeFM22rfgMXe70hfGwundIRIM%2BzNplGx1qrm7OJOoMQoeTYlfhrheXsy6WwwAUyxEL6IaPPI26J%2FGBD8dWCOUXF0uAgNYwd5%2B%2FnZLqy3cSxkCtddv9UqRSA4L8wFUzBV3plIwbxIKlNwn1ovGYq3sUr0rVbMUDTldL1cuo4jrAleUSDNHbhB5cPJ3e1Qtr1l5Vc84QnLOVOUbt7JrZzoxT1gMgj6sT%2Fo3XK6EakINjkIGCe9rMj%2BYJBZ%2FgiCZFdgqr%2BrhsPDD8K8lbgbyfFlUyofU2vIgjPww6nSqJ5j7y3M58oEp5lPZ9wjH47Q%2FBPbuhSYUVjTjVyTzljJu8LghAci8Icoc9Qrk3n0OXPmgLNSjzl9LVnjGtF%2FZ59c5Zblfu%2FlMtFaUZmASeAYATi2FXp46abgWV9KaI%2FUkAPSaXqJZR792lTKu%2Fqi5yzMOQ7Y7%2Bi9w%2FnxzuNokaejr7sfOAFisXjwa23ACJXeSp46cn6WObExj5nvJt6Nh6j5qdx9QIfYYHpiNovJ98HCH4OWYD1F7s2KStXKxhhxX%2F2KlSMC84zMNOMPyAuyfBcpCUehr3XBqNlJAMOj35rwGOpoBN3UR03iIynmFFggWOH%2B0bYPbquiYZvVFxd21Pv7d0hUYZcHOsjB%2BH%2Bp%2FrXsq%2BsiBJnKGDfZwXASASlouXZgPZrZhsc%2BePXoMeuohbXBfN1cG0%2FSzV6w02Qqvj0inCKRYEJ8leY%2FzD5kFiqt5AT3jammS3ZQaEF0UMs4D3fn7pX8Ts5NxhKcvZZkaGIxGodwkWBdFGLml3FyvNw%3D%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20250129T052600Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=ASIARUPQ5GOC6N473QJL%2F20250129%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=dfa296b541e4e83e2d3433ac14426151ef157ca0f927141f8b5da2f413c1d0ef",
    "successRowsFile": "https://bulk-data-job-details-prod.s3.us-west-2.amazonaws.com/dd447e38-6d9e-418d-9e61-6b553479727a.success_rows.jsonl?X-Amz-Security-Token=IQoJb3JpZ2luX2VjEH4aCXVzLXdlc3QtMiJHMEUCIQDry5rKinnyANIf4nLJlc4olwaenX58cN1%2FnfXvOZQr1AIgOBWpEFyDXdJBFR5r74o5TZnbYxrryP15HZ5e5EDd1RgqgAUIh%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FARACGgwxMTI3MTEyNTA4MjEiDOZ9k%2FWXHkXSGKd8fSrUBCsdq%2B0z1qAAkDDLVXqZUwHgJ5Pf0X6Qy99F18eOdGftYNQtc3VofCZl9IXBBBj%2F%2FhOrtd0TTT%2FAU5JdhHEiPacwb6UqqtGcuHaM5hbbRoDafSuKzDEy7yQuNVbgg6XRyUVqQjNsLevfpySCVAi8zNDY55Pz7EcJ4%2BozAoc9vZ%2BSAEi74QrGg0%2BJRbzSaLjjaXPIEBS1LoBPEo87Mp4ZeFM22rfgMXe70hfGwundIRIM%2BzNplGx1qrm7OJOoMQoeTYlfhrheXsy6WwwAUyxEL6IaPPI26J%2FGBD8dWCOUXF0uAgNYwd5%2B%2FnZLqy3cSxkCtddv9UqRSA4L8wFUzBV3plIwbxIKlNwn1ovGYq3sUr0rVbMUDTldL1cuo4jrAleUSDNHbhB5cPJ3e1Qtr1l5Vc84QnLOVOUbt7JrZzoxT1gMgj6sT%2Fo3XK6EakINjkIGCe9rMj%2BYJBZ%2FgiCZFdgqr%2BrhsPDD8K8lbgbyfFlUyofU2vIgjPww6nSqJ5j7y3M58oEp5lPZ9wjH47Q%2FBPbuhSYUVjTjVyTzljJu8LghAci8Icoc9Qrk3n0OXPmgLNSjzl9LVnjGtF%2FZ59c5Zblfu%2FlMtFaUZmASeAYATi2FXp46abgWV9KaI%2FUkAPSaXqJZR792lTKu%2Fqi5yzMOQ7Y7%2Bi9w%2FnxzuNokaejr7sfOAFisXjwa23ACJXeSp46cn6WObExj5nvJt6Nh6j5qdx9QIfYYHpiNovJ98HCH4OWYD1F7s2KStXKxhhxX%2F2KlSMC84zMNOMPyAuyfBcpCUehr3XBqNlJAMOj35rwGOpoBN3UR03iIynmFFggWOH%2B0bYPbquiYZvVFxd21Pv7d0hUYZcHOsjB%2BH%2Bp%2FrXsq%2BsiBJnKGDfZwXASASlouXZgPZrZhsc%2BePXoMeuohbXBfN1cG0%2FSzV6w02Qqvj0inCKRYEJ8leY%2FzD5kFiqt5AT3jammS3ZQaEF0UMs4D3fn7pX8Ts5NxhKcvZZkaGIxGodwkWBdFGLml3FyvNw%3D%3D&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20250129T052600Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3600&X-Amz-Credential=ASIARUPQ5GOC6N473QJL%2F20250129%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Signature=ef7e349ff03a76d4477e1bcb6c67da529f11907e402e5776722193275da01d08",
    "delimiter": ","
    }