Preview TFU Live agent move
Reads what moving this TFU Live agent to toLocationId would do, before you move it. It writes nothing and alerts no one. The plan has the same parts as GET /api/tfu-live-agents/{id}/clone/plan. live is true when the agent is live now: its new campaign takes test calls until it goes live there. Send your answers and the fingerprint, as ifPlan, to POST /api/tfu-live-agents/{id}/move. An input you leave out takes its default. An API key or OAuth client cannot answer create_field.
Required scope: agents:write.
Required API key scope: agents:write.
GET
/
api
/
tfu-live-agents
/
{id}
/
move
/
plan
cURL
curl --request GET \
--url https://api.teamfollowup.ai/api/tfu-live-agents/{id}/move/plan \
--header 'Authorization: Bearer YOUR_API_KEY'import requests
url = "https://api.teamfollowup.ai/api/tfu-live-agents/{id}/move/plan"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.teamfollowup.ai/api/tfu-live-agents/{id}/move/plan', 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.teamfollowup.ai/api/tfu-live-agents/{id}/move/plan",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.teamfollowup.ai/api/tfu-live-agents/{id}/move/plan"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.teamfollowup.ai/api/tfu-live-agents/{id}/move/plan")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.teamfollowup.ai/api/tfu-live-agents/{id}/move/plan")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"mode": "move",
"fromLocationId": "loc_source",
"toLocationId": "loc_target",
"live": true,
"inputs": [
{
"id": "calendar:cal_a1",
"kind": "calendar",
"original": {
"id": "cal_a1",
"name": "Consultations"
},
"uses": [
{
"list": "workflow",
"workflowId": "wf_book0001",
"workflowName": "Book appointment",
"stepId": "slots",
"node": "find_slots",
"field": "calendarId"
},
{
"list": "campaign",
"path": "config.calendarId"
}
],
"options": [
{
"id": "cal_b1",
"name": "consultations"
},
{
"id": "cal_b2",
"name": "Support"
}
],
"suggested": "cal_b1",
"choices": [
"later",
"remove"
],
"default": "cal_b1",
"required": false
},
{
"id": "field:contact.custom.a_roof",
"kind": "field",
"original": {
"id": "contact.custom.a_roof",
"name": "Roof age"
},
"uses": [
{
"list": "workflow",
"workflowId": "wf_book0001",
"workflowName": "Book appointment",
"stepId": "check",
"node": "condition",
"field": "cases[c1].field"
}
],
"options": [
{
"id": "contact.custom.b_type",
"name": "Roof type"
}
],
"suggested": null,
"createField": {
"name": "Roof age",
"type": "text"
},
"choices": [
"create_field"
],
"default": null,
"required": true
},
{
"id": "caller_id:+14155550123",
"kind": "caller_id",
"original": {
"id": "+14155550123"
},
"uses": [
{
"list": "campaign",
"path": "fromNumbers[0]"
}
],
"options": [],
"suggested": null,
"choices": [
"carry",
"leave"
],
"default": "carry",
"required": false
}
],
"carried": [
{
"kind": "agent",
"code": "same_agent",
"params": {},
"message": "It stays the same agent."
},
{
"kind": "campaign",
"code": "calling_hours_and_direction",
"params": {},
"message": "The calling hours and call direction come across."
}
],
"removed": [],
"wontMove": [
{
"code": "stays_on_original",
"params": {
"what": "calls",
"count": 14
},
"message": "14 calls stay on the old sub-account."
},
{
"code": "revisions_not_restorable",
"params": {},
"message": "Earlier versions stay, but you can no longer restore them."
}
],
"leftToSetUp": [
{
"code": "start",
"params": {
"kinds": [
"contact_created"
]
},
"message": "Pick how calls start on the new sub-account. On the old sub-account, calls started on a new contact."
}
],
"fingerprint": "6eddd770a8e44114d62d8b3fbe31dd66a2f74bf12651acf651f13f51428cc67f"
}
}Authorizations
Path Parameters
Query Parameters
⌘I
cURL
curl --request GET \
--url https://api.teamfollowup.ai/api/tfu-live-agents/{id}/move/plan \
--header 'Authorization: Bearer YOUR_API_KEY'import requests
url = "https://api.teamfollowup.ai/api/tfu-live-agents/{id}/move/plan"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.teamfollowup.ai/api/tfu-live-agents/{id}/move/plan', 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.teamfollowup.ai/api/tfu-live-agents/{id}/move/plan",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.teamfollowup.ai/api/tfu-live-agents/{id}/move/plan"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.teamfollowup.ai/api/tfu-live-agents/{id}/move/plan")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.teamfollowup.ai/api/tfu-live-agents/{id}/move/plan")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"mode": "move",
"fromLocationId": "loc_source",
"toLocationId": "loc_target",
"live": true,
"inputs": [
{
"id": "calendar:cal_a1",
"kind": "calendar",
"original": {
"id": "cal_a1",
"name": "Consultations"
},
"uses": [
{
"list": "workflow",
"workflowId": "wf_book0001",
"workflowName": "Book appointment",
"stepId": "slots",
"node": "find_slots",
"field": "calendarId"
},
{
"list": "campaign",
"path": "config.calendarId"
}
],
"options": [
{
"id": "cal_b1",
"name": "consultations"
},
{
"id": "cal_b2",
"name": "Support"
}
],
"suggested": "cal_b1",
"choices": [
"later",
"remove"
],
"default": "cal_b1",
"required": false
},
{
"id": "field:contact.custom.a_roof",
"kind": "field",
"original": {
"id": "contact.custom.a_roof",
"name": "Roof age"
},
"uses": [
{
"list": "workflow",
"workflowId": "wf_book0001",
"workflowName": "Book appointment",
"stepId": "check",
"node": "condition",
"field": "cases[c1].field"
}
],
"options": [
{
"id": "contact.custom.b_type",
"name": "Roof type"
}
],
"suggested": null,
"createField": {
"name": "Roof age",
"type": "text"
},
"choices": [
"create_field"
],
"default": null,
"required": true
},
{
"id": "caller_id:+14155550123",
"kind": "caller_id",
"original": {
"id": "+14155550123"
},
"uses": [
{
"list": "campaign",
"path": "fromNumbers[0]"
}
],
"options": [],
"suggested": null,
"choices": [
"carry",
"leave"
],
"default": "carry",
"required": false
}
],
"carried": [
{
"kind": "agent",
"code": "same_agent",
"params": {},
"message": "It stays the same agent."
},
{
"kind": "campaign",
"code": "calling_hours_and_direction",
"params": {},
"message": "The calling hours and call direction come across."
}
],
"removed": [],
"wontMove": [
{
"code": "stays_on_original",
"params": {
"what": "calls",
"count": 14
},
"message": "14 calls stay on the old sub-account."
},
{
"code": "revisions_not_restorable",
"params": {},
"message": "Earlier versions stay, but you can no longer restore them."
}
],
"leftToSetUp": [
{
"code": "start",
"params": {
"kinds": [
"contact_created"
]
},
"message": "Pick how calls start on the new sub-account. On the old sub-account, calls started on a new contact."
}
],
"fingerprint": "6eddd770a8e44114d62d8b3fbe31dd66a2f74bf12651acf651f13f51428cc67f"
}
}