GET/api/v1/views/people/{reference}

Person screen

The approved contract does not provide a longer purpose statement for this operation.

App
People & Companies
Contract
People & Companies API 1.5.0
Lifecycle
preview
Runtime
restricted
Operation ID
getViewsPeopleByReference
Canonical origin
https://directory.runonvision.com

Purpose and use cases

Person screen

The owning App is Vision People & Companies. Directory owns these facts, its workspace authorization, and its change feed. Apps store a record's id and keep their own data; app-specific fields go in namespaced extensions.

Business use cases and out-of-scope behavior are not yet declared in the approved OpenAPI description.

Request

GET https://directory.runonvision.com/api/v1/views/people/{reference}

Authentication and authorization

Send a Vision-issued bearer token for the exact App audience. The token must include the directory entitlement and satisfy the directory workspace required binding.

  • Required scope: directory:people:read

Human roles are not declared in OpenAPI. Record-level and business permission checks remain the owning App's authority.

Headers

  • Authorization: Bearer <access-token> — required.
  • Accept: application/json — recommended where a JSON response is declared.

Undeclared tracing, idempotency, conditional-request, and version headers are not assumed on this page.

Path and query parameters

NameLocationTypeRulesDescription
referencepathstring · uuidrequiredNot described in the contract.

Request body

This operation declares no request body.

Runnable examples

cURL
curl 'https://directory.runonvision.com/api/v1/views/people/${REFERENCE}' \
  --request GET \
  --header 'authorization: Bearer ${ACCESS_TOKEN}' \
  --header 'accept: application/json'
