Oneprofile · Schema
AccountPersonReadSchema
One person at the account, once however many rows name them.
Sales OutreachAI ResearchEmail AutomationLinkedIn OutreachCRM Integration
Properties
| Name | Type | Description |
|---|---|---|
| data_at | string | How old what is shown is: when their title last changed. |
| department | object | The department their title names, read off its words; null if none. |
| object | ||
| email_status | object | What is known of their address: the verdict of the Verify email column over it, or `bounced`; null when nothing checked it. |
| enrolments | array | |
| id | string | The person's id: what a URL or an edit names them by. |
| key | string | The person's key: their LinkedIn profile, else their address. |
| last_contacted_at | object | |
| linkedin_url | object | |
| matched_on | object | What put them on this account: their company's website, its LinkedIn page, or their work address. |
| name | object | |
| namesake_count | integer | How many others at the account go by the same name, all of them. |
| namesakes | array | The others at the account going by the same name, likely the same first, at most 10; their address or profile tells them apart. |
| replied_at | object | |
| role | object | The part a rep says they play in a deal, set on the org chart. |
| seniority | object | How senior their title says they are, read off its words; null with no title. `other` is a title with no rank word. |
| sources | array | |
| title | object |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/getoneprofile-ai/json-schema/getoneprofile-ai-account-person-read-schema-schema.json",
"title": "AccountPersonReadSchema",
"description": "One person at the account, once however many rows name them.",
"x-generated": "2026-11-10",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/getoneprofile-ai-accounts-api-openapi.yml#/components/schemas/AccountPersonReadSchema",
"properties": {
"data_at": {
"description": "How old what is shown is: when their title last changed.",
"format": "date-time",
"title": "Data At",
"type": "string"
},
"department": {
"anyOf": [
{
"$ref": "#/$defs/AccountDepartment"
},
{
"type": "null"
}
],
"description": "The department their title names, read off its words; null if none."
},
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Email"
},
"email_status": {
"anyOf": [
{
"$ref": "#/$defs/AccountEmailStatus"
},
{
"type": "null"
}
],
"description": "What is known of their address: the verdict of the Verify email column over it, or `bounced`; null when nothing checked it."
},
"enrolments": {
"items": {
"$ref": "#/$defs/AccountPersonEnrolmentReadSchema"
},
"title": "Enrolments",
"type": "array"
},
"id": {
"description": "The person's id: what a URL or an edit names them by.",
"format": "uuid",
"title": "Id",
"type": "string"
},
"key": {
"description": "The person's key: their LinkedIn profile, else their address.",
"title": "Key",
"type": "string"
},
"last_contacted_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Last Contacted At"
},
"linkedin_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Linkedin Url"
},
"matched_on": {
"$ref": "#/$defs/AccountKeyKind",
"description": "What put them on this account: their company's website, its LinkedIn page, or their work address."
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Name"
},
"namesake_count": {
"description": "How many others at the account go by the same name, all of them.",
"title": "Namesake Count",
"type": "integer"
},
"namesakes": {
"description": "The others at the account going by the same name, likely the same first, at most 10; their address or profile tells them apart.",
"items": {
"$ref": "#/$defs/AccountNamesakeReadSchema"
},
"title": "Namesakes",
"type": "array"
},
"replied_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Replied At"
},
"role": {
"anyOf": [
{
"$ref": "#/$defs/AccountPersonRole"
},
{
"type": "null"
}
],
"description": "The part a rep says they play in a deal, set on the org chart."
},
"seniority": {
"anyOf": [
{
"$ref": "#/$defs/AccountSeniority"
},
{
"type": "null"
}
],
"description": "How senior their title says they are, read off its words; null with no title. `other` is a title with no rank word."
},
"sources": {
"items": {
"$ref": "#/$defs/AccountPersonSourceReadSchema"
},
"title": "Sources",
"type": "array"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Title"
}
},
"required": [
"id",
"key",
"name",
"title",
"email",
"linkedin_url",
"matched_on",
"data_at",
"last_contacted_at",
"replied_at",
"sources",
"enrolments",
"seniority",
"department",
"email_status",
"role",
"namesakes",
"namesake_count"
],
"type": "object",
"$defs": {
"AccountDepartment": {
"description": "The part of a company a person's title names (review AC-12). None: it names none.\n\nRead off the title's words by a fixed rule (``org_chart.title_department``).",
"enum": [
"sales",
"marketing",
"customer_success",
"product",
"design",
"engineering",
"data",
"it",
"security",
"finance",
"people",
"operations",
"legal"
],
"title": "AccountDepartment",
"type": "string"
},
"AccountEmailStatus": {
"description": "What is known of a person's address (review AC-12). None: nothing checked it.\n\nThe verdict of the Verify email column over the address on their row, the\nwords that column writes; BOUNCED when an email to them bounced, whatever\na check said.",
"enum": [
"valid",
"catch_all",
"risky",
"unknown",
"invalid",
"disposable",
"bounced"
],
"title": "AccountEmailStatus",
"type": "string"
},
"AccountKeyKind": {
"description": "Which value of a row named its account.",
"enum": [
"website",
"company_page",
"email_domain"
],
"title": "AccountKeyKind",
"type": "string"
},
"AccountNamesake": {
"description": "What another person at the account going by the same name is to someone (review AC-19).\n\nNames match as their words, case, accents and punctuation gone. LIKELY_SAME:\na full name (two words or more, none a lone letter) and nothing tells them\napart (at most one of them has a LinkedIn profile), so they are likely one\nperson found twice, as a merge leaves them. SAME_NAME: each has a LinkedIn\nprofile of their own, so they are two people, or the name is short of a\nfull one, which says too little. A placeholder (\"LinkedIn Member\") is no\nname, and names no namesakes.",
"enum": [
"likely_same",
"same_name"
],
"title": "AccountNamesake",
"type": "string"
},
"AccountNamesakeReadSchema": {
"description": "Another person at the account going by the same name (review AC-19).",
"properties": {
"email": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Email"
},
"id": {
"description": "Their person id.",
"format": "uuid",
"title": "Id",
"type": "string"
},
"kind": {
"$ref": "#/$defs/AccountNamesake",
"description": "`likely_same`: nothing tells the two apart, so they are likely one person found twice (a merge often leaves them). `same_name`: each has a LinkedIn profile of their own, or the name is short of a full one (one word, or a lone letter)."
},
"linkedin_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Linkedin Url"
}
},
"required": [
"id",
"email",
"linkedin_url",
"kind"
],
"title": "AccountNamesakeReadSchema",
"type": "object"
},
"AccountPersonEnrolmentReadSchema": {
"properties": {
"bounced": {
"description": "Whether an email to the person bounced.",
"title": "Bounced",
"type": "boolean"
},
"enrolment_id": {
"format": "uuid",
"title": "Enrolment Id",
"type": "string"
},
"failure_code": {
"anyOf": [
{
"$ref": "#/$defs/EnrolmentFailureCode"
},
{
"type": "null"
}
],
"description": "What failed, on a failed enrolment only."
},
"last_sent_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Last Sent At"
},
"replied_at": {
"anyOf": [
{
"format": "date-time",
"type": "string"
},
{
"type": "null"
}
],
"title": "Replied At"
},
"sequence_id": {
"format": "uuid",
"title": "Sequence Id",
"type": "string"
},
"sequence_name": {
"title": "Sequence Name",
"type": "string"
},
"status": {
"$ref": "#/$defs/EnrolmentStatus"
},
"stop_reason": {
"anyOf": [
{
"$ref": "#/$defs/StopReason"
},
{
"type": "null"
}
],
"description": "Why a stopped enrolment stopped, such as a reply; null otherwise."
}
},
"required": [
"enrolment_id",
"sequence_id",
"sequence_name",
"status",
"last_sent_at",
"replied_at",
"stop_reason",
"bounced",
"failure_code"
],
"title": "AccountPersonEnrolmentReadSchema",
"type": "object"
},
"AccountPersonRole": {
"description": "The part a rep says a person plays in a deal. None: not known.",
"enum": [
"champion",
"budget_holder",
"decision_maker",
"influencer",
"user",
"blocker"
],
"title": "AccountPersonRole",
"type": "string"
},
"AccountPersonSourceReadSchema": {
"properties": {
"record_id": {
"format": "uuid",
"title": "Record Id",
"type": "string"
},
"table_id": {
"format": "uuid",
"title": "Table Id",
"type": "string"
},
"table_name": {
"title": "Table Name",
"type": "string"
}
},
"required": [
"table_id",
"table_name",
"record_id"
],
"title": "AccountPersonSourceReadSchema",
"type": "object"
},
"AccountSeniority": {
"description": "How senior a person's title says they are (review AC-12). None: no title.\n\nRead off the title's words by a fixed rule (``org_chart.title_seniority``):\na title with no rank word in it is OTHER, never guessed at.",
"enum": [
"executive",
"vp",
"head",
"director",
"manager",
"senior",
"other"
],
"title": "AccountSeniority",
"type": "string"
},
"EnrolmentFailureCode": {
"description": "Which kind of failure stopped a FAILED contact, where the product treats one differently.\n\nStored beside ``failure_reason`` and cleared with it. Most failures carry\nno code: Retry runs the step that broke again. ``CONNECTED_BEFORE_WITHDRAW``\nis a Withdraw that found the person already connected: there is nothing\nto withdraw and nothing to retry, so no Retry offers it.\n``INVITE_LOOK_UNREADABLE`` is the profile look a connection request queued\nto learn its answer, which could not read the relationship: Retry queues\na fresh look rather than sending the request again. ``MISSING_VALUES`` is a\nBrowser use step the contact lacked a value for.",
"enum": [
"connected_before_withdraw",
"invite_look_unreadable",
"missing_values"
],
"title": "EnrolmentFailureCode",
"type": "string"
},
"EnrolmentStatus": {
"description": "Where one contact stands in one sequence.\n\nACTIVE rows carry a ``due_at`` and are what the tick claims; CLAIMED is the\nin-flight guard between claim and outcome. PAUSED is a deliberate\nper-contact hold: unclaimable because the tick claims strictly on ACTIVE,\nyet still LIVE. It keeps its step and its one-live-sequence slot, and a\ncompliance stop (reply, unsubscribe) reaches it. Everything else is\nsettled: COMPLETED walked off the end; STOPPED was halted (reply,\nunsubscribe, bounce, manual, company pause); FAILED is terminal;\nSUPPRESSED was on the do-not-contact list;\nSKIPPED_DUPLICATE lost the one-live-sequence-per-contact rule, with the\nreason visible in the grid.\n\nA contact the workspace's recontact rule refuses is STOPPED with\n``StopReason.COOLDOWN``. There is deliberately no held state: a cooldown\nsettles a contact rather than parking them, so nothing here waits on a date\nand nothing lets itself out later.\n\nAWAITING_ACTION is a contact parked behind a task that needs a\nperson or a channel, modelled on PAUSED: live, keeps its step and its\none-live-sequence slot, unclaimable because the tick claims strictly on\nACTIVE, and a compliance stop reaches it. Unlike PAUSED nobody wakes it by\nhand: only the outreach-task sweep does, once the task it waits on is\ndecided or delivered. Deliberately not \"awaiting approval\": an AUTO-mode\nLinkedIn park is waiting for a browser rather than for anyone's approval,\nand this value is the word the Contacts tab shows for both.\n\nPENDING is a draft's roster: in, standing on a step, and NOT live. Binding\nan audience enrols on the spot so the Contacts tab can show who is in, but\na sequence nobody has launched must not hold anybody's one-live-sequence\nslot, or a second sequence written for the same people skips them all.\n``uq_sequence_enrolment_one_live`` leaves PENDING out, the tick never\nclaims it, and launch turns each row ACTIVE, settling the ones another\nsequence took meanwhile as SKIPPED_DUPLICATE.",
"enum": [
"pending",
"active",
"claimed",
"paused",
"awaiting_action",
"completed",
"stopped",
"failed",
"suppressed",
"skipped_duplicate"
],
"title": "EnrolmentStatus",
"type": "string"
},
"StopReason": {
"enum": [
"reply",
"unsubscribe",
"do_not_contact",
"bounce",
"manual",
"company_reply",
"row_left_audience",
"row_left_paused",
"step_removed",
"removed",
"cooldown",
"rejected",
"mailbox_removed",
"unread_reply",
"declined",
"trashed",
"trashed_paused"
],
"title": "StopReason",
"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-account-person-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.