Versions Compared

Key

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

On this Page

Table of Contents
maxLevel2
excludeOlder Versions|Additional Resources|Related Links|Related Information

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.

Prerequisites:

N/A

Support and limitations:

Works in Ultra Pipelines if batching is disabled and timeout is specified.

Account: 

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

Views:
InputThis 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.
OutputThis Snap has at most one document output view. Each document contains response data from the REST API service endpoint.
ErrorThis 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

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

Service URL 

Required. The service endpoint URL of REST API.
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
HTTP headerHTTP header key-value pairs
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

Read timeout

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
  • In some cases, the request does not return, such as during network issues. For those a timeout can be configured to allow failing fast. 
  • Every Snap instance can have its own timeout settings.
  • The Snap will execute five retries within a couple of seconds back-off time before it fails. 
Connection timeout

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

Retry Policy

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
nameSnap Execution
pageSOAP Execute

Multiexcerpt include macro
nameExecution_Detail_Write
pageSOAP Execute

 Example

Image Removed

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
titleInput Data
collapsetrue
{
    "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

Attachmentspatterns.*slp

In this article

Table of Contents
maxLevel2
absoluteUrltrue

Overview

Use the REST Delete Snap to delete business object resources using a REST API call.

Image Added

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/OutputType of ViewNumber of ViewsExamples of Upstream and Downstream SnapsDescription
Input Document
  • Min: 0
  • Max: 1
  • REST Get
  • Mapper
  • Script
Each input document contains the ID of the object to be deleted at the REST API service endpoint.
OutputDocument
  • Min: 0
  • Max: 1
  • REST Post
  • JSON Formatter
  • Mapper

Each output document contains response data from the REST API service endpoint detailing the status of the request.

Snap Settings


Parameter NameData TypeDescriptionDefault ValueExample 

LabelStringThe 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/ADelete 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 entityStringThe 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 response.entity.id key in the input map.)


Batch sizeIntegerThe 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/A50

Show all headersCheck box/ Boolean

The REST endpoint may return a response with multiple headers with the same header name.

  • If this property is deselected, only one response header will be shown in the output document.
  • If selected, the response header displays all the response header values received as a list of objects.
Note

If any of these objects has a key-value format, it is parsed into the map data.


DeselectedN/A

Trust all certificatesCheck boxSelect this check box to instruct the Snap to trust all certificates, such as self-signed certificates.DeselectedN/A

Follow redirectsCheck 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.

SelectedN/A
FieldsetQuery parametersFieldsetEnables you to define query parameters. This is optional and can also be defined directly in the service URL.N/AN/A

Query parameter

StringThe name that you want to use for the query parameter.N/Aoauth2_access_token

Query parameter value

StringThe value that you want to assign to the query parameter.N/A$account.access_token

HTTP headerFieldsetEnables 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/AN/A

Key

StringThe name that you want to use for the HTTP header.N/A User-Agent

Value

StringThe value that you want to assign to the HTTP header.N/ASnapLogic

Response entity typeString

The response entity type in the output document. The available options are:

  • DEFAULT: Select this option to process the response entity automatically. The Snap attempts to convert the entity into a string or a byte array, depending on the contents of the response headers.
  • TEXT: Select this option to produce an entity of type String.
  • BINARY: Select this option to produce a byte array.


Note
If TEXT or BINARY is selected, the Snap will not attempt to parse the entity content. If DEFAULT is selected, the Snap parses the response received and produces the expected result in most cases. If it fails to do so, set the Response entity type to TEXT or BINARY as appropriate.


DEFAULTTEXT

Read timeoutInteger

The number of seconds for which you want the Snap to wait before aborting the request.

Note
  • Every Snap instance can have its own timeout settings.
  • The Snap executes five retries with a couple of seconds back-off time before it fails.


9001500

Connection timeoutInteger

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.

3045

Maximum request attemptsInteger

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.

53

Retry request intervalInteger

The interval (in seconds) between two successive requests.

310

Snap ExecutionString

Specifies the execution type:

  • Validate & Execute: Performs limited execution of the Snap (up to 50 records) during Pipeline validation; performs full execution of the Snap (unlimited records) during Pipeline execution.
  • Execute only: Performs full execution of the Snap during Pipeline execution; does not execute the Snap during Pipeline validation.
  • Disabled: Disables the Snap and, by extension, its downstream Snaps.

Validate and ExecuteExecute only

Troubleshooting

ErrorReasonResolution
Batch execution failedThe 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.

  1. You design the Pipeline as follows:
    Image Added

  2. 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.
    Image Added

  3. 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:
    1. You use the URL provided by Salesforce for managing the accounts available in your instance.
    2. You use '$' in the HTTP entity field to specify that you want to use the string coming from the Snap upstream.
    3. You add an HTTP header to the Snap, instructing Salesforce to read the document coming in as a JSON file.
      Image Added

  4. You click the Account tab and select the account that you want to use with the Snap.
    Image Added

    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:

    Image Added

    The id field lists out the unique identifier of the new account created by the Snap.

  5. 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.
    Image Added

    Upon validation, the Mapper Snap offers the following output:
    Image Added

  6. You now use the REST Delete Snap to delete the newly-created account:
    Image Added

    When the Snap is executed, the account is deleted.
    Image Added

Downloads

Somewhere here?

Attachments
patterns*.slp, *.zip

REST Delete: Frequently Asked Questions

Multiexcerpt include macro
nameRESTSP_FAQ1
pageREST Snap Pack

Insert excerpt
REST Snap Pack
REST Snap Pack
nopaneltrue