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.
email 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
View JSON Schema on GitHub

JSON Schema

getoneprofile-ai-account-person-read-schema-schema.json Raw ↑
{
  "$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.
All 92 tools →

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.