REST Post
In this article
Overview
We recommend that you use the HTTP Client Snap instead of Snaps from the REST Snap Pack to connect to REST-based APIs and applications.
You can use the REST Post Snap to to execute the HTTP Post method on a REST API service endpoint to create business object resources. The Snap also assigns a new URI to every business object that it creates. and returns this URI in the output view.
Prerequisites
None.
Supported Features
Works in Ultra Pipelines. We recommend you to set the batch size to 1.
Limitations and Known Issues
None.
Snap Views
Type | Format | Number of Views | Examples of Upstream and Downstream Snaps | Description |
---|---|---|---|---|
Input | Document |
|
| Each input document offers details associated with the data that must be posted to the target RESTful server. |
Output | Document |
|
| Each output document contains details associated with the outcome of the Post request. |
Error | Error handling is a generic way to handle errors without losing data or failing the Snap execution. You can handle the errors that the Snap might encounter while running the Pipeline by choosing one of the following options from the When errors occur list under the Views tab:
Learn more about Error handling in Pipelines. |
Snap Settings
Field Name | Field Type | Description |
---|---|---|
Label*
| String | Specify a name for the Snap. You can modify this to be more specific, especially if you have more than one of the same Snap in your pipeline. |
Service URL* | String/Expression | Specify the service endpoint URL of REST API. You can provide the URL in one of the following ways:
For example:
For example: For Snaps using AWS Signature V4 accounts, you can use the canonical name (CNAME) for the URI so it's not necessary for the URL to end with amazonaws.com or have the region and service provided in it. However, if you are using the CNAME you must provide it in the AWS Region and Service Name fields in the AWS Signature V4 account. The hostname in the CNAME must be equal to the bucket name. For example: New URI with CNAME: Here, the bucket name is The Snap finds the value at the JSON path $.widget.id in the input data and replaces "%s" in the Service URL with the value. You can connect File Reader and JSON Parser Snaps upstream of a REST Put Snap and prepare the following JSON file for the File Reader Snap: This property is expression-enabled. For more information on the expression language, see Understanding Expressions in SnapLogic and Using Expressions. For information on Pipeline Parameters, see Pipeline Properties. |
HTTP Entity
| String/Expression | Specify the JSON path to the HTTP entity data in the input map data. You can leave this field blank if there is no entity data to send to the service URL. This property is expression-enabled. For more information on the expression language, see Understanding Expressions in SnapLogic and Using Expressions. For information on Pipeline Parameters, see Pipeline Properties. |
Batch size
| String | The number of documents to be included in a single request. The incoming documents will be accumulated in a list up to the defined batch size before it is submitted to the endpoint Make sure to set the batch size only if your REST endpoint expects a list. |
Show all headers
| Checkbox | The REST endpoint may return a response with multiple headers with the same header name.
If any of these objects has a key-value format, it is parsed into the map data. |
Single file upload: File DefaultValue: N/A | String/Expression | Specify the path of the file to be uploaded.
This property is expression-enabled. For more information on the expression language, see Understanding Expressions in SnapLogic and Using Expressions. For information on Pipeline Parameters, see Pipeline Properties. |
Single file upload: File key DefaultValue:file | String/Expression | Specify the key required for the multi-part form-data needed to upload a file. HTTP POST uses multi-part entity to achieve the file upload. The form-data of its multi-part entity contains key-value pairs. Upload-file key is dependent of service endpoint. This property is expression-enabled. For more information on the expression language, see Understanding Expressions in SnapLogic and Using Expressions. For information on Pipeline Parameters, see Pipeline Properties. |
Single file upload: Filename to be used
| String/Expression | Specify the name that you want to use for the file being uploaded at the target endpoint. You can retain the original file name by leaving this property blank. This property is expression-enabled. For more information on the expression language, see Understanding Expressions in SnapLogic and Using Expressions. For information on Pipeline Parameters, see Pipeline Properties. |
Upload transfer request type DefaultValue: Chunked transfer encoding | Dropdown list | The type of encoding that you want to use to safely transfer the entity to the user. The available options are:
If Chunked transfer encoding is selected, the header "Transfer-Encoding:chunked" will be added to the POST request, and the Snap uploads the given file in chunked transfer encoding. If Calculate content length is selected, the file size will be calculated and passed with header "Content-Length" in the POST request. Chunked transfer encoding can be used if the size of the given file cannot be calculated. |
Upload body type DefaultValue: Multipart from-data | Dropdown list | Select the content-type processing for the entity body from the options available:
|
Single file Upload: Multipart Content-Type DefaultValue: application/octet-stream | String/Suggestion | Select the content type headers for the data in the body of the multipart HTTP request. This is a suggestible field that shows the following suggestions:
This property is expression-enabled. For more information on the expression language, see Understanding Expressions in SnapLogic and Using Expressions. For information on Pipeline Parameters, see Pipeline Properties. |
Form Upload | Use this field set to configure the fields required to upload multiple files and text. Learn more about Multipart Upload. This field set contains the following fields:
| |
Multipart Type Default Value: FILE | Dropdown list | Choose the type of multipart upload that you want to initiate. The available options are:
|
Multipart Key DefaultValue: file Example: file, initial_comments, channels | String/Expression | Specify the key required for the multi-part to upload a file or text as required. HTTP POST uses multi-part entity to achieve the form upload. The form data of its multi-part entity contains key-value pairs. Multipart Key can be anything and it depends on the service endpoint. This property is expression-enabled. For more information on the expression language, see Understanding Expressions in SnapLogic and Using Expressions. For information on Pipeline Parameters, see Pipeline Properties. |
Multipart Value Default Value: N/A Example:
| String/Expression | Specify the the file or text to be uploaded. If Multipart Type is FILE, the following are applicable:
If Multipart Type is a TEXT, then
For Text part upload using Form Upload, the Http Entity and Filename to be used are ignored. |
HTTP Entity DefaultValue: N/A | String/Expression | Specify the HTTP entity of the file that you want to upload. |
Filename to be used DefaultValue: N/A | String/Expression | Specify the name that you want to use for the file being uploaded at the target endpoint. You can retain the original file name by leaving this property blank. This property is expression-enabled. For more information on the expression language, see Understanding Expressions in SnapLogic and Using Expressions. For information on Pipeline Parameters, see Pipeline Properties. |
Multipart Content-Type DefaultValue: N/A | String/Suggestion | Select the content type headers for the data in the body of the multipart HTTP request. The available options are:
If the Multipart Type is TEXT, it is generally not required to specify any value in this field. When you do not specify any value, the API uses the default value
|
Trust all certificates DefaultValue: Deselected | N/A | Select this checkbox to trust all certificates, such as self-signed certificates. |
Follow redirects DefaultValue: Selected | N/A | Select this checkbox to enable the Snap to follow redirects.
|
Query parameters | Use this field set to add query parameters to your request. This field set comprises the following fields:
| |
Query parameter DefaultValue: N/A | N/A | Specify the name (or key) of the query parameter. |
Query parameter value DefaultValue: N/A | N/A | Specify the value associated with the query parameter. |
HTTP Header | Use this field set to create the HTTP header key-value pairs required for defining the headers for different types of input (JSON, PDF, DOCX, and so on). If you want to specify only content-type headers, you can configure the Multipart Content-Type property instead. This field set comprises the following fields:
Configuring HTTP headers helps avoid problems in reading or opening files uploaded using the REST Post Snap. Refer to the Troubleshooting section, below, for more information. | |
Key Default Value: N/A | String/Expression | Specify the name of the HTTP header. |
Value DefaultValue: N/A | String/Expression | Specify the value of the HTTP header. |
Response entity type DefaultValue: DEFAULT | Dropdown list | Select one of the following response entity types you want the Snap to display in the output document.:
|
Cookie Policy Default Value:Ignore Cookies | Dropdown list | Select a Cookie Policy from the following options:
When using a cookie policy, you must select Show All Headers checkbox to view the parsed cookies from the cookie policy specification. |
Read timeout DefaultValue: 900 | Integer | Specify the number of seconds for which the Snap waits before aborting the request due to a failure to read from the target service.
|
Connection timeout DefaultValue: 30 | Integer | Specify the number of seconds for which the Snap waits before aborting the request due to a failure to establish a connection to the target endpoint or service. |
Maximum request attempts
| Integer | Specify the maximum number of attempts that the Snap must make to receive a response. If the attempts do not result in a response, the Snap terminates the request. |
Retry request interval
| Integer | Select one of the following response entity types you want the Snap to display in the output document.:
|
Retry Policy
| Dropdown list | Select how you want to handle connection and error responses from the following options:
|
Normalize URL | Checkbox | Select this checkbox to normalize the Service URL. This enables the Snap to convert double slashes (//) in the URL path to single slash (/). Deselecting this check box reverts the Snap to 4.19 Snaplex behavior, wherein the URL paths were not normalized by default. In the 4.20 Release, due to the HTTP client upgrade the URL paths were normalized by default. Hence, there was a change in behavior in handling the URL paths in 4.20 release when compared to 4.19. This change in behavior should not impact the existing Pipelines, because most of the websites map URL paths with double or single slashes to the same endpoint. For example, https://snaplogic.com/company/diversity and https://snaplogic.com//company//diversity direct to the same endpoint. Therefore, we recommend you to select the Normalize URL checkbox. However, an exception to this is when you use non-standard URLs that differentiate the URL paths containing double slashes from those with single slashes and map them to different endpoints, in which case you must deselect Normalize URL check box. Default Value: Selected |
Snap Execution
| Dropdown list | Select one of the three modes in which the Snap executes. Available options are:
|
Troubleshooting
Error | Reason | Resolution |
---|---|---|
Failed to execute HTTP request | The Service URL must have a protocol, such as http://, https://. | Please check the Snap properties. Specifically, check your entry in the Service URL field. |
<Service_URL>: Name or service not known. This basically means that the service URL you entered is not accessible. | ||
Failure: Validation errors: property_map.settings.serviceUrl.value: Could not compile expression: <Service_URL> | The snap settings are not correct. Encountered extraneous input ':' at line 1:5; expecting={<EOF>, '||', '&&', '^', '==', '!=', '>', '<', '>=', '<=', '+', '-', '*', '/', '%', '?', 'instanceof', 'in', 'matches', '[', '(', '.', PropertyRef}. This means that you have turned expressions on () while entering string value into the Service URL field. | Please fix the snap configuration and try the execution again. Please check expression syntax. Specifically, ensure that your service URL is a proper expression; or turn off the expression control (). For more information on the expression language, see Understanding Expressions in SnapLogic and Using Expressions. |
HTTP entity: <string_in_HTTP entity field> is undefined. Perhaps you meant: <List of variables received from the upstream Snap>. | Either there is an error in the value in the HTTP entity field, or you have used string input while having expressions enabled. | Check the spelling of the variable. Also, check whether your HTTP entity entry requires expressions. Update Snap settings as appropriate. |
REST API service endpoint returned error result: status code = 400 | Reason phrase = BAD REQUEST, refer to the error_entity field in the error view document for more details. You typically see this message when:
| Please check the values of Snap properties. Specifically:
|
File not found: <File URL> | File not found on <server URL> at <complete address of file to be uploaded> | Please address the reported issue. Check the location of the file to be uploaded. |
Single file upload: <Name of field>: <name of file> is undefined. Perhaps you meant: <options based on your input> | null | Check the spelling of the variable. Specifically, check whether the expressions toggle is turned on even though it is not required. |
REST API service endpoint returned error result: status code = 409 | CONFLICT, refer to the error_entity field in the error view document for more details. This happens when you already have the resource that you want to create in the target endpoint. | Please check the values of Snap properties. |
URL Parse Exception - 403 | The Service URL path might be containing any of the following special characters: !, =, %, #, $, ^&()_¢äâêîôûñç¡¿ÉÙËǨ°¸ðø©¢¾A+²½µ®§÷¶þ | To escape the special characters, use the global function encodeURIComponent on any variables that might contain special characters so that they are encoded properly. |
Too many Requests - 429 | There are too many requests to REST endpoint. | Wait for the retry to succeed. Rest related Snaps extract the response header and automatically retry when they encounter status 429. By default, the retry interval (Retry-After) is specified in the HTTP response header. If no value is available for Retry-After, then the Snap’s Retry Interval value is used. |
Examples
Creating a Jira Issue Using REST Post
This example Pipeline demonstrates how to create a Jira issue using the REST Post Snap.
Initially, we configure the JSON Generator Snap to pass the input. The following JSON data is the input document to the Snap:
The REST Post Snap in this example Pipeline creates a JIRA issue.
Reading a MySQL Table and Writing its Contents to a File Using REST Post
In this example, we use the REST Post Snap to read a table in MySQL and write the contents to a file. It is designed to run against the MySQL sample database sakila, but can be easily adapted to work against any database. This example consists of two Pipelines available in the Download section below:
- REST_MySql_to_file_1_of_2
- REST_MySql_to_file_2_of_2
To run the demo:
- Download both Pipelines, decompress them, and upload them both into one project in SnapLogic.
- Change the MySQL user account in Pipeline 2.
- Create a task for Pipeline 2.
- Paste the task into the JSON document Snaplex attribute.
- Run Pipeline 1. It will create a file in the local project.
This example illustrates the following topics:
- How to use a REST Post Snap to invoke a "remote service"
- How to pass document parameters in a REST Post Snap
- How to convert a pipeline parameter to a document parameter for use in a MySQL where clause
- How to convert a pipeline parameter from a string to a integer
- How to use a function to populate a column in a database with the current datetime
- How to convert a JSON document to a flat csv file.
Uploading Multiple Files Using the REST Post Snap
This example demonstrates how we can upload multiple files using the REST Post Snap.
Add a REST Post Snap to your pipeline with settings configured as shown below:
To upload multiple files using the REST Post Snap, you need to specify at least the following settings:
- Service URL: This is the service endpoint URL of the REST API associated with your account.
- Upload File(s)
- Upload File Key: Enter file here to specify that you want to upload a file. For uploading messages, you could use the key seed.
- Upload file: Enter here the location and name of the file you want to upload. In this example, we have uploaded two files, test_data.csv and Dynamics_365 For Sales Read.json.
- Filename to be used: Enter here the new name of the file. This is the name that will be given to the new file created in the destination directory. In this example, we have named our new files test_data.csv and sales_read.json, respectively.
- Multipart Content-Type: Enter here the type of the data you want to create. In our example, the first file is text/csv, and the second file is application/json.
- Click the + button in the HTTP Header fieldset. This adds a row of fields, which you can use to add authorization information required for your request. You can also provide Basic Auth account details instead of using these fields. In this example, we have used HTTP headers.
- Key: Enter Authorization here. This tells the Snap that the string in the Value field is to be used for authorizing the transaction.
- Value: Enter the authorization string provided for your account.
- Select the Execute during preview check box to instruct the Snap to run the pipeline during preview. For a successful execution, the following success message appears:
Downloads
Important steps to successfully reuse Pipelines
- Download and import the pipeline into the SnapLogic application.
- Configure Snap accounts as applicable.
- Provide pipeline parameters as applicable.
Snap Pack History
Have feedback? Email documentation@snaplogic.com | Ask a question in the SnapLogic Community
© 2017-2024 SnapLogic, Inc.