On this Page
Table of Contents | ||||
---|---|---|---|---|
|
Snap type:
Write
Description:
This Snap provides the functionality to execute the HTTP Delete method to a REST API service endpoint to delete business object resources.
None
- Ultra pipelines: Works in Ultra Pipelines if batching is disabled and timeout is specified.
- Spark mode: Not supported in Spark mode.
This Snap uses account references created on the Accounts page of SnapLogic Manager to handle access to this endpoint. See REST Account for information on setting up this type of account.
The Snap supports an optional REST Basic Auth Account or REST Oauth2 Account. In the case of using an REST OAuth2 Account instance, one can access the token of the account through account.access_token explicitly. The property then needs to be marked as an expression. An example URL for LinkedIn is: "https://api.linkedin.com/v1/people/~?oauth2_access_token=" + account.access_token
Input | This Snap has at most one document input view. Each document contains the ID of the object to be deleted at the REST API service endpoint. |
---|---|
Output | This Snap has at most one document output view. Each document contains response data from the REST API service endpoint. |
Error | This Snap has at most one document error view and produces zero or more documents in the view. Each document contains the input data which have caused failure and the response from the REST API service endpoint. |
Settings
Label
Service URL
Example:"https://www.example.com/slm/webservice/v2.0/defect/%s".replace("%s", $.widget.id)
The Snap will look for the value at the JSON path "$.widget.id" in the input data and replace "%s" in the Service URL with the value. You may connect a File Reader and JSON Parser Snaps in front of REST Delete Snap and prepare the following JSON file to File Reader Snap:
Code Block |
---|
[
{ "widget": { "id": "111", "name": "foo" } }
{ "widget": { "id": "555", "name": "bar" } }
]
"https://www.example.com/slm/webservice/v2.0/defect/555" |
Default value: [None]
HTTP entity
The JSON path to the HTTP entity data in the input Map data, or leave this property empty if there is no entity data to send to the service URL.
Example: $.entity (if the HTTP entity data is the value of the "entity" key at the root of the input Map data)
Default value: $ (the HTTP entity data is at the root of the input Map data)
Batch size
Defines the batch size of the 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 only set this if your REST endpoint expects a list.
Default value: None
Show all headers
REST endpoint may return HTTP response with multiple headers with same header name. If this property is not selected, only one response header will be shown in the output document. If selected, the response header values are a list of objects. If any of these objects is a string in format "key1=value1; key2=value2; ...", it is parsed into a map data.
Default value: Not selected
Trust all certificates
Required. Trust all certificates, such as self-signed certificates.
Default value: Not selected
Follow redirects
Required. When selected, HTTP redirects will be followed.
Example: When selected, if a redirect response (e.g. a 301 or 302 response code) is received, another request to the URL specified in the Location header will be automatically made.
When not selected, another request will not be made and the 301/302 response will show up in the output view.
Default value: Selected
Query parameters
Lets you define query parameters. This is optional and can either be defined directly in the service URL, as separate parameters or both.
Example:
Query parameter | Query parameter value |
oauth2_access_token | $account.access_token |
Example:
Key | Value |
Content-Type | application/json;charset=UTF-8 |
User-Agent | SnapLogic |
Default value: [None]
Response entity type
This property allows you to select the response entity type in the output document. The available options include:
- DEFAULT - If selected, the response entity is processed automatically. The Snaps attempts to convert the entity to a string or a byte array depending on the response headers.
- TEXT - If selected, the Snap produces an entity of string type.
- BINARY - If selected, the Snap produces an entity of byte array type.
Note |
---|
If TEXT or BINARY is selected, the Snap will not attempt to parse the entity content. If DEFAULT is selected, the Snap produces the expected result in most cases, but when failed to do so, users may set the Response entity type to TEXT or BINARY. |
Default value: DEFAULT
The time in seconds to wait before aborting the request due to a failure to read from the target service. This option lets you specify a timeout value in seconds after which the request gets aborted.
Default value: 900 seconds.
Note |
---|
|
The time in seconds to wait before aborting the request due to a failure to establish a connection to the target service.
Default value: 30
Maximum request attempts
Specifies the maximum number of attempts to be made to receive a response. The request is terminated if the attempts do not result in a response.
Example: 3
Default value: 5
Retry request interval
Specifies the interval (in seconds) between two successive requests. A retry happens only when the previous attempt resulted in an exception.
Example: 10
Default value: 3
Multiexcerpt include macro | ||||
---|---|---|---|---|
|
Multiexcerpt include macro | ||||
---|---|---|---|---|
|
Example
The REST Delete Snap in the above example pipeline deletes the JIRA issue created and updated in the preceding Snaps in the pipeline.
The following JSON data is the input document to the Snap:
Code Block | ||||
---|---|---|---|---|
| ||||
{
"headers": {
"strict-transport-security": "max-age=315360000;includeSubdomains",
"x-content-type-options": "nosniff",
"vary": "Accept-Encoding",
"x-seraph-loginreason": "OK",
"connection": "keep-alive",
"set-cookie": "atlassian.xsrf.token=BWCK-SR48-JN93-ESFC|1640969cad157d3859fba4971c79e09b38f27b21|lin; Path=/; Secure",
"transfer-encoding": "chunked",
"content-type": "application/json;charset=UTF-8",
"date": "Thu, 15 Jan 2015 18:49:02 GMT",
"x-arequestid": "649x1344x1",
"x-asen": "SEN-2848532",
"x-asessionid": "1nuotcy",
"cache-control": "no-cache, no-store, no-transform",
"x-ausername": "admin",
"server": "nginx"
},
"statusLine": {
"reasonPhrase": "OK",
"statusCode": 200,
"protoVersion": "HTTP/1.1"
},
"entity": {
"expand": "renderedFields,names,schema,transitions,operations,editmeta,changelog",
"id": "17392",
"self": "https://Snaplogic.atlassian.net/rest/api/2/issue/17392",
"key": "JIRASNAP-4312",
"fields": {
"issuetype": {
"self": "https://Snaplogic.atlassian.net/rest/api/2/issuetype/2",
"id": "2",
"description": "A new feature of the product, which has yet to be developed.",
"iconUrl": "https://Snaplogic.atlassian.net/images/icons/issuetypes/newfeature.png",
"name": "New Feature",
"subtask": false
},
"timespent": null,
"project": {
"self": "https://Snaplogic.atlassian.net/rest/api/2/project/10000",
"id": "10000",
"key": "JIRASNAP",
"name": "Jira Snap for SnapLogic 4.0",
"avatarUrls": {
"48x48": "https://Snaplogic.atlassian.net/secure/projectavatar?pid=10000&avatarId=10011",
"24x24": "https://Snaplogic.atlassian.net/secure/projectavatar?size=small&pid=10000&avatarId=10011",
"16x16": "https://Snaplogic.atlassian.net/secure/projectavatar?size=xsmall&pid=10000&avatarId=10011",
"32x32": "https://Snaplogic.atlassian.net/secure/projectavatar?size=medium&pid=10000&avatarId=10011"
}
},
"fixVersions": [],
"aggregatetimespent": null,
"resolution": null,
"customfield_10500": null,
"customfield_10501": null,
"resolutiondate": null,
"workratio": -1,
"lastViewed": null,
"watches": {
"self": "https://Snaplogic.atlassian.net/rest/api/2/issue/JIRASNAP-4312/watchers",
"watchCount": 1,
"isWatching": true
},
"created": "2015-01-15T10:48:57.605-0800",
"customfield_10020": null,
"customfield_10021": "Not Started",
"customfield_10100": null,
"priority": {
"self": "https://Snaplogic.atlassian.net/rest/api/2/priority/3",
"iconUrl": "https://Snaplogic.atlassian.net/images/icons/priorities/major.png",
"name": "Major",
"id": "3"
},
"customfield_10101": null,
"customfield_10300": "0|1009kw:",
"labels": [],
"customfield_10016": null,
"customfield_10017": null,
"customfield_10018": null,
"customfield_10019": null,
"timeestimate": null,
"aggregatetimeoriginalestimate": null,
"versions": [],
"issuelinks": [],
"assignee": null,
"updated": "2015-01-15T10:49:00.553-0800",
"status": {
"self": "https://Snaplogic.atlassian.net/rest/api/2/status/10001",
"description": "",
"iconUrl": "https://Snaplogic.atlassian.net/images/icons/statuses/open.png",
"name": "To Do",
"id": "10001",
"statusCategory": {
"self": "https://Snaplogic.atlassian.net/rest/api/2/statuscategory/2",
"id": 2,
"key": "new",
"colorName": "blue-gray",
"name": "To Do"
}
},
"components": [],
"timeoriginalestimate": null,
"description": "Create, update and delete JIRA issues using the JIRA Create, Put and Delete Snaps",
"customfield_10012": null,
"customfield_10013": null,
"customfield_10014": null,
"customfield_10015": null,
"timetracking": {},
"customfield_10007": null,
"customfield_10008": null,
"attachment": [],
"aggregatetimeestimate": null,
"summary": "Test JIRA Snaps (create/update/delete a Jira issue)",
"creator": {
"self": "https://Snaplogic.atlassian.net/rest/api/2/user?username=admin",
"name": "admin",
"key": "admin",
"emailAddress": "pnarayan@Snaplogic.com",
"avatarUrls": {
"48x48": "https://Snaplogic.atlassian.net/secure/useravatar?avatarId=10122",
"24x24": "https://Snaplogic.atlassian.net/secure/useravatar?size=small&avatarId=10122",
"16x16": "https://Snaplogic.atlassian.net/secure/useravatar?size=xsmall&avatarId=10122",
"32x32": "https://Snaplogic.atlassian.net/secure/useravatar?size=medium&avatarId=10122"
},
"displayName": "Snap admin [Administrator]",
"active": true,
"timeZone": "America/Los_Angeles"
},
"subtasks": [],
"reporter": {
"self": "https://Snaplogic.atlassian.net/rest/api/2/user?username=admin",
"name": "admin",
"key": "admin",
"emailAddress": "pnarayan@Snaplogic.com",
"avatarUrls": {
"48x48": "https://Snaplogic.atlassian.net/secure/useravatar?avatarId=10122",
"24x24": "https://Snaplogic.atlassian.net/secure/useravatar?size=small&avatarId=10122",
"16x16": "https://Snaplogic.atlassian.net/secure/useravatar?size=xsmall&avatarId=10122",
"32x32": "https://Snaplogic.atlassian.net/secure/useravatar?size=medium&avatarId=10122"
},
"displayName": "Snap admin [Administrator]",
"active": true,
"timeZone": "America/Los_Angeles"
},
"customfield_10000": null,
"aggregateprogress": {
"progress": 0,
"total": 0
},
"customfield_10001": null,
"customfield_10002": null,
"customfield_10200": null,
"customfield_10003": null,
"customfield_10400": null,
"environment": null,
"duedate": null,
"progress": {
"progress": 0,
"total": 0
},
"comment": {
"startAt": 0,
"maxResults": 1,
"total": 1,
"comments": [
{
"self": "https://Snaplogic.atlassian.net/rest/api/2/issue/17392/comment/15458",
"id": "15458",
"author": {
"self": "https://Snaplogic.atlassian.net/rest/api/2/user?username=admin",
"name": "admin",
"key": "admin",
"emailAddress": "pnarayan@Snaplogic.com",
"avatarUrls": {
"48x48": "https://Snaplogic.atlassian.net/secure/useravatar?avatarId=10122",
"24x24": "https://Snaplogic.atlassian.net/secure/useravatar?size=small&avatarId=10122",
"16x16": "https://Snaplogic.atlassian.net/secure/useravatar?size=xsmall&avatarId=10122",
"32x32": "https://Snaplogic.atlassian.net/secure/useravatar?size=medium&avatarId=10122"
},
"displayName": "Snap admin [Administrator]",
"active": true,
"timeZone": "America/Los_Angeles"
},
"body": "Bug has been fixed.",
"updateAuthor": {
"self": "https://Snaplogic.atlassian.net/rest/api/2/user?username=admin",
"name": "admin",
"key": "admin",
"emailAddress": "pnarayan@Snaplogic.com",
"avatarUrls": {
"48x48": "https://Snaplogic.atlassian.net/secure/useravatar?avatarId=10122",
"24x24": "https://Snaplogic.atlassian.net/secure/useravatar?size=small&avatarId=10122",
"16x16": "https://Snaplogic.atlassian.net/secure/useravatar?size=xsmall&avatarId=10122",
"32x32": "https://Snaplogic.atlassian.net/secure/useravatar?size=medium&avatarId=10122"
},
"displayName": "Snap admin [Administrator]",
"active": true,
"timeZone": "America/Los_Angeles"
},
"created": "2015-01-15T10:49:00.550-0800",
"updated": "2015-01-15T10:49:00.550-0800"
}
]
},
"votes": {
"self": "https://Snaplogic.atlassian.net/rest/api/2/issue/JIRASNAP-4312/votes",
"votes": 0,
"hasVoted": false
},
"worklog": {
"startAt": 0,
"maxResults": 20,
"total": 0,
"worklogs": []
}
}
},
"original": {
"response": {
"headers": {
"strict-transport-security": "max-age=315360000;includeSubdomains",
"x-content-type-options": "nosniff",
"x-seraph-loginreason": "OK",
"connection": "keep-alive",
"set-cookie": "atlassian.xsrf.token=BWCK-SR48-JN93-ESFC|c127207e6dcb6f113eb45ec4d1dc463829af8dc2|lin; Path=/; Secure",
"content-type": "application/json;charset=UTF-8",
"date": "Thu, 15 Jan 2015 18:49:00 GMT",
"x-arequestid": "648x1343x1",
"x-asen": "SEN-2848532",
"content-length": "0",
"x-asessionid": "1g8lldp",
"cache-control": "no-cache, no-store, no-transform",
"x-ausername": "admin",
"server": "nginx"
},
"statusLine": {
"reasonPhrase": "No Content",
"statusCode": 204,
"protoVersion": "HTTP/1.1"
},
"entity": null
},
"original": {
"id": "17392",
"update": {
"comment": [
{
"add": {
"body": "Bug has been fixed."
}
}
]
}
}
}
} |
The following JSON data is the output provided by the Snap:
{
"response": { "headers": { "strict-transport-security": "max-age=315360000;includeSubdomains", "x-content-type-options": "nosniff", "x-seraph-loginreason": "OK", "connection": "keep-alive", "set-cookie": "atlassian.xsrf.token=BWCK-SR48-JN93-ESFC|c127207e6dcb6f113eb45ec4d1dc463829af8dc2|lin; Path=/; Secure", "content-type": "application/json;charset=UTF-8", "date": "Thu, 15 Jan 2015 18:49:00 GMT", "x-arequestid": "648x1343x1", "x-asen": "SEN-2848532", "content-length": "0", "x-asessionid": "1g8lldp", "cache-control": "no-cache, no-store, no-transform", "x-ausername": "admin", "server": "nginx" }, "statusLine": { "reasonPhrase": "No Content", "statusCode": 204, "protoVersion": "HTTP/1.1" }, "entity": null },
"original": { "id": "17392", "update": { "comment": [ { "add": { "body": "Bug has been fixed." } } ] } } }
Pipeline Downloads
Attachments
Table of Contents | ||||
---|---|---|---|---|
|
Overview
Multiexcerpt include macro | ||||||||
---|---|---|---|---|---|---|---|---|
|
You can use the REST Delete Snap to delete business object resources using a REST API call.
Prerequisites
None.
Supported Features
Works in Ultra Tasks. We recommend that you set the batch size to 1.
Limitations and Known Issues
None.
Snap Input and Output
Input/Output | Type of View | Number of Views | Examples of Upstream and Downstream Snaps | Description |
---|---|---|---|---|
Input | Document |
|
| Each input document contains the ID of the object to be deleted at the REST API service endpoint. |
Output | Document |
|
| Each output document contains response data from the REST API service endpoint detailing the status of the request. |
Snap Settings
Field Name | Field Type | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
Label* | String |
Default Value: REST Delete | ||||||||
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:
Default Value: N/A | ||||||||
HTTP entity | String/Expression |
Default Value: N/A | ||||||||
Batch size | String |
Default Value: N/A | ||||||||
Show all headers | Checkbox |
Default Value: Deselected | ||||||||
Trust all certificates* | Checkbox |
Default Value: Deselected | ||||||||
Follow redirects* | Checkbox |
Default Value: Selected | ||||||||
Query parameters |
| |||||||||
Query parameter | String | Specify the name (or key) of the query parameter. Default Value: N/A | ||||||||
Query parameter value | String/Expression | Specify the value associated with the query parameter. Default Value: N/A | ||||||||
HTTP header |
| |||||||||
Key | String | Specify the name that you want to use for the HTTP header. Default Value: N/A | ||||||||
Value | String/Expression | Specify the value that you want to assign to the HTTP header. Default Value: N/A | ||||||||
Response entity type | String | Select one of the following response entity types you want the Snap to display in the output document.:
Default Value: DEFAULT | ||||||||
Cookie Policy | Dropdown list |
| ||||||||
Read timeout | Integer |
Default Value: 900 | ||||||||
Connection timeout | Integer |
Default Value: 30 | ||||||||
Maximum request attempts | Integer |
Default Value: 5 | ||||||||
Retry request interval | Integer | Specify the time in seconds to wait before retrying the request. Default Value: 3 | ||||||||
Normalize URL | Checkbox |
| ||||||||
Snap Execution | String |
Example: Validate and Execute |
Troubleshooting
Error | Reason | Resolution |
---|---|---|
Batch execution failed | The Pipeline ended before the batch could complete execution due to a connection error. | Verify that the Batch size field is configured to handle the inputs properly. If you are not sure when the input data is available, configure this field as zero to keep the connection always open. |
The provided URI is invalid | Illegal character in scheme name | Verify the URI and parameters that you provide are syntactically correct. |
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. |
Example
Creating and Deleting an Account in SnapLogic Using REST Snaps
Prerequisites:
- A valid account.
This example Pipeline demonstrates how to create an account in SnapLogic and delete it using REST Snaps.
Initially, we configure the JSON Generator Snap where we mention the project name - testDeleteProject111.
Then, we configure the REST Post Snap to create the project in SnapLogic using the account-name string of your choice. To do so:
- We use the SnapLogic URL for creating the project in your instance.
- We use '$projectName' in the HTTP entity field to indicate that we want to use the string coming from the upstream Snap.
We click the Account tab and select the account that we want to use with Snap.
When we validate the Snap, it creates a project in the SnapLogic instance. The Snap displays the following output:
The id field lists out the unique identifier of the new project created by Snap.
We now want to delete the project that you just created. To do so, we use a REST Delete for this task.
The project you created is deleted from the SnapLogic instance. Upon validation, the REST Delete Snap displays the following output:
Downloads
Multiexcerpt include macro | ||||
---|---|---|---|---|
|
Attachments | ||
---|---|---|
|
Insert excerpt | ||||||
---|---|---|---|---|---|---|
|