Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

You can use the REST Patch Snap to execute an HTTP Patch method on a REST API service endpoint to replace business object resources. If the given resource does not exist, the Snap creates the resource. 

Prerequisites

None.

Supported Features

...

Field NameField TypeDescription
Label*String

Insert excerpt
File Writer
File Writer
nopaneltrue

Default ValueREST Patch
ExampleREST Patch

Service URL*

URL

Specify the service endpoint URL of REST API. You can provide the URL in one of the following ways:

  • As a JavaScript expression in expression language.

For example: http://coresnapsqa-v4.s3.us-east-2.amazonaws.com/S3Account/'+encodeURIComponent("Special_char_owner_!3)12.json")

  • As a plain string that you should enclose in double quotes ("").

For example: "https://www.example.com/slm/webservice/v2.0/defect/%s".replace("%s", $.widg et.id)

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:
Previous URI: https://jsmith-bucket.nia3.snaplogic.net.s3.us-west-1.amazonaws.com/HttpClientTest/test1

New URI with CNAME: https://jsmith-sltest.nia3.snaplogic.net/HttpClientTest/test1

Here, the bucket name is jsmith-bucket.nia3.snaplogic.net

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:

Info

The Service URL for the REST snap has to be valid. If the Service URL contains any special characters, such as !, =, %21, $, and ^, the Snap throws an exception error. You can escape the special characters (using expression language) using one of the following methods:

We recommend you use the former (encodeURIComponent) method to escape the special characters.


Default Value: N/A
Examplehttps://elastic.snaplogic.com/api/1/rest/public/runtime/snaplogic?start=1430377200000&end=1430420399000

HTTP EntityString

Multiexcerpt include macro
nameHTTP_entity
pageREST Post

Default Value$  (the HTTP entity data is at the root of the input map data)
Example$.entity  (if the HTTP entity data is the value of the "entity" key at the root of the input map data)

Batch sizeInteger


Multiexcerpt macro
nameBatch_Size

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.


Default Value: N/A
Example20

Show all headersCheckbox

Multiexcerpt include macro
nameShow_All_Headers
pageREST Delete

Default ValueDeselected

Form Upload

Multiexcerpt include macro
nameUpload_Files
pageREST Post

Default Value: N/A
ExampleREST Patch

Multipart Type

Dropdown list

Choose the type of multipart upload that you want to initiate. The available options are:

  • FILE: Use this option to upload a file.

  • TEXT: Use this option to upload text.

Multipart Key

String
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.

Default Valuefile
Examplefile, initial_comment, channels

Multipart ValueString/Expression

Specify the the file or text to be uploaded.

If Multipart Type is FILE, the following are applicable:

  • The file protocols supported for file values are 'sldb:///' and 'file:///'.

  • If the file path is a relative path, it is considered as an SLDB file.

  • If this field is not empty, HTTP Entity and Batch size fields are ignored and the Multipart Key field is required.

  • If the value is an expression, the input document is used to evaluate the expression. Each input document invokes one file upload.

  • This field does not support wildcard or glob patterns.

If Multipart Type is a TEXT, then

  • The value should be expression enabled and enclosed in double quotes.

Note

For Text part upload using the Form Upload, the Http Entity and Filename to be used fields are ignored.

Default Value: N/A
Example

Filename to be used

String

Enter the name that you want to use for the file at the endpoint.

Multiexcerpt include macro
nameExpEnabled
pageREST Put

Default Value: N/A
Exampleuploaded_file.csv

Multipart Content- Type

String

Select the content type headers for the data in the body of the multipart HTTP request. This enables the Snap how to read or interpret the input file .

The available options are:

  • application/octet-stream

  • text/plain

  • application/json

  • text/csv

  • text/html

  • image/jpeg

Note

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 text/plain; charset=UTF-8.


Info
  • To specify other HTTP headers configure the headers in the HTTP header field set.

  • If you configure both Multipart Content-Type and HTTP header fields, the value in the Multipart Content-type gets precedence. 

Default Value: N/A

Exampletext/csv

Trust all certificatesCheckbox

Multiexcerpt include macro
nameTrust_All_Certificates
pageREST Post

Default ValueDeselected

Follow redirectsCheckbox

Multiexcerpt include macro
nameFollow_Redirects
pageREST Post

Default ValueSelected

Query parameters
Multiexcerpt include macro
nameQuery_Parameters_REST
pageREST Post

Query parameter

String

Enter the name of the query parameter.

Default Value: N/A
Exampleid

Query parameter value

String

Enter the value that you want to assign to the parameter.

Default Value: N/A
Example$widget.id

HTTP Header

Multiexcerpt include macro
nameHTTP_Header
pageREST Post

Note

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

String

Enter the name of the HTTP header.

Multiexcerpt include macro
nameExpEnabled
pageREST Put

Default Value: N/A
Examplecontent-type

Value

String

Enter the value that you want to assign to the HTTP header.

Multiexcerpt include macro
nameExpEnabled
pageREST Put

Default Value: N/A
Exampleapplication/json

