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.
N/A
Works in Ultra Pipelines if batching is disabled and timeout is specified.
This Snap uses account references created on the Accounts page of SnapLogic Manager to handle access to this endpoint. See Configuring REST Accounts 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" |
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.
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 |
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
This property provides you with different retry options for connection and error responses. The valid options are:
- Connection errors: Occur when a client fails to establish a secure connection to the server.
- Connection and auth errors (401/403): Occurs when either the user authorization fails or access to the page/resource is forbidden.
- Connection and client errors (4xx): Occurs when the request for the resource contains bad syntax, or when the resource is not found (404).
- Connection and server errors (5xx): Occurs when the server is unable to complete a request.
- All errors: Applies to all of the above-listed errors.
Default value: Connection errors
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
In this article
Table of Contents | ||||
---|---|---|---|---|
|
Overview
Use the REST Delete Snap to delete business object resources using a REST API call.
Prerequisites
- None.
Supported Features
- Works in Ultra Pipelines if a timeout is specified and batching is disabled.
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
Parameter Name | Data Type | Description | Default Value | Example | |||
---|---|---|---|---|---|---|---|
Label | String | The 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. | N/A | Delete Identified Objects | |||
Service URL | String | The service endpoint URL of the REST API. The Snap looks for the value at the JSON path provided in the input document ($.widget.id in the sample service URL provided on the right) and replaces "%s" in the Service URL with this value. | N/A | "https://www.example.com/slm/webservice/v2.0/defect/%s".replace("%s", $.widget.id) | |||
HTTP entity | String | The JSON path to the HTTP entity data in the input map. You can leave this property empty if there is no entity data to send to the service URL. | $ (the HTTP entity data is at the root of the input map.) | $response.entity.id (if the HTTP entity that you want to delete is the value of the | |||
Batch size | Integer | The number of delete requests that you want to execute per batch. The Snap accumulates incoming documents in a list up to the defined batch size before the entire batch is submitted to the endpoint. Make sure to only set this if your REST endpoint expects a list. | N/A | 50 | |||
Show all headers | Check box/ Boolean | The REST endpoint may return a response with multiple headers with the same header name.
| Deselected | N/A | |||
Trust all certificates | Check box | Select this check box to instruct the Snap to trust all certificates, such as self-signed certificates. | Deselected | N/A | |||
Follow redirects | Check box | Select this check box to instruct the Snap to follow HTTP redirects. For example, when this check box is selected and the endpoint sends a redirect response, such as a 301 or 302 response code, the Snap makes another request to the URL specified in the Location header of the API response. In the same scenario, when this check box is not selected, the Snap does not make the second request, and the redirect response code will appear in the output view. | Selected | N/A | |||
Fieldset | Query parameters | Fieldset | Enables you to define query parameters. This is optional and can also be defined directly in the service URL. | N/A | N/A | ||
Query parameter | String | The name that you want to use for the query parameter. | N/A | oauth2_access_token | |||
Query parameter value | String | The value that you want to assign to the query parameter. | N/A | $account.access_token | |||
HTTP header | Fieldset | Enables you to define the HTTP headers that you want to use with your query. <Is the following true?> This is optional and can also be defined directly in the service URL. | N/A | N/A | |||
Key | String | The name that you want to use for the HTTP header. | N/A | User-Agent | |||
Value | String | The value that you want to assign to the HTTP header. | N/A | SnapLogic | |||
Response entity type | String | The response entity type in the output document. The available options are:
| DEFAULT | TEXT | |||
Read timeout | Integer | The number of seconds for which you want the Snap to wait before aborting the request.
| 900 | 1500 | |||
Connection timeout | Integer | The number of seconds for which the Snap waits before aborting the request due to a failure in establishing a connection to the target service. | 30 | 45 | |||
Maximum request attempts | Integer | The maximum number of attempts that the Snap makes to receive a response. The request is terminated once the maximum request attempt count is reached. | 5 | 3 | |||
Retry request interval | Integer | The interval (in seconds) between two successive requests. | 3 | 10 | |||
Snap Execution | String | Specifies the execution type:
| Validate and Execute | Execute only |
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. |
Examples
Creating and Deleting an Account in Salesforce Using REST Snaps
In this example, you create an account in Salesforce and delete it using REST Snaps.
Note |
---|
To use this example, you need at least an account in the free version of Salesforce. To create a Salesforce account, see Salesforce Developers. |
- You design the Pipeline as follows:
- In the JSON Generator Snap, you enter a name for the account that you want to create. In this example, you create an account called Test Account.
- You configure the REST Post Snap to create an account in your Salesforce instance using the account-name string of your choice. To do so:
- You use the URL provided by Salesforce for managing the accounts available in your instance.
- You use '$' in the HTTP entity field to specify that you want to use the string coming from the Snap upstream.
- You add an HTTP header to the Snap, instructing Salesforce to read the document coming in as a JSON file.
- You click the Account tab and select the account that you want to use with the Snap.
You save your changes and close the Snap. When you validate the Snap, it creates an account in your Salesforce instance and displays the following output:
Theid
field lists out the unique identifier of the new account created by the Snap. - You now want to delete the account that you just created. To do so, you need to isolate the account ID from the REST Post Snap's output. You use a Mapper for this task.
Upon validation, the Mapper Snap offers the following output: - You now use the REST Delete Snap to delete the newly-created account:
When the Snap is executed, the account is deleted.
Downloads
Somewhere here?
Attachments | ||
---|---|---|
|
REST Delete: Frequently Asked Questions
Multiexcerpt include macro | ||||
---|---|---|---|---|
|
Insert excerpt | ||||||
---|---|---|---|---|---|---|
|