curl --request POST \
--url https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/discard-changes/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"expected_revision": 2
}
'import requests
url = "https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/discard-changes/"
payload = { "expected_revision": 2 }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({expected_revision: 2})
};
fetch('https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/discard-changes/', 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.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/discard-changes/",
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([
'expected_revision' => 2
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/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.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/discard-changes/"
payload := strings.NewReader("{\n \"expected_revision\": 2\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/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.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/discard-changes/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"expected_revision\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/discard-changes/")
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["Content-Type"] = 'application/json'
request.body = "{\n \"expected_revision\": 2\n}"
response = http.request(request)
puts response.read_body{
"agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"applied_version": 123,
"base_version": 123,
"contacts": [
{
"context": {},
"fields": [
{
"name": "<string>",
"value": "<string>"
}
],
"label": "<string>",
"messages": [
{
"authored": true,
"body": "<string>",
"conditional": "<string>",
"edited_body": "<string>",
"edited_subject": "<string>",
"error": "<string>",
"facts_used": [
"<string>"
],
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "<string>",
"note": "<string>",
"previous_body": "<string>",
"previous_subject": "<string>",
"reasoning": "<string>",
"reply_to_step_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"steps": [
{
"action": "<string>",
"detail": "",
"duration_ms": 123,
"observation": "",
"outcome": "completed",
"thought": "<string>"
}
],
"subject": "<string>",
"timing": "<string>",
"title": "<string>",
"proposed_body": "<string>",
"proposed_error": "<string>",
"proposed_send": {
"alone": true,
"reason": "low_confidence",
"doubt": "<string>"
},
"proposed_subject": "<string>",
"send": {
"alone": true,
"reason": "low_confidence",
"doubt": "<string>"
}
}
],
"note": "<string>",
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verdict": "good",
"notes": [
{
"note": "<string>",
"state": "pending"
}
],
"notice": "<string>",
"profile_mismatch": "<string>"
}
],
"created_at": "2023-11-07T05:31:56Z",
"error": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"progress": {
"fixed": 123,
"in_a_row": 123,
"lessons": [
"<string>"
],
"ready": true,
"ready_after": 123,
"reviewed": 123
},
"proposal": {
"summary": "<string>",
"changes": [
{
"current": "<string>",
"proposed": "<string>",
"rationale": "<string>",
"slot_key": "<string>"
}
],
"made_at": 0,
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"round_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
},
"revision": 123,
"status": "running",
"note_waiting": false,
"reviewed_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"steps": [
{
"action": "<string>",
"detail": "",
"duration_ms": 123,
"observation": "",
"outcome": "completed",
"thought": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Discard the rewrite
Drops the rewrite and the lesson that wrote it. The thread stays as it was written, its notes are kept as discarded (the agent never learns them) and the contact waits for a verdict again. Closing the whole run is the close route.
curl --request POST \
--url https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/discard-changes/ \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"expected_revision": 2
}
'import requests
url = "https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/discard-changes/"
payload = { "expected_revision": 2 }
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({expected_revision: 2})
};
fetch('https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/discard-changes/', 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.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/discard-changes/",
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([
'expected_revision' => 2
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/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.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/discard-changes/"
payload := strings.NewReader("{\n \"expected_revision\": 2\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/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.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/discard-changes/")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"expected_revision\": 2\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/sequences/{sequence_id}/agent/training/{session_id}/discard-changes/")
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["Content-Type"] = 'application/json'
request.body = "{\n \"expected_revision\": 2\n}"
response = http.request(request)
puts response.read_body{
"agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"applied_version": 123,
"base_version": 123,
"contacts": [
{
"context": {},
"fields": [
{
"name": "<string>",
"value": "<string>"
}
],
"label": "<string>",
"messages": [
{
"authored": true,
"body": "<string>",
"conditional": "<string>",
"edited_body": "<string>",
"edited_subject": "<string>",
"error": "<string>",
"facts_used": [
"<string>"
],
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"kind": "<string>",
"note": "<string>",
"previous_body": "<string>",
"previous_subject": "<string>",
"reasoning": "<string>",
"reply_to_step_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"steps": [
{
"action": "<string>",
"detail": "",
"duration_ms": 123,
"observation": "",
"outcome": "completed",
"thought": "<string>"
}
],
"subject": "<string>",
"timing": "<string>",
"title": "<string>",
"proposed_body": "<string>",
"proposed_error": "<string>",
"proposed_send": {
"alone": true,
"reason": "low_confidence",
"doubt": "<string>"
},
"proposed_subject": "<string>",
"send": {
"alone": true,
"reason": "low_confidence",
"doubt": "<string>"
}
}
],
"note": "<string>",
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"verdict": "good",
"notes": [
{
"note": "<string>",
"state": "pending"
}
],
"notice": "<string>",
"profile_mismatch": "<string>"
}
],
"created_at": "2023-11-07T05:31:56Z",
"error": "<string>",
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"progress": {
"fixed": 123,
"in_a_row": 123,
"lessons": [
"<string>"
],
"ready": true,
"ready_after": 123,
"reviewed": 123
},
"proposal": {
"summary": "<string>",
"changes": [
{
"current": "<string>",
"proposed": "<string>",
"rationale": "<string>",
"slot_key": "<string>"
}
],
"made_at": 0,
"record_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"round_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
]
},
"revision": 123,
"status": "running",
"note_waiting": false,
"reviewed_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"steps": [
{
"action": "<string>",
"detail": "",
"duration_ms": 123,
"observation": "",
"outcome": "completed",
"thought": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Authorizations
Body
x >= 1Response
Successful Response
Show child attributes
Show child attributes
How training on this sequence is going, counted across the run.
Show child attributes
Show child attributes
The session's candidate prompt update, kept pending until applied.
Show child attributes
Show child attributes
A session's phase, also used to resume its review screen.
running, reviewing, proposing, proposed, completed, abandoned A note was given while another contact was being written: its rewrite is worked out as soon as that write lands.
Every contact given Looks good or a note in this run, including ones that left the run to make room.
Show child attributes
Show child attributes
Was this page helpful?