Response entity typeString

Select one of the following response entity types you want the Snap to display in the output document.:

  • DEFAULT - This option enables the Snap to process the response automatically. The response entity is processed automatically based on the Content-Type header in the response. If the content provided does not parse with the provided Content-Type, the snap will result in an error.
    The following two scenarios describe the Snap’s behavior when using the Process Array checkbox::

    • When you select the Process Array checkbox, the Snap parses JSON or XML and produces a stream of documents at the output view.

    • When you deselect the Process Array checkbox, the Snaps sends the data as it is at the output view.   

  • TEXT - Select this option to enable, the Snap to produce an entity of string type.

  • BINARY - Select this option to enable the Snap to produce an entity of byte array type.


If you select TEXT or BINARY, the Snap does not parse the entity content. If you select DEFAULT, the Snap produces the expected result in most cases, but if it fails to process as expected, you can set the Response entity type to TEXT or BINARY.

Default ValueDEFAULT
Example: N/A

Cookie PolicyDropdown list

Select a Cookie Policy from the following options:

  • Browser Compatibility: This policy is compatible with different servers even if they are not completely standards-compliant. If you are facing issues while parsing cookies, you should try using this policy.

  • Ignore Cookies: This cookie policy ignores all cookies. You should use this policy to prevent HTTP Client from accepting and sending cookies.

  • RFC Strict: This policy uses the set-cookie header

  • RFC Lax: The policy uses set-cookie and set-cookie2 for parsing.

Info

When using a cookie policy, you must select Show All Headers checkbox to view the parsed cookies from the cookie policy specification.

Default Value: Ignore Cookies

Example: RFC Strict

Read timeoutInteger

Multiexcerpt include macro
nameRead_Timeout
pageREST Post

Default Value900
Example1200

Connection timeoutInteger

Multiexcerpt include macro
nameConnection_Timeout
pageREST Post

Default Value30
Example60

Maximum request attempts Integer

Multiexcerpt include macro
nameMaximum_Request_Attempts
pageREST Post

Default Value5
Example3

Retry request intervalInteger

Specify the time in seconds to wait before retrying the request.

Default Value3
Example10

Retry PolicyString

Multiexcerpt include macro
nameRetry_Policy
pageREST Post

Default ValueConnection errors
ExampleAll errors

Normalize URLCheckbox

Select this checkbox to normalize the Service URL. This enables the Snap to convert double slashes (//) in the URL path to a single slash (/).
For example,
https://example.com/path//to//file is converted to https://example.com/path/to/file.

Info

Deselecting this checkbox reverts the Snap to 4.19 Snaplex behavior, where 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 both URLs are directed to the same endpoint. Hence, 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 checkbox. 
For example, http://host/pages/foo.html and http://host/pages//foo.html point to different URIs, and servers assign different meanings to them.


Default Value: Selected

Snap ExecutionCheckbox

Multiexcerpt include macro
nameSnap_Execution_Introduced
pageAnaplan Read

Default ValueValidate & Execute
ExampleValidate & Execute

...

ErrorReasonResolution
Failed to execute HTTP request

Service URL must have a protocol, e.g. http://, https://

You get this error when your service URL does not start with HTTP or HTTPS.

Check the Snap properties. Specifically, check whether your service URL starts with HTTP or HTTPS.
status code = 404

Phrase = NOT FOUND, refer to the error_entity field in the error view document for more details

This typically means that your service URL does not point to the endpoint that it should.

Check the values of Snap properties. Specifically, check your service URL.
status code = 406

NOT ACCEPTABLE.

This means that the endpoint is not receiving any details coming in from upstream Snaps.

Ensure that you have valid references in the HTTP entity field.
status code = 400

BAD REQUEST

You see this error when the data in the HTTP entity field is not a reference.

HTTP entity: $<variable1> is undefined. Perhaps you meant: $<expected_variable>

'<variable1>' was not found while evaluating the sub-expression '$<variable1>'

This means that the referenced variable does not exist upstream.

Check the spelling of the property or, if the property is optional, use the get() method (e.g. $.get('<variable1>'))
status code = 404

NOT FOUND, refer to the error_entity field in the error view document for more details

This means that SnapLogic could not find the data on which you want the patch call to execute.

Check the values of Snap properties.
URL Parse Exception - 403The 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 - 429There 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.

...

  1. Click the JSON Generator Snap and configure it to supply the email ID that you want to remove from a SnapLogic Org, say DocTest. 


  2. Configure the REST Patch Snap to send the user details retrieved from the JSON Generator Snap to the service URL documented in User and Group APIs. You must also specify in the HTTP Headers section that the content type used in this REST call is "application/json".


  3. In this Snap:
  4. When you run the Pipeline, the user listed in the JSON Generator Snap is removed from the group you specified in the service URL.
    Image Modified

Downloads

Multiexcerpt include macro
namedownload_instructions
pageOpenAPI

...

Insert excerpt
REST Snap Pack
REST Snap Pack
nopaneltrue

...

See Also