Oneprofile · Schema
ThumbsDownReadSchema
What a thumbs down did.
Sales OutreachAI ResearchEmail AutomationLinkedIn OutreachCRM Integration
Properties
| Name | Type | Description |
|---|---|---|
| action | object | `added` a learning, or `updated` one about the same thing. |
| agent_name | string | The agent that learned it. |
| event_id | string | The thumbs down, for Undo. |
| learning | object | The learning as written; null on a replay whose learning was deleted since. |
| more | array | A table agent's other learnings it wrote, one for each other point the reason made, in order; empty when it made one. Always empty on an outbound message, whose changes `proposal.changes` lists. Undo |
| previous_text | object | What the updated learning said before; null for an added one. |
| proposal | object | The feedback session it opened or refined: the changes it proposes, not saved yet; `learning` is null then. A further thumbs down on the same message, cells or Preview example refines it (the latest n |
| redo | object | |
| subject_key | string | What the thumbs down was given on, as `list_thumbs_downs` takes it, so a screen that gave it elsewhere (the AI Assistant's card) can follow its note. |
| surface | object | Where it was given; `hand_edit` for a learning a person's own edit proposed, whose card dismisses it and keeps the edit. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/getoneprofile-ai/json-schema/getoneprofile-ai-thumbs-down-read-schema-schema.json",
"title": "ThumbsDownReadSchema",
"description": "What a thumbs down did.",
"x-generated": "2026-11-10",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/getoneprofile-ai-agent-learnings-api-openapi.yml#/components/schemas/ThumbsDownReadSchema",
"properties": {
"action": {
"$ref": "#/$defs/LearningAction",
"description": "`added` a learning, or `updated` one about the same thing."
},
"agent_name": {
"description": "The agent that learned it.",
"title": "Agent Name",
"type": "string"
},
"event_id": {
"description": "The thumbs down, for Undo.",
"format": "uuid",
"title": "Event Id",
"type": "string"
},
"learning": {
"anyOf": [
{
"$ref": "#/$defs/AgentLearningReadSchema"
},
{
"type": "null"
}
],
"description": "The learning as written; null on a replay whose learning was deleted since."
},
"more": {
"description": "A table agent's other learnings it wrote, one for each other point the reason made, in order; empty when it made one. Always empty on an outbound message, whose changes `proposal.changes` lists. Undo takes them all back.",
"items": {
"$ref": "#/$defs/LearnedPartReadSchema"
},
"title": "More",
"type": "array"
},
"previous_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What the updated learning said before; null for an added one.",
"title": "Previous Text"
},
"proposal": {
"anyOf": [
{
"$ref": "#/$defs/ProposalReadSchema"
},
{
"type": "null"
}
],
"description": "The feedback session it opened or refined: the changes it proposes, not saved yet; `learning` is null then. A further thumbs down on the same message, cells or Preview example refines it (the latest note wins). Null on a replay of a session saved or thrown away since."
},
"redo": {
"$ref": "#/$defs/RedoReadSchema"
},
"subject_key": {
"description": "What the thumbs down was given on, as `list_thumbs_downs` takes it, so a screen that gave it elsewhere (the AI Assistant's card) can follow its note.",
"title": "Subject Key",
"type": "string"
},
"surface": {
"$ref": "#/$defs/LearningSource",
"description": "Where it was given; `hand_edit` for a learning a person's own edit proposed, whose card dismisses it and keeps the edit."
}
},
"required": [
"event_id",
"action",
"learning",
"previous_text",
"agent_name",
"redo",
"subject_key",
"surface"
],
"type": "object",
"$defs": {
"AgentLearningReadSchema": {
"description": "One learning: a one-line rule the agent follows on every output.",
"properties": {
"all_sequences": {
"default": false,
"description": "Whether every sequence's writer follows it, rather than one agent.",
"title": "All Sequences",
"type": "boolean"
},
"batch_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"description": "The release that wrote it, for a learning split from a long prompt (`simplified`) or carried over from old feedback (`carried`): undoing that event (POST /agent-learnings/thumbs-downs/{event_id}/revert/ with this id) is Put back the original prompt. Null for a learning a thumbs down taught.",
"title": "Batch Id"
},
"created_at": {
"format": "date-time",
"title": "Created At",
"type": "string"
},
"created_by_user_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Who taught it, or null for a release.",
"title": "Created By User Id"
},
"id": {
"format": "uuid",
"title": "Id",
"type": "string"
},
"last_event_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"description": "The latest thumbs down that wrote it, for Undo (POST /agent-learnings/thumbs-downs/{event_id}/revert/); null when none did or the learning was only read.",
"title": "Last Event Id"
},
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What the person said in the thumbs down that last wrote it (`last_event_id`), every note of a refined one joined, one per line; null when no thumbs down did, and once its feedback session closed: a saved, discarded or undone session keeps none of the person's notes.",
"title": "Note"
},
"note_surface": {
"anyOf": [
{
"$ref": "#/$defs/LearningSource"
},
{
"type": "null"
}
],
"description": "Where the thumbs down that last wrote it (`last_event_id`) was given, which `note` and `source_text` come from; it can differ from `source` once a later thumbs down on another surface changed it. Null when no thumbs down did."
},
"noted_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"description": "When that thumbs down was given; null when no thumbs down wrote it.",
"title": "Noted At"
},
"notes": {
"description": "The same notes one by one, oldest first, each whole: the thumbs down's own, then each further note in its session. Empty when no thumbs down wrote it, and once its feedback session closed.",
"items": {
"type": "string"
},
"title": "Notes",
"type": "array"
},
"repeats": {
"default": 0,
"description": "How often a later Needs work asked for it again, as it stood, once saved; 0 when none did.",
"title": "Repeats",
"type": "integer"
},
"source": {
"$ref": "#/$defs/LearningSource",
"description": "Where it was taught: the surface whose thumbs down added it, `simplified` when a long prompt was split into a goal and learnings, `carried` when old feedback was carried over."
},
"source_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The message that thumbs down was given on, as it read then; null when none was kept (a table agent's, or a learning a release wrote).",
"title": "Source Text"
},
"step_key": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The one step of the sequence it holds for, by the step's agent prompt slot; null when it holds for every message the agent writes.",
"title": "Step Key"
},
"step_label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "That step as the sequence names it now, e.g. \"Step 2 · Follow up\"; null when it holds for every message, or the step is gone.",
"title": "Step Label"
},
"text": {
"description": "The rule, one line.",
"title": "Text",
"type": "string"
},
"updated_at": {
"format": "date-time",
"title": "Updated At",
"type": "string"
}
},
"required": [
"id",
"text",
"source",
"created_at",
"updated_at",
"created_by_user_id",
"last_event_id",
"batch_id"
],
"title": "AgentLearningReadSchema",
"type": "object"
},
"ChangeKind": {
"description": "What one change of a feedback session does to the learnings (F2).",
"enum": [
"add",
"update",
"delete",
"keep",
"instruction",
"link",
"fact"
],
"title": "ChangeKind",
"type": "string"
},
"ChangeOutcome": {
"description": "What saving a session did with one of its changes (F2).",
"enum": [
"applied",
"skipped_full",
"skipped_changed",
"pending",
"undo_pending",
"undone",
"left",
"left_out"
],
"title": "ChangeOutcome",
"type": "string"
},
"ChangeVersionReadSchema": {
"description": "How a session's change read before a later note rewrote it.",
"properties": {
"find": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "An instruction edit's words it replaced.",
"title": "Find"
},
"note": {
"description": "The note that made this version.",
"title": "Note",
"type": "integer"
},
"replace_with": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What the instruction edit put in their place.",
"title": "Replace With"
},
"text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The learning, link or fact's answer as it read.",
"title": "Text"
}
},
"required": [
"note",
"text",
"find",
"replace_with"
],
"title": "ChangeVersionReadSchema",
"type": "object"
},
"LearnState": {
"description": "Whether a session's learner turned its notes into changes (F3, F5).",
"enum": [
"ok",
"failed"
],
"title": "LearnState",
"type": "string"
},
"LearnedPartReadSchema": {
"description": "One more learning a thumbs down wrote, for another point its reason made.",
"properties": {
"action": {
"$ref": "#/$defs/LearningAction",
"description": "`added` a learning, or `updated` one about the same thing."
},
"learning_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"description": "The learning; null once it was deleted.",
"title": "Learning Id"
},
"previous_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What the updated learning said before; null for an added one.",
"title": "Previous Text"
},
"text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The learning as the thumbs down wrote it.",
"title": "Text"
}
},
"required": [
"action",
"learning_id",
"text",
"previous_text"
],
"title": "LearnedPartReadSchema",
"type": "object"
},
"LearningAction": {
"description": "What one event did to an agent's learnings.",
"enum": [
"added",
"updated",
"split",
"carried",
"skipped",
"seeded",
"session",
"deleted"
],
"title": "LearningAction",
"type": "string"
},
"LearningSource": {
"description": "Where a learning came from: the surface a thumbs down was given on, or a release pass.\n\nAlso the ``surface`` of the event that wrote it.",
"enum": [
"table_cells",
"agent_preview",
"task",
"writing_preview",
"reply_draft",
"sent_message",
"hand_edit",
"simplified",
"carried",
"template",
"hand"
],
"title": "LearningSource",
"type": "string"
},
"PointGoesTo": {
"description": "Where one point of a session's notes belongs (F7).",
"enum": [
"rule",
"this_message",
"instruction",
"link",
"fact",
"sender",
"research",
"pending"
],
"title": "PointGoesTo",
"type": "string"
},
"ProposalPointReadSchema": {
"description": "One thing a feedback session's notes ask for, as its learner read them.",
"properties": {
"covered": {
"description": "Whether a change learns it.",
"title": "Covered",
"type": "boolean"
},
"goes_to": {
"$ref": "#/$defs/PointGoesTo",
"description": "Where it belongs: `rule` (a learning), `this_message` (only this message: the rewrite follows it, nothing is kept), `instruction` (a step's or the reply's instruction), `link` (the sequence's call-to-action link), `fact` (the business Q&A), `sender` (a sender's own setting, changed on Senders) or `research` (the sequence's research settings). `sender` and `research` are never written."
},
"note": {
"description": "The note it is in, from 1, oldest first (see `notes`).",
"title": "Note",
"type": "integer"
},
"number": {
"description": "From 1, across every note: what a change's `points` name.",
"title": "Number",
"type": "integer"
},
"quote": {
"description": "The note's own words for it; empty when the learner's quote was not found.",
"title": "Quote",
"type": "string"
},
"reason": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Why it is not learned (it names this contact, say); null when it is.",
"title": "Reason"
},
"said": {
"description": "The point in a few words.",
"title": "Said",
"type": "string"
}
},
"required": [
"number",
"note",
"quote",
"said",
"covered",
"reason",
"goes_to"
],
"title": "ProposalPointReadSchema",
"type": "object"
},
"ProposalReadSchema": {
"description": "What a feedback session will learn, before a person saves it.\n\nSaved by Save (POST .../save/), by approving the rewritten task or reply, or by Looks\ngood on the rewritten Preview contact, the cells or the Preview example; thrown away by\nUndo, a rejection or a discard. A table agent's changes are its own, at `sequence` scope.\n`changes` lists every change; the fields beside it describe the first add or rewrite.",
"properties": {
"auto_rewrites": {
"description": "How many messages written ahead (Tasks cards, messages waiting to send on their own, and waiting reply drafts) were written again once it was saved.",
"title": "Auto Rewrites",
"type": "integer"
},
"changes": {
"description": "Every change it makes to the learnings, in the learner's order.",
"items": {
"$ref": "#/$defs/ProposedChangeReadSchema"
},
"title": "Changes",
"type": "array"
},
"learn_detail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Why it failed, said on the card; null when ok.",
"title": "Learn Detail"
},
"learn_state": {
"$ref": "#/$defs/LearnState",
"description": "`ok`, or `failed` when the learner could not work out what to learn from the last note: nothing new is learned until Retry, and the changes before it stand."
},
"moved_from_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Once saved for every sequence: this sequence's learning it took the place of, which Undo puts back.",
"title": "Moved From Text"
},
"points": {
"description": "What the notes ask for, as its learner read them; each change names its own. Empty once the session closed: they go with its notes.",
"items": {
"$ref": "#/$defs/ProposalPointReadSchema"
},
"title": "Points",
"type": "array"
},
"replaces_scope": {
"anyOf": [
{
"$ref": "#/$defs/ProposedScope"
},
{
"type": "null"
}
],
"description": "Whose learning the first change rewrites: this sequence's, or every sequence's. A rewrite of every sequence's learning kept at `sequence` scope saves a new learning for this sequence instead (Replaces in this sequence)."
},
"replaces_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The saved learning the first change rewrites, as it read when proposed (Replaces: ...); null when it adds one.",
"title": "Replaces Text"
},
"rev": {
"description": "The revision of `changes`: it moves on every refine or edit of them.",
"title": "Rev",
"type": "integer"
},
"saved_learning_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"description": "The learning the first change saved, once saved; null while it waits or once thrown away.",
"title": "Saved Learning Id"
},
"scope": {
"$ref": "#/$defs/ProposedScope",
"description": "The first change's scope. `sequence`: this sequence only (the default). `account`: every sequence's writer, its emails, LinkedIn messages and replies."
},
"text": {
"description": "The first change's learning as it would be saved, one line.",
"title": "Text",
"type": "string"
}
},
"required": [
"changes",
"rev",
"text",
"scope",
"replaces_text",
"replaces_scope",
"saved_learning_id",
"moved_from_text",
"auto_rewrites",
"points",
"learn_state",
"learn_detail"
],
"title": "ProposalReadSchema",
"type": "object"
},
"ProposedChangeReadSchema": {
"description": "One change a feedback session makes: a learning, an instruction, the link or a fact.",
"properties": {
"find": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "An instruction edit's words it replaces.",
"title": "Find"
},
"history": {
"description": "How it read before later notes rewrote it, oldest first.",
"items": {
"$ref": "#/$defs/ChangeVersionReadSchema"
},
"title": "History",
"type": "array"
},
"id": {
"description": "Stable within its session: `c1`, `c2`...",
"title": "Id",
"type": "string"
},
"kind": {
"$ref": "#/$defs/ChangeKind",
"description": "`add` a learning, `update` (rewrite) one, `delete` one, or `keep` one that already says what a point asks (nothing is written); `instruction`: edit a step's or the reply's instruction (`find` becomes `replace_with`); `link`: the sequence's call-to-action link becomes `text`; `fact`: keep `question` and its answer `text` in the business Q&A."
},
"note": {
"description": "The note of the session (`thread[].number`) that last made or rewrote it; 0 for one made before notes were threaded.",
"title": "Note",
"type": "integer"
},
"off": {
"description": "A person left it out: the page's yes saves every change still on, never this one.",
"title": "Off",
"type": "boolean"
},
"outcome": {
"anyOf": [
{
"$ref": "#/$defs/ChangeOutcome"
},
{
"type": "null"
}
],
"description": "Null while it waits. Once saved: `applied`, `skipped_full` (its list was full) or `skipped_changed` (what it changes was edited meanwhile); an instruction, link or fact is `pending` until written, a moment after the save. Once undone: `undo_pending`, then `undone`, or `left` when it was changed since."
},
"points": {
"description": "The numbers of the points it learns (`points`).",
"items": {
"type": "integer"
},
"title": "Points",
"type": "array"
},
"question": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "A fact's question.",
"title": "Question"
},
"replace_with": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "What an instruction edit puts in their place; empty removes them.",
"title": "Replace With"
},
"replaces_scope": {
"anyOf": [
{
"$ref": "#/$defs/ProposedScope"
},
{
"type": "null"
}
],
"description": "Whose learning it rewrites: this sequence's, or every sequence's."
},
"replaces_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The saved learning it rewrites or deletes, as it read when proposed; null for an add.",
"title": "Replaces Text"
},
"saved_learning_id": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"description": "The learning it saved, once applied; null for a delete or while it waits.",
"title": "Saved Learning Id"
},
"scope": {
"$ref": "#/$defs/ProposedScope",
"description": "`sequence`: this sequence only. `account`: every sequence's writer. For a delete, whose learning goes."
},
"step_label": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "An instruction edit's step, e.g. \"Step 2 · Follow up\", or \"Replies\"; for an add or an update, the one step the learning holds for, null for every message.",
"title": "Step Label"
},
"text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "The learning as it would read; a link change's new link; a fact's answer. Null for a delete, a keep or an instruction edit.",
"title": "Text"
},
"words": {
"description": "How many words its learning has (a learning aims at 5 to 10); 0 for a change with no learning.",
"title": "Words",
"type": "integer"
}
},
"required": [
"id",
"kind",
"text",
"step_label",
"find",
"replace_with",
"question",
"scope",
"replaces_text",
"replaces_scope",
"outcome",
"saved_learning_id",
"points",
"note",
"off",
"history",
"words"
],
"title": "ProposedChangeReadSchema",
"type": "object"
},
"ProposedScope": {
"description": "Which writers a proposed learning reaches once saved.",
"enum": [
"sequence",
"account"
],
"title": "ProposedScope",
"type": "string"
},
"RedoReadSchema": {
"description": "How the redo a thumbs down asked for went.",
"properties": {
"detail": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Why it was refused, as the screen shows it.",
"title": "Detail"
},
"state": {
"$ref": "#/$defs/RedoState",
"description": "`none` where nothing is redone (a sent message), `started` while it runs, `written` once the new output is there, `refused` when it could not run."
}
},
"required": [
"state",
"detail"
],
"title": "RedoReadSchema",
"type": "object"
},
"RedoState": {
"description": "How the redo a thumbs down asked for went.",
"enum": [
"none",
"started",
"written",
"refused"
],
"title": "RedoState",
"type": "string"
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/getoneprofile-ai-thumbs-down-read-schema"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.