curl --request GET \
--url https://api.getoneprofile.ai/assistant/actions/{proposal_id}/ \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.getoneprofile.ai/assistant/actions/{proposal_id}/"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.getoneprofile.ai/assistant/actions/{proposal_id}/', 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/assistant/actions/{proposal_id}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.getoneprofile.ai/assistant/actions/{proposal_id}/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.getoneprofile.ai/assistant/actions/{proposal_id}/")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/assistant/actions/{proposal_id}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"applied_result": {},
"can_undo": true,
"conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"decided_at": "2023-11-07T05:31:56Z",
"decided_by_display_name": "<string>",
"error": "<string>",
"grantable": true,
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"message_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"origin": "chat",
"price_credits": 123,
"price_label": "<string>",
"proposed_at": "2023-11-07T05:31:56Z",
"status": "proposed",
"summary": "<string>",
"undoable": true,
"undone_at": "2023-11-07T05:31:56Z",
"undone_by_display_name": "<string>",
"verb": "create_table_from_search",
"verb_label": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Read one proposed or applied action
One card by id: what a notification links to. A scheduled search’s card has no conversation, so this is the only way to reach it by the link.
curl --request GET \
--url https://api.getoneprofile.ai/assistant/actions/{proposal_id}/ \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.getoneprofile.ai/assistant/actions/{proposal_id}/"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.getoneprofile.ai/assistant/actions/{proposal_id}/', 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/assistant/actions/{proposal_id}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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"
"net/http"
"io"
)
func main() {
url := "https://api.getoneprofile.ai/assistant/actions/{proposal_id}/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
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.getoneprofile.ai/assistant/actions/{proposal_id}/")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getoneprofile.ai/assistant/actions/{proposal_id}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"applied_result": {},
"can_undo": true,
"conversation_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"decided_at": "2023-11-07T05:31:56Z",
"decided_by_display_name": "<string>",
"error": "<string>",
"grantable": true,
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"message_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"origin": "chat",
"price_credits": 123,
"price_label": "<string>",
"proposed_at": "2023-11-07T05:31:56Z",
"status": "proposed",
"summary": "<string>",
"undoable": true,
"undone_at": "2023-11-07T05:31:56Z",
"undone_by_display_name": "<string>",
"verb": "create_table_from_search",
"verb_label": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>",
"issues": [
{
"input": "<string>",
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "<string>"
}{
"detail": "<string>"
}{
"detail": "<string>"
}Authorizations
Path Parameters
Response
Successful Response
One action the assistant proposed or applied, and what became of it: the card.
Prices are quoted in credits, never tenths, and never as a raw id: who
decided is a display name resolved at this boundary. applied_result
is the verb's own record of what it made (the new column's id, the rows
enrolled), for the card's link and its Undo.
Whether Undo applies now: undoable and applied.
Why an approval failed to apply, in plain words; null otherwise.
Whether the card may offer Approve and allow in this conversation: only a pending proposal of a verb that is not a send.
Which surface raised a proposal.
Kept as its own enum rather than reusing the thread-store origins: a scheduled search proposes with no conversation behind it at all, and the activity feed needs to say so.
chat, agent, scheduled_search The published price of the operation when it was proposed, in credits; null when free.
"Free", "1 credit" or "N credits", as the card says it.
Where one proposed action stands.
PROPOSED waits on a person. APPLIED happened, and may be undone where the verb allows it. UNDONE is applied-then-reversed and stays on the record: Undo reverses the workspace change, never the spend, and a trail that forgot the spend would be lying. DISMISSED is a person saying no. FAILED is an approval whose apply raised; the error stays with the row so the card can say why instead of vanishing.
proposed, applied, undone, dismissed, failed Whether the verb can be reversed at all.
The eight things an AI may do to a workspace.
Exactly eight, not sixty: today's cell-level actions all run against one cell, and building a table, adding contacts to a sequence and starting a search had no home at all. Anything new here is a product decision about what an assistant may touch, not a convenience for a planner.
create_table_from_search, add_column, run_column, enrich_rows, add_contacts_to_sequence, push_to_destination, call_endpoint, start_search Was this page helpful?