POST ticket: cURL (Batch and Shell)

This example script utilizes cURL (client URL), a versatile command-line tool for transferring data to and from a server, which is supported on the majority of devices. cURL can be employed in various ways, including but not limited to batch or shell scripts. For this example we will use the ticket API endpoint to create a deferred support request. This call requires a public API key and returns the ticket number when successful.

API Key Security: Avoid hardcoding API keys directly in your scripts for production applications. Instead, consider using environment variables or securely retrieving the keys from a server-side application.

We’ll begin by presenting a basic cURL script example. Following that, we’ll demonstrate how to implement the script as a Windows Batch and macOS/Linux Shell script.

Copy
cURL: Ticket
curl --location '<Your_domain_for_APIs>/ticket' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'INTEGRATION-KEY: <my_public_api_key>' \
--data-raw '{
  "ids": <enter the unique reference number of Take Control Agent>,
  "customer_name": "<enter customer's name>",
  "customer_email": "<enter customer's email address>",
  "problem_description": "<enter a description of the issue>"
}'

Breakdown

curl --location curl initiates an HTTP request and --location tells cURL to follow any redirects, which is useful when the server might redirect the request to a different URL.
--header 'Content-Type: application/json' This header indicates that the data being sent in the request is in JSON format.
--header 'Accept: application/json' This header tells the server that the client expects the response to be in JSON format.
--header 'INTEGRATION-KEY: <my_public_api_key>' Authenticates the API call by adding the "INTEGRATION-KEY" header.
--data-raw Allows you to send raw data in the body of the request. In this case, it’s a JSON object.

Using the cURL request in a Batch or Shell script

Wrapping a cURL request in a batch (for Windows) or shell script (for Linux or macOS) allows you to automate the process of sending requests and handling responses.

These take the core script cURL described above, tweaked to match the script format, and includes error message handling.

Batch script for Windows (.bat)

Copy
cURL: Ticket | Windows batch script
@echo off
setlocal enabledelayedexpansion

:: Set variables
set "url=<Your_domain_for_APIs>/ticket"
set "content_type=application/json"
set "accept=application/json"
set "integration_key=<my_public_api_key>"
set "ids=<enter the unique reference number of Take Control Agent>"
set "customer_name=<enter customer's name>"
set "customer_email=<enter customer's email address>"
set "problem_description=<enter a description of the issue>"

:: Create JSON data
set "json_data={\"ids\": !ids!,\"customer_name\":\"!customer_name!\",\"customer_email\":\"!customer_email!\",\"problem_description\":\"!problem_description!\"}"

:: Execute cURL command
curl --location "!url!" ^
--header "Content-Type: !content_type!" ^
--header "Accept: !accept!" ^
--header "INTEGRATION-KEY: !integration_key!" ^
--data-raw "!json_data!"

endlocal

Shell script for macOS and Linux (.sh)

Copy
cURL: Ticket | macOS/Linux Shell Script
#!/bin/bash

# Set variables
url="<Your_domain_for_APIs>/ticket"
content_type="application/json"
accept="application/json"
integration_key="<my_public_api_key>"
ids="<enter the unique reference number of Take Control Agent>"
customer_name="<enter customer's name>"
customer_email="<enter customer's email address>"
problem_description="<enter a description of the issue>"

# Create JSON data
json_data=$(cat <<EOF
{
  "ids": "$ids",
  "customer_name": "$customer_name",
  "customer_email": "$customer_email",
  "problem_description": "$problem_description"
}
EOF
)

# Execute cURL command
curl --location "$url" \
--header "Content-Type: $content_type" \
--header "Accept: $accept" \
--header "INTEGRATION-KEY: $integration_key" \
--data-raw "$json_data"

If you encounter issues running the shell script, you may need to make it executable. To do this, open your terminal and run the following command, replacing <script_name> with the name of your .sh script:

Breakdown

chmod +x <script_name>

@echo off Batch Prevents the commands from displaying as they run.
#!/bin/bash Shell Specifies that the script should be run using the Bash shell.
setlocal enabledelayedexpansion Batch Allows the use of ! for variable expansion within the script.
Set variables Both Defines variables for the URL, headers, and JSON data elements. Replace these placeholders with your actual values.
Create JSON data Both Builds the JSON data as a single line, ensuring double quotes are escaped.
Execute cURL command Both Uses the cURL command with the specified headers and JSON data.
endlocal Batch Ends the localization of environment changes.