curl --request POST \
--url https://api.smokeball.com/matters/{matterId}/portal/tasks \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json-patch+json' \
--header 'x-api-key: <api-key>' \
--data '
{
"externalUserId": "<string>",
"title": "Sign: Verification of Identity",
"url": "http://www.yourwebsite.com",
"contactId": "93421c6f-40bd-465d-bb95-3b3b5e200e30",
"email": "contact@example.com",
"requireMFA": true,
"optional": true,
"actionText": "Complete",
"completedText": "Signing Complete!",
"completedUrl": "http://www.yourwebsite.com"
}
'import requests
url = "https://api.smokeball.com/matters/{matterId}/portal/tasks"
payload = {
"externalUserId": "<string>",
"title": "Sign: Verification of Identity",
"url": "http://www.yourwebsite.com",
"contactId": "93421c6f-40bd-465d-bb95-3b3b5e200e30",
"email": "contact@example.com",
"requireMFA": True,
"optional": True,
"actionText": "Complete",
"completedText": "Signing Complete!",
"completedUrl": "http://www.yourwebsite.com"
}
headers = {
"x-api-key": "<api-key>",
"Authorization": "<api-key>",
"Content-Type": "application/json-patch+json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-api-key': '<api-key>',
Authorization: '<api-key>',
'Content-Type': 'application/json-patch+json'
},
body: JSON.stringify({
externalUserId: '<string>',
title: 'Sign: Verification of Identity',
url: 'http://www.yourwebsite.com',
contactId: '93421c6f-40bd-465d-bb95-3b3b5e200e30',
email: 'contact@example.com',
requireMFA: true,
optional: true,
actionText: 'Complete',
completedText: 'Signing Complete!',
completedUrl: 'http://www.yourwebsite.com'
})
};
fetch('https://api.smokeball.com/matters/{matterId}/portal/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.smokeball.com/matters/{matterId}/portal/tasks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'externalUserId' => '<string>',
'title' => 'Sign: Verification of Identity',
'url' => 'http://www.yourwebsite.com',
'contactId' => '93421c6f-40bd-465d-bb95-3b3b5e200e30',
'email' => 'contact@example.com',
'requireMFA' => true,
'optional' => true,
'actionText' => 'Complete',
'completedText' => 'Signing Complete!',
'completedUrl' => 'http://www.yourwebsite.com'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json-patch+json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.smokeball.com/matters/{matterId}/portal/tasks"
payload := strings.NewReader("{\n \"externalUserId\": \"<string>\",\n \"title\": \"Sign: Verification of Identity\",\n \"url\": \"http://www.yourwebsite.com\",\n \"contactId\": \"93421c6f-40bd-465d-bb95-3b3b5e200e30\",\n \"email\": \"contact@example.com\",\n \"requireMFA\": true,\n \"optional\": true,\n \"actionText\": \"Complete\",\n \"completedText\": \"Signing Complete!\",\n \"completedUrl\": \"http://www.yourwebsite.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json-patch+json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.smokeball.com/matters/{matterId}/portal/tasks")
.header("x-api-key", "<api-key>")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json-patch+json")
.body("{\n \"externalUserId\": \"<string>\",\n \"title\": \"Sign: Verification of Identity\",\n \"url\": \"http://www.yourwebsite.com\",\n \"contactId\": \"93421c6f-40bd-465d-bb95-3b3b5e200e30\",\n \"email\": \"contact@example.com\",\n \"requireMFA\": true,\n \"optional\": true,\n \"actionText\": \"Complete\",\n \"completedText\": \"Signing Complete!\",\n \"completedUrl\": \"http://www.yourwebsite.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.smokeball.com/matters/{matterId}/portal/tasks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json-patch+json'
request.body = "{\n \"externalUserId\": \"<string>\",\n \"title\": \"Sign: Verification of Identity\",\n \"url\": \"http://www.yourwebsite.com\",\n \"contactId\": \"93421c6f-40bd-465d-bb95-3b3b5e200e30\",\n \"email\": \"contact@example.com\",\n \"requireMFA\": true,\n \"optional\": true,\n \"actionText\": \"Complete\",\n \"completedText\": \"Signing Complete!\",\n \"completedUrl\": \"http://www.yourwebsite.com\"\n}"
response = http.request(request)
puts response.read_body{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}Creates a portal task
Creates a new client portal task associated with the specified matter.
curl --request POST \
--url https://api.smokeball.com/matters/{matterId}/portal/tasks \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json-patch+json' \
--header 'x-api-key: <api-key>' \
--data '
{
"externalUserId": "<string>",
"title": "Sign: Verification of Identity",
"url": "http://www.yourwebsite.com",
"contactId": "93421c6f-40bd-465d-bb95-3b3b5e200e30",
"email": "contact@example.com",
"requireMFA": true,
"optional": true,
"actionText": "Complete",
"completedText": "Signing Complete!",
"completedUrl": "http://www.yourwebsite.com"
}
'import requests
url = "https://api.smokeball.com/matters/{matterId}/portal/tasks"
payload = {
"externalUserId": "<string>",
"title": "Sign: Verification of Identity",
"url": "http://www.yourwebsite.com",
"contactId": "93421c6f-40bd-465d-bb95-3b3b5e200e30",
"email": "contact@example.com",
"requireMFA": True,
"optional": True,
"actionText": "Complete",
"completedText": "Signing Complete!",
"completedUrl": "http://www.yourwebsite.com"
}
headers = {
"x-api-key": "<api-key>",
"Authorization": "<api-key>",
"Content-Type": "application/json-patch+json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-api-key': '<api-key>',
Authorization: '<api-key>',
'Content-Type': 'application/json-patch+json'
},
body: JSON.stringify({
externalUserId: '<string>',
title: 'Sign: Verification of Identity',
url: 'http://www.yourwebsite.com',
contactId: '93421c6f-40bd-465d-bb95-3b3b5e200e30',
email: 'contact@example.com',
requireMFA: true,
optional: true,
actionText: 'Complete',
completedText: 'Signing Complete!',
completedUrl: 'http://www.yourwebsite.com'
})
};
fetch('https://api.smokeball.com/matters/{matterId}/portal/tasks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.smokeball.com/matters/{matterId}/portal/tasks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'externalUserId' => '<string>',
'title' => 'Sign: Verification of Identity',
'url' => 'http://www.yourwebsite.com',
'contactId' => '93421c6f-40bd-465d-bb95-3b3b5e200e30',
'email' => 'contact@example.com',
'requireMFA' => true,
'optional' => true,
'actionText' => 'Complete',
'completedText' => 'Signing Complete!',
'completedUrl' => 'http://www.yourwebsite.com'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json-patch+json",
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.smokeball.com/matters/{matterId}/portal/tasks"
payload := strings.NewReader("{\n \"externalUserId\": \"<string>\",\n \"title\": \"Sign: Verification of Identity\",\n \"url\": \"http://www.yourwebsite.com\",\n \"contactId\": \"93421c6f-40bd-465d-bb95-3b3b5e200e30\",\n \"email\": \"contact@example.com\",\n \"requireMFA\": true,\n \"optional\": true,\n \"actionText\": \"Complete\",\n \"completedText\": \"Signing Complete!\",\n \"completedUrl\": \"http://www.yourwebsite.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json-patch+json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.smokeball.com/matters/{matterId}/portal/tasks")
.header("x-api-key", "<api-key>")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json-patch+json")
.body("{\n \"externalUserId\": \"<string>\",\n \"title\": \"Sign: Verification of Identity\",\n \"url\": \"http://www.yourwebsite.com\",\n \"contactId\": \"93421c6f-40bd-465d-bb95-3b3b5e200e30\",\n \"email\": \"contact@example.com\",\n \"requireMFA\": true,\n \"optional\": true,\n \"actionText\": \"Complete\",\n \"completedText\": \"Signing Complete!\",\n \"completedUrl\": \"http://www.yourwebsite.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.smokeball.com/matters/{matterId}/portal/tasks")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json-patch+json'
request.body = "{\n \"externalUserId\": \"<string>\",\n \"title\": \"Sign: Verification of Identity\",\n \"url\": \"http://www.yourwebsite.com\",\n \"contactId\": \"93421c6f-40bd-465d-bb95-3b3b5e200e30\",\n \"email\": \"contact@example.com\",\n \"requireMFA\": true,\n \"optional\": true,\n \"actionText\": \"Complete\",\n \"completedText\": \"Signing Complete!\",\n \"completedUrl\": \"http://www.yourwebsite.com\"\n}"
response = http.request(request)
puts response.read_body{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}Path Parameters
Body
The optional external user identifier of the external system.
1The title of the task to be displayed in the UI.
1"Sign: Verification of Identity"
The URL that will be displayed within the task content.
1"http://www.yourwebsite.com"
Unique identifier of the contact.
"93421c6f-40bd-465d-bb95-3b3b5e200e30"
Email address of the contact. If provided, this takes precedence over ContactId.
"contact@example.com"
Whether MFA is required before showing the task content.
Whether the task is "Required" or "Optional".
Optional tasks appear in a separate section in the UI.
Optional action text, a single word to describe the action the task relates to.
Defaults to "Complete", but other examples could be "Sign" or "Review".
"Complete"
Optional completed text, used on the task success screen if provided.
"Signing Complete!"
Optional completed URL, which is a URL that is loaded in the task content body instead of the default success screen if provided.
This option overrides CompletedText if provided.
"http://www.yourwebsite.com"
Response
When request is accepted. Returns the id of the task to be created.