JavaScript (server-side)
const response = await fetch('https://directory.runonvision.com/api/v1/views/people/${REFERENCE}', {
  method: 'GET',
  headers: {
    authorization: `Bearer ${ACCESS_TOKEN}`,
    accept: 'application/json',
  },
}

if (!response.ok) throw new Error(`Vision API ${response.status}`)
const result = await response.json()
Python 3 standard library
import json
import urllib.parse
import urllib.request

request = urllib.request.Request(
    'https://directory.runonvision.com/api/v1/views/people/${REFERENCE}',
    data=None,
    headers={
    "Accept": "application/json",
    "Authorization": "Bearer <ACCESS_TOKEN>"
},
    method='GET',
)
with urllib.request.urlopen(request, timeout=30) as response:
    result = json.load(response)

The current TypeScript reference client covers Platform token exchange and core reads. No native SDK helper is declared for this operation; use the HTTP contract directly and follow the SDK guidance.

Responses

StatusMeaningSchema
200OKobject
400Some details are missing or not validobject
401No credential, or not a valid oneobject
403Not allowed (also returned for an unknown workspace)object
500An unexpected defect (code internal_error); not retryable, report the requestIdobject
503The database is temporarily unavailable (code dependency_unavailable); retry with backoffobject

Success response schema

FieldTypeRulesDescription
itemobjectoptionalNot described in the contract.
item.schemaVersion"vision-directory-person.v1"optionalNot described in the contract.
item.displayNamestringoptionalNot described in the contract.
item.givenNamestring | nulloptionalNot described in the contract.
item.familyNamestring | nulloptionalNot described in the contract.
item.idstring · uuidoptionalThe id other apps store to reference this record.
item.isSamplebooleanoptionalTrue for sample data Core added to a new business; it goes when the owner removes sample data.
item.notesstring | nulloptionalNot described in the contract.
item.preferredChannelemail | phone | sms | post | nulloptionalNot described in the contract.
item.preferredLanguagestring | nulloptionalNot described in the contract.
item.doNotContactbooleanoptionalNot described in the contract.
item.primaryEmailstring | nulloptionalNot described in the contract.
item.primaryPhonestring | nulloptionalNot described in the contract.
item.emailsarrayoptional; maximum items 50Not described in the contract.
item.phonesarrayoptional; maximum items 50Not described in the contract.
item.socialLinksarrayoptional; maximum items 50Not described in the contract.
item.addressesarrayoptional; maximum items 50Not described in the contract.
item.affiliationsarrayoptionalCurrent roles first; at most 100 (see affiliationsTotal).
item.affiliationsTotalintegeroptionalAll roles, including any not listed.
item.includesSamplebooleanoptionalTrue when affiliationsTotal counted a role that is sample data.
item.consentsarrayoptionalNot described in the contract.
item.extensionsobjectoptionalKeyed by app id, then field key.
item.recordVersionintegeroptional; minimum 1Not described in the contract.
item.createdAtstring · date-timeoptionalNot described in the contract.
item.updatedAtstring · date-timeoptionalNot described in the contract.
item.deletedAtstring | null · date-timeoptionalNot described in the contract.
200 illustrative response
{
  "item": {
    "schemaVersion": "vision-directory-person.v1",
    "displayName": "<displayName>",
    "givenName": "<givenName>",
    "familyName": "<familyName>",
    "id": "00000000-0000-4000-8000-000000000001",
    "isSample": true,
    "notes": "<notes>",
    "preferredChannel": "email",
    "preferredLanguage": "<preferredLanguage>",
    "doNotContact": true,
    "primaryEmail": "<primaryEmail>",
    "primaryPhone": "<primaryPhone>",
    "emails": [
      {
        "id": "00000000-0000-4000-8000-000000000001",
        "label": "<label>",
        "value": "<value>",
        "rawValue": "<rawValue>",
        "isPrimary": true
      }
    ],
    "phones": [
      {
        "id": "00000000-0000-4000-8000-000000000001",
        "label": "<label>",
        "value": "<value>",
        "e164": "<e164>",
        "rawValue": "<rawValue>",
        "isPrimary": true
      }
    ],
    "socialLinks": [
      {
        "id": "00000000-0000-4000-8000-000000000001",
        "network": "<network>",
        "url": "<url>"
      }
    ],
    "addresses": [
      {
        "id": "00000000-0000-4000-8000-000000000001",
        "label": "<label>",
        "line1": "<line1>",
        "line2": "<line2>",
        "city": "<city>",
        "region": "<region>",
        "postalCode": "<postalCode>",
        "countryCode": "<countryCode>",
        "country": "<country>",
        "isPrimary": true,
        "formatted": "<formatted>"
      }
    ],
    "affiliations": [
      {
        "id": "00000000-0000-4000-8000-000000000001",
        "personId": "00000000-0000-4000-8000-000000000001",
        "personName": "<personName>",
        "companyId": "00000000-0000-4000-8000-000000000001",
        "companyName": "<companyName>",
        "role": "<role>",
        "startedOn": "2026-08-21",
        "endedOn": "2026-08-21",
        "current": true,
        "isSample": true
      }
    ],
    "affiliationsTotal": 1,
    "includesSample": true,
    "consents": [
      {
        "channel": "<channel>",
        "purpose": "<purpose>",
        "status": "granted",
        "source": "<source>",
        "recordedAt": "2026-08-21T18:00:00Z"
      }
    ],
    "extensions": {},
    "recordVersion": 1,
    "createdAt": "2026-08-21T18:00:00Z",
    "updatedAt": "2026-08-21T18:00:00Z",
    "deletedAt": "2026-08-21T18:00:00Z"
  }
}

Errors and troubleshooting

Error bodies and codes are shown only where the approved contract declares them. Use status, the declared error schema, and any correlation identifier returned by the App; do not infer that two Apps share one envelope.

  • 400 — Some details are missing or not valid
  • 401 — No credential, or not a valid one
  • 403 — Not allowed (also returned for an unknown workspace)
  • 500 — An unexpected defect (code internal_error); not retryable, report the requestId
  • 503 — The database is temporarily unavailable (code dependency_unavailable); retry with backoff

Collection behavior

Pagination: not declared. Filtering/search: not declared. Sorting: not declared.

Cursor lifetime, cursor binding, stable ordering, maximum traversal, and unknown-filter behavior are not assumed unless stated by a parameter description or schema constraint above.

Operational behavior

  • Rate limit: No operation-specific limit or 429 response is declared.
  • Retry: Retry only when the documented error model or response headers authorize it. Timeout and backoff values are not declared by this operation.
  • Idempotency: No idempotency header or replay window is declared.
  • Concurrency: No ETag, If-Match, or optimistic-version header is declared.

Security and privacy

  • Keep client credentials and bearer tokens on trusted servers.
  • Send only to the exact approved HTTPS origin and audience.
  • Treat response data according to the owning App's classification and retention policy; the OpenAPI contract does not itself grant data access.
  • Do not log credentials, tokens, complete private payloads, or secrets.

Edge cases and known documentation gaps

  • No detailed operation description.
  • One or more parameters have no field-level description.
  • Business roles, timeout, retry budget, rate value, idempotency window, and concurrency behavior are absent unless explicitly stated above.

Contract history and evidence